API-Schnellreferenz
Alle Ausgabeformate auf einen Blick
Die XInvoice API unterstützt vier Ausgabeformate für E-Rechnungen. Diese Seite enthält lauffähige Beispiele für jedes Format sowie den Polling-Ablauf für asynchrone Anfragen.
Nur eine Rechnung prüfen?
Nutze den Web-Validator für schnelle Browser-Tests mit XML oder ZUGFeRD-PDF.
Zum ValidatorE-Rechnungen automatisieren?
Nutze die API für wiederkehrende Validierung, Erzeugung und Abruf in deiner Software.
Zur EntwicklerseiteÜbersicht der Formate
Das Ausgabeformat wird über den Parameter `document_format` im JSON-Body gesteuert. Das optionale Feld `document_profile` ist nur für ZUGFeRD relevant.
- → xrechnung_ubl – XRechnung 3.x UBL 2.1 XML (Standard, reines XML)
- → xrechnung_cii – XRechnung 3.x CII D16B XML (reines XML, B2G-tauglich)
- → zugferd + EN16931 – ZUGFeRD 2.x EN16931 Hybrid-PDF (B2B, kein Profil angeben = Default)
- → zugferd + XRECHNUNG – ZUGFeRD 2.x mit XRECHNUNG 3.0 Profil (B2G, PDF + CII)
1. XRechnung UBL erzeugen (Standard)
Das Standard-Format. Reines UBL-XML, für Behörden und B2B. Wird asynchron verarbeitet – die Antwort enthält eine `invoice_id` zum Polling.
curl -X POST https://api.xinvoice.net/v1/invoices/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_format": "xrechnung_ubl",
"invoice_number": "RE-2026-001",
"issue_date": "2026-04-01",
"due_date": "2026-04-30",
"buyer_reference": "04011000-12345-03",
"currency": "EUR",
"seller": {
"name": "Muster GmbH",
"vat_id": "DE123456789",
"street": "Musterstraße 1",
"postal_code": "10115",
"city": "Berlin",
"country_code": "DE",
"email": "kontakt@muster.de"
},
"buyer": {
"name": "Kunde GmbH",
"street": "Hauptweg 5",
"postal_code": "20095",
"city": "Hamburg",
"country_code": "DE"
},
"items": [
{
"name": "Beratungsleistung April",
"quantity": 8,
"unit_code": "HUR",
"price": 150.00,
"tax_rate": 19
}
]
}'
2. XRechnung CII erzeugen (B2G-Alternative)
Identischer Payload wie UBL – nur `document_format` ändern. Das Ergebnis ist CII D16B XML mit XRECHNUNG 3.0 Profil. Wird von ZRE und OZG-RE akzeptiert.
curl -X POST https://api.xinvoice.net/v1/invoices/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_format": "xrechnung_cii",
"invoice_number": "RE-2026-002",
"issue_date": "2026-04-01",
"due_date": "2026-04-30",
"buyer_reference": "04011000-12345-03",
"currency": "EUR",
"seller": { "name": "Muster GmbH", "vat_id": "DE123456789",
"street": "Musterstraße 1", "postal_code": "10115",
"city": "Berlin", "country_code": "DE" },
"buyer": { "name": "Bundesbehörde", "street": "Behördenweg 1",
"postal_code": "10115", "city": "Berlin", "country_code": "DE" },
"items": [{ "name": "IT-Dienstleistung", "quantity": 8,
"unit_code": "HUR", "price": 150.00, "tax_rate": 19 }]
}'
3. ZUGFeRD EN16931 erzeugen (B2B)
Hybrid-PDF mit eingebettetem CII-XML, EN16931 (Comfort) Profil. Für B2B empfohlen, da die Rechnung als normales PDF lesbar und gleichzeitig maschinenverarbeitbar ist.
curl -X POST https://api.xinvoice.net/v1/invoices/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_format": "zugferd",
"invoice_number": "RE-2026-003",
"issue_date": "2026-04-01",
"due_date": "2026-04-30",
"currency": "EUR",
"seller": { "name": "Muster GmbH", "vat_id": "DE123456789",
"street": "Musterstraße 1", "postal_code": "10115",
"city": "Berlin", "country_code": "DE",
"email": "kontakt@muster.de" },
"buyer": { "name": "Kunde GmbH", "street": "Hauptweg 5",
"postal_code": "20095", "city": "Hamburg", "country_code": "DE" },
"items": [{ "name": "Beratungsleistung", "quantity": 5,
"unit_code": "HUR", "price": 120.00, "tax_rate": 19 }]
}'
4. ZUGFeRD XRECHNUNG erzeugen (B2G als Hybrid-PDF)
ZUGFeRD mit XRECHNUNG 3.0 Profil: behördentauglich als Hybrid-PDF. Das eingebettete CII-XML trägt den CustomizationID `urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0`.
curl -X POST https://api.xinvoice.net/v1/invoices/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document_format": "zugferd",
"document_profile": "XRECHNUNG",
"invoice_number": "RE-2026-004",
"issue_date": "2026-04-01",
"due_date": "2026-04-30",
"buyer_reference": "04011000-12345-03",
"currency": "EUR",
"seller": { "name": "Muster GmbH", "vat_id": "DE123456789",
"street": "Musterstraße 1", "postal_code": "10115",
"city": "Berlin", "country_code": "DE" },
"buyer": { "name": "Bundesbehörde", "street": "Behördenweg 1",
"postal_code": "10115", "city": "Berlin", "country_code": "DE" },
"items": [{ "name": "IT-Dienstleistung", "quantity": 8,
"unit_code": "HUR", "price": 150.00, "tax_rate": 19 }]
}'
5. Ergebnis abholen (Polling)
Alle obigen Requests laufen asynchron und liefern sofort eine `invoice_id` zurück (Status `queued`). Das fertige Dokument wird per GET abgerufen:
# Schritt 1: Ergebnis-Status prüfen
curl https://api.xinvoice.net/v1/invoices/{INVOICE_ID} \
-H "Authorization: Bearer YOUR_API_KEY"
Falls die Rechung fertig ist, wird sie gleich zurückgegeben.
# Schritt 2: Wenn status = "generated", PDF herunterladen (nur bei ZUGFeRD)
curl https://api.xinvoice.net/v1/invoices/{INVOICE_ID}/download-pdf \
-H "Authorization: Bearer YOUR_API_KEY" \
--output rechnung.pdf
Oder:
Im Schritt 1 gleich den URL-Parameter ?include_pdf_data=1 anhängen.
Dann enthält der JSON-Response aus Schritt 1 bereits die PDF-Datei
als base64-encoded String.
# Alternativ: synchrone Erzeugung (wartet auf Ergebnis)
# Der synchrone Modus schließt include_pdf_data=1 implizit mit ein.
curl -X POST https://api.xinvoice.net/v1/invoices/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Prefer: respond-sync" \
-H "Content-Type: application/json" \
-d '{ ... }'
6. Validierung – XML oder PDF
Eine bestehende E-Rechnung validieren – als Raw-XML, als JSON-Payload oder als ZUGFeRD-PDF. Die Antwort enthält `valid` mit dem Wert true oder false sowie strukturierte Fehlermeldungen mit Business-Rule-Referenz.
# XRechnung UBL oder CII XML validieren (Raw)
curl -X POST https://api.xinvoice.net/v1/invoices/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/xml" \
--data-binary @rechnung.xml
# ZUGFeRD PDF validieren (Raw)
curl -X POST https://api.xinvoice.net/v1/invoices/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/pdf" \
--data-binary @rechnung.pdf
# JSON-Payload validieren (wie beim Erzeugen, aber keine Speicherung)
curl -X POST https://api.xinvoice.net/v1/invoices/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "document_format": "xrechnung_ubl", "invoice_number": "RE-2026-001", ... }'