API
Reliable invoicing inside your product.
REST over JSON, clear permissions and idempotency so a retry never creates another invoice.
- 10-day trial
- No card required
- Cancel anytime
Compatible integrations and formats

WhatsApp

POST /v1/invoices Authorization: Bearer fact_test_… Idempotency-Key: 0192…1d4b Factuarea-Version: 2026-06-01
201 Created Factuarea-Version: 2026-06-01 Idempotent-Replayed: false X-RateLimit-Remaining: 297
One request and what comes back. The response headers are the contract.
Idempotency
Every retry preserves a single invoice
Repeat the same POST without creating another invoice. The idempotency key returns the first response and protects fiscal numbering.
- The first response stays available for 24 hours.
- The same key with a different body is stopped with a 409.
- 158 of the 413 operations accept it: the ones that create, change or delete something. One UUID v7 per business attempt is enough.
POST /v1/invoices
Idempotency-Key: 0192…1d4b
Without the header
- 201 CreatedF-2026-0184
With the header
- 201 CreatedF-2026-0184
Rate limits
How many requests fit
The API and MCP server are included in every paid plan, with no per-call fee. Each plan includes per-minute and monthly capacity, which you can raise with a boost without changing plans.
Trial10 days, no webhooks
10per minute
100 per month · 1 keys · 0 webhooks
Emprendedor
30per minute
5.000 per month · 3 keys · 1 webhooks
Empresario
300per minute
50.000 per month · 25 keys · 10 webhooks
Enterprise
Custom
Capacity, keys and webhooks sized to the agreed volume.
The counter comes back on every response
X-RateLimit-Limit: 300 X-RateLimit-Remaining: 297 X-RateLimit-Reset: 1789381860
429 Too Many Requests Retry-After: 12
And on a 429, Retry-After with the seconds to wait. Wait them out. For 5xx, retry with a growing delay and a bit of randomness, so nobody comes back all at once.
The minute slides: it counts the last 60 seconds, not the minute on the clock. That removes the burst that sneaks through right as the minute rolls over.
Versioning
What may appear and what will not move
Versions are dates. Pin one per request with a header, or once when you create the key; send none and the key's version applies, falling back to the latest. Omitting it is never an error.
What you send
POST /v1/invoices Factuarea-Version: 2026-06-01
What comes back
201 Created Factuarea-Version: 2026-06-01
The effective version comes back on every response, so you always know which one you are talking to.
May appear without warning
- A new field in a response
- A new optional parameter
- A new endpoint
- A clearer error message
Does not happen inside /v1
- Removing or renaming a field
- Changing the type of a field
- Changing the status code of a response
- Making an optional field required
- 12 months
- of /v1 and /v2 coexisting the day the second one arrives
- 12 months
- minimum before an endpoint marked deprecated is withdrawn
- 24 months
- of guaranteed life for whatever you integrate against /v1 today
One detail that saves a scare: error.type is versioned and error.code is not. If you want to branch on something that does not move with the version, branch on code.
Published surface
An integration that fits your stack
The OpenAPI contract, SDKs and MCP server share the same API. These figures are checked against the published surface so you can assess scope and maintenance before integrating.
- API operations
- 413
- resources
- 37
- MCP tools
- 391
- documentation pages
- 797
Compatible technologies and clients
TypeScript
PHP
OpenAPI
Stripe
Logos identify compatible technologies or clients; they do not imply a commercial relationship or endorsement.
Questions
What people ask when evaluating the API
The API and the MCP server are included in every paid plan; there is no add-on to buy and no per-call charge. The trial lasts 10 days and allows 10 requests per minute and 100 per month, but no webhooks at all: its cap is zero.
The first call takes five minutes
A test key, a POST and a registered invoice. No card, no sales call.