Quickstart: your first e-invoice in five minutes
You need curl, a free account and about five minutes. Everything here runs in the sandbox: test documents are valid XRechnung, marked as test, never billed and deleted after 30 days.
- Sign up at /registrieren and confirm your e-mail address.
- Create a seller in the portal under Sellers: the company that issues the invoices (name, address,
VAT ID, bank account). For the Peppol step below give it a Peppol address, e.g. scheme
9930with its VAT ID. - Create a test key in the portal under API keys: choose Test. It starts with
fkn_test_and is shown once.
export KEY=fkn_test_… # your test key
export BASE=https://fakturnaut.com/v1
SELLER=$(curl -s "$BASE/sellers?size=1" -H "Authorization: Bearer $KEY" | jq -r '.items[0].id')
- Validate an invoice (nothing is stored). The buyer below is a German public authority with a Leitweg-ID.
cat > invoice.json <<JSON
{"sellerId": "$SELLER", "number": "RE-2026-0001", "issueDate": "2026-10-19",
"buyerReference": "04011000-12345-34",
"buyer": {"name": "Stadt Beispiel", "electronicAddress": "04011000-12345-34", "electronicAddressScheme": "0204",
"address": {"street": "Rathausplatz 1", "city": "Köln", "postCode": "50667", "country": "DE"}},
"lines": [{"name": "Beratung", "quantity": 10, "unitCode": "HUR", "netPrice": 100.00, "vatRate": 19}]}
JSON
curl -s -X POST $BASE/invoices/validate -H "Authorization: Bearer $KEY" \
-H 'Content-Type: application/json' --data @invoice.json
# → {"valid": true, "totals": {"amountDue": 1190.00, …}, "findings": []}
- Issue it. The
Idempotency-Keymakes retries safe.
curl -s -X POST $BASE/invoices -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" --data @invoice.json
# → 201 {"id": "…", "documents": [{"format": "xrechnung-ubl", …}, {"format": "xrechnung-cii", …},
# {"format": "zugferd", …}]}
- Download the XRechnung and deliver it over Peppol (simulated in the sandbox):
curl -s -OJ "$BASE/invoices/<id>/document?format=xrechnung-ubl" -H "Authorization: Bearer $KEY"
curl -s -X POST $BASE/invoices/<id>/deliveries -H "Authorization: Bearer $KEY" \
-H 'Content-Type: application/json' -d '{"channel":"peppol","recipient":"0204:04011000-12345-34"}'
Done. Every endpoint is described in the API reference, which you can download as OpenAPI to generate a client; SDKs for TypeScript, PHP, Java and C# are being published. When you go live, create a live key and verify your seller.