Skip to content

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.

Book a demoUpdated on 03/11/2026

The 12 API resources

FacturAda API v1 resources, methods and routes
ResourceMethods and routesNotes
InvoicesGET POST /invoices · POST /invoices/{id}/paymentsServer-side numbering, payments, PDF, Facturae, send and reminder
Corrective invoicesGET /rectified-invoicesRead only
Recurring invoicesGET POST /recurring-invoices · GET PUT DELETE /recurring-invoices/{id}Templates
QuotesGET POST /quotes · PUT DELETE /quotes/{id}With PDF and send
Delivery notesGET POST /work-receipts · PUT DELETE /work-receipts/{id}With PDF and send
CustomersGET POST /clients · GET PUT DELETE /clients/{id}Tax details
ProductsGET POST /products · PUT DELETE /products/{id}Catalogue
CategoriesGET POST /categories · PUT DELETE /categories/{id}Products and expenses
ExpensesGET /incoming-invoices · GET /incoming-invoices/{id}Read only, paginated
Payment methodsGET /payment-typesRead only
Invoice types (series)GET /invoice-typesRead only
SpecificationGET /openapi.jsonPublic OpenAPI; Swagger UI at /api/docs
Base: 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

Create an invoice with 15% withholding
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

FacturAda API rules and limits
RuleDetail
Authenticationx-api-key header; keys stored hashed (scrypt) and bound to one company
Immutable invoicesNo PUT or DELETE on invoices: corrections use corrective invoices
NumberingAssigned by the server, sequential per series and year
Send limit60 per hour per key on the 4 send and reminder endpoints
Errors401 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.