API pricing & limits
What the API costs, which tier each plan grants, and the per-tier caps on requests, API keys and webhook endpoints.
The public API and the MCP server are included in every paid Factuarea
plan. There is no add-on to buy and no access request: create a key from
Dashboard → Developers → API Keys
and start calling /v1.
Capacity is part of the plan as well: there is no separately purchasable Developer API tier or boost. Changing plan changes the effective tier for all existing keys automatically.
Tiers
| Tier | Per minute | Per month | Active API keys | Webhook endpoints |
|---|---|---|---|---|
| Free | 10 rpm | 100 | 1 | 0 |
| Starter | 30 rpm | 5,000 | 3 | 1 |
| Pro | 300 rpm | 50,000 | 25 | 10 |
| Scale | 1,200 rpm | 5,000,000 | 100 | 50 |
Figures verified against the backend tier configuration on 2026-08-27.
For how the quotas behave — sliding window, X-RateLimit-* headers, the
company/managed-portfolio aggregate axes, 429 codes and the back-off strategy
— see Rate limits.
What your plan already grants
| Your plan | Tier granted at no extra cost |
|---|---|
| Trial (no active subscription yet) | Free |
| Emprendedor | Starter |
| Empresario | Pro |
| Enterprise | Scale |
The tier follows the plan on its own: it is not chosen per key or per
request, and it changes as soon as your plan does. A historical
grandfathered_addon migration may preserve a higher tier while an eligible
plan remains active; legacy boosts that were not migrated are inert.
Caps that are not requests
Two limits are counted per company rather than per request.
Active API keys
A key counts while it is neither revoked nor expired; revoking one frees a
slot immediately. Creating one past the cap responds 422 with
code: max_api_keys_exceeded, naming the tier and the cap. To get past it,
revoke a key you no longer use or move to a plan with a higher tier.
Webhook endpoints
An endpoint counts while it is live (active or degraded); a disabled or
deleted endpoint does not. Creating one past the cap responds 422 with
code: business_rule_violation and subcode: max_webhook_endpoints_reached.
On the Free tier the cap is 0, so the first endpoint already fails —
with 402 addon_required instead of the 422 above, because there is
nothing to free up. Webhooks need a plan that grants Starter or higher.
Test mode is not a cheaper tier
A fact_test_ key carries the same tier as your live keys, so the same
per-key minute and monthly quotas apply to sandbox traffic. The aggregate
company and managed-portfolio axes bypass sandbox companies: test traffic does
not consume the live company's aggregate capacity.
What the sandbox removes is the real-world effect, not the quota: VeriFactu records are created locally and never transmitted to the AEAT, document emails are not delivered to real recipients, and events are recorded but not delivered to your endpoints. See Test mode & sandbox for the full list.
One cap does behave differently: test keys live in a separate sandbox company, so they count against that company's own key allowance instead of your live one.
High volume
Scale has no published price. Its included capacity is the numeric row above: up to 100 active keys and 50 webhook endpoints, not an unlimited tier. Write to info@factuarea.com from the email associated with your company in Factuarea, with the request volume you expect and the endpoints you will hit if you need an audited company-specific increase. Scale also carries a service-level agreement and a dedicated account manager.
Checking what you consume
Dashboard → Developers → Usage
shows your consumption against the current tier. Every API response also
carries the X-RateLimit-* headers, which is the cheapest way to spot that
you are approaching the limit before you hit it — see
Rate limits for how to read them.