Skip to main content
This guide takes you end to end: get an API key, make sure your customer and items exist, create an invoice with 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 Draft — it is stored and validated, but not yet sent anywhere:
If the request fails, you’ll get a JSON error body and a status code — see Errors.
5

Submit it for Peppol delivery

Optionally preflight with POST /invoices/{id}/validate (runs the PINT-AE schematron without sending), then submit:
Submission is asynchronous: the call returns 202 with status: "Pending". Poll GET /invoices/{id} until the status settles:
Every POST must include an Idempotency-Key header. Without it the request is rejected with 400. Reuse the same key when you retry so a duplicate is never created — see Idempotency.