Business API
Serverseitige API für Validierung und UBL-Erstellung
Die Business-API erlaubt serverseitige Verarbeitung ohne Browser-Checkout. Validieren Sie XML- oder ZUGFeRD-/Factur-X-Dateien, erzeugen Sie einfache UBL/XRechnung-XML aus strukturiertem JSON und erhalten Sie JSON-Ergebnisse, Fehlerdetails, Batch-Validierung und kurzlebige PDF-Bericht-Links zurück. Die API ist für Verarbeitung und Rückgabe gedacht, nicht für Archivierung oder ERP-Implementierung.
Zugang zur Business API
Die Business API gehört zum Business-Tarif. Der Tarif kann über die Preisübersicht gebucht und danach im Konto mit API-Schlüsseln, JSON-Antworten und PDF-Artefakten genutzt werden.
Endpunkt
https://e-rechnung-check.de/api/external/validateMethode
POSTAuthentifizierung
X-API-KeyAnfrage
Der Endpunkt akzeptiert genau eine Datei pro Request. Nutzen Sie Multipart-Upload und senden Sie Ihren API-Schlüssel im Header. Reichen Sie nur Dateien ein, die Sie selbst außerhalb der Plattform archivieren und verwalten.
- Form-Feld `file`: XML oder ZUGFeRD/Factur-X PDF
- Query `lang`: `de` oder `en` für rehydrierte Fehlermeldungen
- Unterstützte Formate: UBL XML, CII XML, ZUGFeRD-/Factur-X-PDF mit EN16931-kompatiblem eingebettetem XML. ZUGFeRD 2.5 / Factur-X 1.09 ist als aktueller Hybridstandard vermerkt; die Prüfung bewertet den eingebetteten XML-Datensatz.
- Dateigröße: maximal 10 MB
curl -X POST \
"https://e-rechnung-check.de/api/external/validate?lang=de" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx" \
-F "file=@invoice.xml"Antwort
Der Endpunkt gibt aktuell JSON zurück: Status, erkannte Syntax/Profile, Fehler, Warnungen und eine optionale strukturierte Rechnungszusammenfassung. Dieses JSON ist das primäre Format für SAP-, ERP- und Backend-Integrationen.
{
"status": "done",
"is_valid": false,
"xrechnung_version": "3.0.1",
"validation_profile": "XRechnung",
"validation_format": "UBL",
"processing_time_ms": 842,
"errors": [
{
"code": "BR-DE-14",
"severity": "fatal",
"validation_layer": "cius",
"section": "Seller",
"title": "Seller VAT ID is missing",
"explanation": "The invoice is missing a required seller VAT identifier.",
"fix": "Add the seller VAT ID in the seller party block.",
"bt_field": "BT-31",
"xpath": "/Invoice/..."
}
],
"warnings": [],
"validation_details": {
"invoice_identity": {
"syntax": "UBL",
"declared_profile": "XRechnung",
"declared_version": "3.0",
"customization_id": "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0"
},
"validation_stack": {
"mode": "current",
"status": "current",
"en16931": "EN16931 UBL/CII XSLT rules v1.3.16",
"xrechnung": "KoSIT-compatible Schematron bundle 2.5.0"
}
},
"invoice_summary": {
"invoice_number": "RE-2026-001",
"invoice_date": "2026-04-13",
"format": "UBL"
},
"artifacts": {
"validation_report_pdf": {
"available": true,
"url": "https://e-rechnung-check.de/api/external/artifacts/abc123/report.pdf",
"expires_in_seconds": 3600
},
"readable_invoice_pdf": {
"available": true,
"url": "https://e-rechnung-check.de/api/external/artifacts/abc123/invoice.pdf",
"expires_in_seconds": 3600
}
}
}Artefakt-Ausgaben
Die API-Antwort enthält kurzlebige PDF-Links. Diese Links sind temporär, benötigen weiterhin den Business-API-Schlüssel und dienen der Ergebnisrückgabe, nicht der Archivierung.
- Primärformat: versioniertes JSON mit Validierung, strukturierter Rechnung, Fehlercodes und maschinenlesbaren Feldern.
- Verfügbar: kurzlebige Links für Validierungsbericht-PDF und lesbare Rechnungs-PDF, statt PDF-Dateien als Base64 im JSON.
- Verfügbar bei Erstellung: generierte UBL-XML wird direkt in der JSON-Antwort zurückgegeben. Geplant bleiben separate XML-Artefakt-Links für extrahierte oder korrigierte XML.
- Geplant, noch nicht live: ZUGFeRD-/Factur-X-PDF/A-3-Export mit eingebettetem XML. Die API validiert solche Dateien heute, erzeugt aber noch keine Hybrid-PDF.
- CSV bleibt ein mögliches Nebenformat für Reporting, aber nicht das Hauptformat für SAP- oder ERP-Integrationen.
UBL aus JSON erstellen
Der Generate-Endpunkt nimmt einen strukturierten Rechnungsentwurf entgegen, erzeugt UBL-XML, validiert diese XML sofort und gibt XML, Validierung, Rechnungszusammenfassung und kurzlebige PDF-Links zurück.
- Erste Version: `format` ist bewusst auf `UBL` begrenzt.
- Die erzeugte XML wird immer validiert; bei Fehlern bleibt `is_valid` false und die Fehlerliste muss vom aufrufenden System behandelt werden.
- Die API verwaltet keine Rechnungsnummern, Stammdaten, Entwürfe oder Archive.
curl -X POST \
"https://e-rechnung-check.de/api/external/generate?lang=de" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
--data @invoice-draft.jsonBeispiel-JSON
{
"invoice_number": "RE-2026-001",
"issue_date": "2026-06-03",
"due_date": "2026-06-17",
"format": "UBL",
"buyer_reference": "991-12345-06",
"seller": {
"name": "Muster GmbH",
"street": "Musterstrasse 1",
"postal_code": "10115",
"city": "Berlin",
"country_code": "DE",
"tax_id": "DE123456789"
},
"buyer": {
"name": "Beispiel AG",
"street": "Markt 2",
"postal_code": "20095",
"city": "Hamburg",
"country_code": "DE"
},
"payment": {
"iban": "DE02120300000000202051",
"payment_means_code": "58",
"payment_reference": "RE-2026-001"
},
"lines": [
{
"line_id": "1",
"name": "Beratung",
"quantity": "2",
"unit_code": "C62",
"unit_price": "100.00",
"tax_category": "S",
"tax_rate": "19.00"
}
]
}Beispiel-Antwort
{
"status": "done",
"schema_version": "1.0.0",
"format": "UBL",
"is_valid": true,
"xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>...",
"invoice_summary": {
"invoice_number": "RE-2026-001",
"invoice_date": "2026-06-03",
"format": "UBL"
},
"validation": {
"is_valid": true,
"xrechnung_version": "3.0.1",
"validation_profile": "XRechnung",
"validation_format": "UBL",
"errors": [],
"warnings": [],
"validation_details": {
"invoice_identity": {
"syntax": "UBL",
"declared_profile": "XRechnung",
"declared_version": "3.0"
},
"validation_stack": {
"mode": "current",
"status": "current",
"en16931": "EN16931 UBL/CII XSLT rules v1.3.16",
"xrechnung": "KoSIT-compatible Schematron bundle 2.5.0"
}
}
},
"artifacts": {
"validation_report_pdf": {
"available": true,
"url": "https://e-rechnung-check.de/api/external/artifacts/abc123/report.pdf",
"expires_in_seconds": 3600
},
"readable_invoice_pdf": {
"available": true,
"url": "https://e-rechnung-check.de/api/external/artifacts/abc123/invoice.pdf",
"expires_in_seconds": 3600
}
}
}JSON-Schema für Rechnungsentwürfe
Nutzen Sie den Schema-Endpunkt, um Pflichtfelder, erlaubte Formate und die aktuelle Draft-Schema-Version maschinenlesbar abzurufen.
curl \
"https://e-rechnung-check.de/api/external/schemas/invoice-draft.json" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx"Tarif- und Rechte-Endpunkt
Nutzen Sie diesen Endpunkt für einen schnellen Integrationscheck. Er bestätigt den API-Schlüssel und liefert Tarifrechte, Upload-Limits und verfügbare Routen zurück.
curl \
"https://e-rechnung-check.de/api/external/capabilities" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx"{
"status": "ok",
"plan_type": "business",
"entitlements": {
"plan_type": "business",
"daily_usage_limit": null,
"daily_validation_limit": null,
"can_view_structured_invoice": true,
"can_generate_invoice": true,
"can_download_readable_pdf": true,
"can_export": false,
"can_autofix": true,
"can_batch": true,
"can_use_api": true,
"can_use_inbound_email": true
},
"limits": {
"max_upload_size_bytes": 10485760,
"max_upload_size_mb": 10.0,
"batch_max_files": 10
},
"supported_formats": ["UBL XML", "CII XML", "ZUGFeRD / Factur-X PDF with EN16931-compatible embedded XML"],
"supported_generation_formats": ["UBL XML"],
"supported_languages": ["de", "en"],
"endpoints": {
"validate": "https://e-rechnung-check.de/api/external/validate",
"validate_batch": "https://e-rechnung-check.de/api/external/validate/batch",
"generate": "https://e-rechnung-check.de/api/external/generate",
"invoice_draft_schema": "https://e-rechnung-check.de/api/external/schemas/invoice-draft.json",
"artifact_report": "https://e-rechnung-check.de/api/external/artifacts/{token}/report.pdf",
"artifact_invoice": "https://e-rechnung-check.de/api/external/artifacts/{token}/invoice.pdf",
"capabilities": "https://e-rechnung-check.de/api/external/capabilities",
"error_catalog": "https://e-rechnung-check.de/api/external/errors/catalog"
}
}Batch-Validierung
Für Business-Zugänge steht zusätzlich ein Batch-Endpunkt zur Verfügung. Senden Sie mehrere Dateien im selben Multipart-Request über das wiederholte Feld `files`, wenn Sie höheren Verarbeitungsdurchsatz benötigen.
curl -X POST \
"https://e-rechnung-check.de/api/external/validate/batch?lang=de" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx" \
-F "files=@invoice-1.xml" \
-F "files=@invoice-2.xml"{
"status": "done",
"count": 2,
"items": [
{
"filename": "invoice-1.xml",
"status": "done",
"is_valid": true,
"xrechnung_version": "3.0.1",
"validation_profile": "XRechnung",
"validation_format": "UBL",
"processing_time_ms": 615,
"errors": [],
"warnings": [],
"invoice_summary": null,
"validation_details": {
"invoice_identity": {
"syntax": "UBL",
"declared_profile": "XRechnung",
"declared_version": "3.0"
},
"validation_stack": {
"scenario_id": "xrechnung-3.0-ubl",
"status": "current",
"en16931": "EN16931 UBL/CII XSLT rules v1.3.16 (validation artefacts v1.3.16, effective 2026-05-15)",
"xrechnung": "KoSIT-compatible Schematron bundle 2.5.0 (3.0.2-compatible)"
},
"compatibility": {
"status": "current",
"message": null
}
}
},
{
"filename": "invoice-2.xml",
"status": "done",
"is_valid": false,
"xrechnung_version": "3.0.1",
"validation_profile": "XRechnung",
"validation_format": "UBL",
"processing_time_ms": 702,
"errors": [{ "code": "BR-10" }],
"warnings": [],
"invoice_summary": null,
"validation_details": {
"invoice_identity": {
"syntax": "UBL",
"declared_profile": "XRechnung",
"declared_version": "3.0"
},
"validation_stack": {
"scenario_id": "xrechnung-3.0-ubl",
"status": "current"
},
"compatibility": {
"status": "current",
"message": null
}
}
}
]
}Fehlerkatalog-Endpunkt
Dieser Endpunkt liefert den gepflegten Regelkatalog maschinenlesbar zurück. Damit können Integrationen Regelcodes vorab mappen oder eigene Hilfetexte vorbereiten.
curl \
"https://e-rechnung-check.de/api/external/errors/catalog?lang=de" \
-H "X-API-Key: erk_live_xxxxxxxxxxxxxxxxxxxx"{
"status": "ok",
"catalog_version": "1.0.0",
"xrechnung_version": "3.0.1",
"rule_count": 183,
"language": "de",
"items": [
{
"code": "BR-01",
"severity": "fatal",
"section": "General Information",
"title": "Missing invoice number",
"explanation": "Every invoice must contain a unique invoice number.",
"fix": "Add a unique invoice number in field BT-1.",
"bt_field": "BT-1",
"xpath": "/Invoice/ID",
"examples": ["INV-2026-001"]
}
]
}Fehlerverhalten
Diese HTTP-Statuscodes sind aktuell für den externen Endpunkt relevant.
| Status | Bedeutung |
|---|---|
| 401 | Kein oder ungültiger `X-API-Key`. |
| 403 | Der API-Schlüssel gehört nicht zu einem Business-Konto. |
| 413 | Die hochgeladene Datei überschreitet 10 MB. |
| 422 | Ungültiges Multipart-Formular oder nicht unterstützte Datei. |