Features · API
Invoicing REST API: connect FacturAda to your ERP
FacturAda includes a REST API with 12 resources, an OpenAPI specification and x-api-key authentication bound to one company. From your ERP or website you create VeriFactu invoices, record payments, download PDF and Facturae and email documents.
The 12 API resources
| Resource | Methods and routes | Notes |
|---|---|---|
| Invoices | GET POST /invoices · POST /invoices/{id}/payments | Server-side numbering, payments, PDF, Facturae, send and reminder |
| Corrective invoices | GET /rectified-invoices | Read only |
| Recurring invoices | GET POST /recurring-invoices · GET PUT DELETE /recurring-invoices/{id} | Templates |
| Quotes | GET POST /quotes · PUT DELETE /quotes/{id} | With PDF and send |
| Delivery notes | GET POST /work-receipts · PUT DELETE /work-receipts/{id} | With PDF and send |
| Customers | GET POST /clients · GET PUT DELETE /clients/{id} | Tax details |
| Products | GET POST /products · PUT DELETE /products/{id} | Catalogue |
| Categories | GET POST /categories · PUT DELETE /categories/{id} | Products and expenses |
| Expenses | GET /incoming-invoices · GET /incoming-invoices/{id} | Read only, paginated |
| Payment methods | GET /payment-types | Read only |
| Invoice types (series) | GET /invoice-types | Read only |
| Specification | GET /openapi.json | Public OpenAPI; Swagger UI at /api/docs |
https://<your-installation>/api/v1. Downloads: GET /invoices/{id}/pdf, /e-invoice, /e-invoice/signed, /quotes/{id}/pdf, /work-receipts/{id}/pdf. Sending: POST /invoices/{id}/send, /payment-reminder, /quotes/{id}/send, /work-receipts/{id}/send.Example: create an invoice
curl -X POST https://<your-installation>/api/v1/invoices \
-H "x-api-key: fact_..." \
-H "Content-Type: application/json" \
-d '{
"invoiceTypeId": "6776bee93d35433d0474af58",
"clientId": "6858fd4f32164028541d8d95",
"date": "2026-11-03",
"expiryDate": "2026-12-03",
"retentionPercentage": 15,
"retentionType": "professional",
"products": [
{ "name": "Consulting", "taxBase": 1500, "taxPercentage": 21, "quantity": 2, "unitType": "hours" }
]
}'The response is 201 with the server-assigned number (PREFIX-YYYY-N), status: "pending" and the VeriFactu qrUrl. number, status, hash and qrUrl are rejected if sent.
API rules
| Rule | Detail |
|---|---|
| Authentication | x-api-key header; keys stored hashed (scrypt) and bound to one company |
| Immutable invoices | No PUT or DELETE on invoices: corrections use corrective invoices |
| Numbering | Assigned by the server, sequential per series and year |
| Send limit | 60 per hour per key on the 4 send and reminder endpoints |
| Errors | 401 without a valid key; 409 if a payment exceeds the pending amount |
Frequently asked questions
Where is the API documentation?
Each installation serves its OpenAPI spec at /api/v1/openapi.json and Swagger UI at /api/docs.
Can I edit or delete an invoice via API?
No. Invoices are immutable by design, as VeriFactu requires. Corrections use corrective invoices.
Are there webhooks?
No. Query GET /invoices with its filters to check invoice status.
Let us review your integration
In the demo we look at what your ERP sends and how it lands in FacturAda.