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 | As per contract | As per contract | As per contract | As per contract |
Figures for Free, Starter and Pro measured in the backend tier configuration
source on 2026-10-01.
For how the quotas behave — sliding window, X-RateLimit-* headers, the
company and account-portfolio aggregate axes, 429 codes and the back-off
strategy — see Rate limits.
An account that holds two or more real tax IDs also has a portfolio: its requests are counted together, whichever tax ID they reach. The portfolio ceilings are flat per tier, so adding tax IDs does not raise them, and the per-minute and monthly ones only observe for now. What each additional tax ID costs is in Additional tax IDs.
What your plan already grants
| Your plan | Tier granted at no extra cost |
|---|---|
| Trial (no active subscription yet) | Free |
| Esencial | Starter |
| Profesional | Pro |
| Avanzado | 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.
The cap in the table is counted per tax ID. An account that holds two or more real
tax IDs also has a cap for the whole account, portfolio_max_api_keys: 1 in Free,
15 in Starter, 500 in Pro and 2,000 in Scale. It counts every key of the account
that is not revoked, test keys included, comes on top of the per-tax-ID cap and
responds 422 with code: portfolio_max_api_keys_exceeded. A single tax ID and
its sandbox only meet the per-tax-ID cap, and adding tax IDs does not raise the
account cap. See Rate limits.
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 account-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. Request capacity, active API keys and webhook endpoints are agreed in the Enterprise contract. 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.