Developer documentation
XRechnung API
REST API to generate XRechnung and ZUGFeRD programmatically, validate against EN 16931 and send over Peppol — hosted in Germany, GDPR-compliant.
Overview
The Invocore API turns simple JSON into fully compliant e-invoices. You send the invoice data, we generate valid XRechnung XML (UBL 2.1 or UN/CEFACT CII) or a ZUGFeRD hybrid PDF, validate it against EN 16931, and can deliver it over Peppol.
- JSON in, XRechnung XML / ZUGFeRD PDF / FatturaPA / EDIFACT out
- Validation against EN 16931 including national profiles (XRechnung CIUS)
- Peppol network delivery and DATEV export included
- Webhooks for invoice.created / sent / paid / overdue (HMAC-SHA256)
Authentication
Every endpoint is protected by a Bearer token (JWT). Generate the token in your account settings and pass it in the Authorization header.
Base URL
https://api.invocore.eu/api/v1
Rate limit
1,000 requests / hour
Formats
JSON (input) · XML UBL/CII, PDF (output)
Core endpoints
| POST | /invoices | Create an EN 16931 invoice |
| GET | /invoices/{id}/xml | Download XRechnung XML (UBL/CII) |
| GET | /invoices/{id}/pdf | Download ZUGFeRD hybrid PDF |
| POST | /invoices/{id}/validate | Validate invoice against EN 16931 |
| POST | /peppol/send/{invoice_id} | Send invoice over Peppol |
| GET | /peppol/status/{message_id} | Query Peppol delivery status |
1. Create an invoice
curl -X POST https://api.invocore.eu/api/v1/invoices \
-H "Authorization: Bearer $INVOCORE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"currency": "EUR",
"issue_date": "2026-06-05",
"due_date": "2026-07-05",
"buyer": {
"name": "Mustermann GmbH",
"vat_id": "DE123456789",
"email": "rechnung@mustermann.de"
},
"lines": [
{ "description": "Beratung", "quantity": 10, "unit_price": "120.00", "vat_rate": 19 }
]
}'2. Fetch the XRechnung XML
# XRechnung-XML (UBL 2.1) der erstellten Rechnung abrufen
curl https://api.invocore.eu/api/v1/invoices/$INVOICE_ID/xml \
-H "Authorization: Bearer $INVOCORE_TOKEN" \
-o xrechnung.xml3. Validate (EN 16931)
# Gegen EN 16931 / XRechnung CIUS validieren
curl -X POST https://api.invocore.eu/api/v1/invoices/$INVOICE_ID/validate \
-H "Authorization: Bearer $INVOCORE_TOKEN"
# → { "valid": true, "errors": [], "warnings": [] }Official SDKs
Instead of raw HTTP calls you can use the typed SDKs:
Python
pip install invocore-sdkJavaScript / TypeScript
npm install @invocore/sdkFrequently asked questions
Is there an API to generate XRechnung invoices?
Yes — POST /invoices creates the invoice, GET /invoices/{id}/xml returns the generated XRechnung XML. Auth uses a Bearer token (JWT).
How do I validate against EN 16931?
Call POST /invoices/{id}/validate. You get a structured ValidationResult with errors and warnings.
Can I send over Peppol?
Yes, with POST /peppol/send/{invoice_id}; query the status via GET /peppol/status/{message_id}.