POST /invoices, then submit it for Peppol
delivery.
1
Get an API key
Create a key under Settings → Integrations → API Keys and copy the
fat_… secret. See Authentication. Send it
in the X-Api-Key header on every request.2
Create a customer and items (if needed)
You can reference the buyer and items inline on the invoice, or create them
first as master data so they’re reusable. Each create is a
POST and must
carry an Idempotency-Key header:3
Create the invoice
POST /invoices with a V1CreateInvoiceRequest body. The example below shows
a tax invoice with one line, plus where the optional fields go —
references, delivery, allowancesCharges (document and line level),
line classifications, item identifiers, and payment details.invoice.json
documentType accepts Invoice, CreditNote, SelfBillingInvoice, or
SelfBillingCreditNote. A credit note also requires precedingInvoiceNumber
(the invoice it corrects). vatCategory accepts S (standard 5%), Z
(zero-rated), E (exempt), O (out of scope), or AE (reverse charge) — on
any line whose vatCategory is E, an exemptionReasonCode is required.4
Read the response
A successful create returns 201 with the document in status If the request fails, you’ll get a JSON error body and a status code — see
Errors.
Draft — it
is stored and validated, but not yet sent anywhere:5
Submit it for Peppol delivery
Optionally preflight with Submission is asynchronous: the call returns 202 with
POST /invoices/{id}/validate (runs the PINT-AE
schematron without sending), then submit:status: "Pending".
Poll GET /invoices/{id} until the status settles: