The e-invoice API for the 2026-2028 mandates
Three endpoints: generate validated EN 16931 XML from JSON, embed it into PDF/A-3 (Factur-X/ZUGFeRD), validate anything with rule-level reports. Built on the Mustang engine. 20 free credits β no card, no subscription.
- JSON β validated CII XML
- Factur-X PDF/A-3 output
- KOSIT + PEPPOL rule reports
- From β¬0.008/call
Quickstart
1. Get a key (20 free credits, no card):
curl -X POST https://einvoicewiz.com/v1/signup \
-H "Content-Type: application/json" -d '{"email":"you@company.com"}'
2. Generate a validated EN 16931 invoice XML from JSON:
curl -X POST https://einvoicewiz.com/v1/generate \
-H "X-API-Key: eiw_..." -H "Content-Type: application/json" -d '{
"invoice_number":"RE-2026-001","issue_date":"2026-07-12","currency":"EUR",
"seller":{"name":"Muster GmbH","line_one":"Beispielstr. 1","postcode":"10115",
"city":"Berlin","country":"DE","vat_id":"DE123456789"},
"buyer":{"name":"Kunde AG","line_one":"Weg 2","postcode":"60311","city":"Frankfurt","country":"DE"},
"lines":[{"name":"Consulting","qty":2,"unit":"hour","unit_price":100.0,"vat_rate":19}]
}'
3. Or make a full Factur-X / ZUGFeRD PDF/A-3 from your existing PDF:
curl -X POST https://einvoicewiz.com/v1/facturx -H "X-API-Key: eiw_..." \
-F "pdf=@invoice.pdf" -F 'invoice={...same JSON as above...}' -o factur-x.pdf
Endpoints
| Endpoint | What it does | Cost |
|---|---|---|
POST /v1/signup | {email} β API key with 20 free credits (shown once) | free |
GET /v1/me | credits remaining, calls used | free |
POST /v1/generate | invoice JSON β validated EN 16931 CII XML. ?profile=xrechnung for XRechnung 3.0 (needs buyer_reference + seller contact) | 1 credit |
POST /v1/facturx | multipart pdf + invoice JSON β Factur-X PDF/A-3 binary | 1 credit |
POST /v1/validate | raw PDF/XML body β EN 16931 + KOSIT + PDF/A report with rule IDs | 1 credit |
Failed validations are never charged β 422 responses include the exact business rules violated (BR-CO-15 etc.) so you can fix input programmatically. Totals in generated XML are always recomputed server-side from line items.
Invoice JSON reference
{
"doc_type": 380, // 380 invoice Β· 381 credit note Β· 384 correction
"invoice_number": "RE-1", // required
"issue_date": "2026-07-12", // required, ISO
"due_date": null, "delivery_date": null, // optional ISO (delivery defaults to issue)
"currency": "EUR", // required
"buyer_reference": null, // Leitweg-ID β required for XRechnung
"order_reference": null,
"seller": {"name","line_one","postcode","city","country","vat_id",
"tax_number","contact_email","contact_phone","email"}, // name+country required
"buyer": {"name","line_one","postcode","city","country","vat_id","email"},
"payment": {"iban","bic","terms"},
"notes": ["..."],
"prepaid": 0,
"exemption_reason": null, // for VAT categories E/AE/K/G/O
"lines": [{"name","description","qty","unit","unit_price","vat_rate","vat_category"}]
// unit: piece|hour|day|kg|litre|month|km|lump|m2|m
// vat_category: S|Z|E|AE|K|G|O (default S, or Z when rate=0)
}
Pricing
| Pack | Price | Per call |
|---|---|---|
| Free tier | β¬0 | 20 credits on signup |
| 500 credits | β¬9 | β¬0.018 |
| 2,500 credits | β¬29 | β¬0.0116 |
| 10,000 credits | β¬79 | β¬0.0079 |
Buy credits
Paste your API key, pick a pack, pay with PayPal β credits land on the key instantly.
Notes for integrators
Formats: ZUGFeRD 2.x / Factur-X 1.x (EN 16931 profile) and XRechnung 3.0 CII. Validation via the Mustang rule engine (EN 16931 BR/BR-CO, KOSIT BR-DE, PEPPOL, veraPDF-based PDF/A checks). EN 16931-1:2026 revision support is on the roadmap β breaking schema changes (CII D16BβD25A) will be versioned under /v2/ so /v1/ keeps working. Files are processed transiently and deleted immediately after the response; nothing is used for AI training (this pipeline is deterministic β no AI touches your data). GDPR DPA available on request: support@einvoicewiz.com.
Frequently asked questions
Why per-credit instead of a monthly plan?
Because compliance traffic is bursty: month-end spikes, migration batches, then silence. Credits never expire, so you pay for what you use.
What happens when EN 16931-1:2026 lands?
Breaking schema changes ship as /v2/ endpoints; /v1/ keeps producing the current schemas so your integration never breaks unannounced.
Do you store our invoices?
No. API uploads are deleted immediately after the response is sent. The generation pipeline is deterministic (no AI), so no data ever leaves the processing host.
Can we white-label this inside our SaaS?
Yes β that is exactly what the 10,000-credit pack is for. For higher volume or a custom DPA, e-mail support@einvoicewiz.com.