API / Batch
API-Doku
Status: Einzeldatei live und kostenlos. Batch bleibt Warteliste.
POST /v1/validate prüft eine Datei, ohne API-Key. Kostenlos bis 50 Prüfungen pro IP und UTC-Tag, höchstens 10 pro Minute. Darüber 429 mit Retry-After.
Batch und höheres Volumen: ab €79/Monat, Warteliste kostenlos, Zahlung erst nach Bestätigung.
Was geprüft wird
XRechnung-XML (UBL und CII) und ZUGFeRD-PDF, wenn ein XML eingebettet ist. Die Engine ist der KoSIT Validator mit der offiziellen XRechnung-Konfiguration.
- KoSIT Validator 1.6.3
- XRechnung 3.0.2, Konfiguration Release 2026-08-31 (
scenarios.xmlvom 2026-09-02) - EN 16931 Schematron 1.3.16
Ergebnis
Regelcode (BR-…), Fundstelle und deutscher Hinweis. Die Seite zeigt diese Klassen: Bestanden, gültig mit Hinweisen, nicht bestanden, keine E-Rechnung, Format unklar.
Grenzen
- Maximal 5 MB. Größere Dateien: 413.
- Eine leere Datei wird abgelehnt.
- 50 Prüfungen pro IP und UTC-Tag, 10 pro Minute. Danach 429.
Datenschutz
Rechnungsdateien (XML/PDF) werden nur im Arbeitsspeicher der jeweiligen HTTP-Anfrage verarbeitet. Sie werden nicht auf Festplatte geschrieben, nicht in Logs als XML abgelegt und nicht an ein Sprachmodell gesendet. Nach der Antwort ist die Datei verworfen (persisted: false).
Technische Events enthalten keine Dateiinhalte, nur Metadaten (Bytezahl, Typ, Fehleranzahl).
Umfang
Eine Datei kann hier bestehen und bei ZRE/OZG-RE oder einem anderen Portal trotzdem scheitern (Portal- und Bank-Overlays). Kein Peppol-Access-Point, kein Rechnungseditor, kein Portal-Submit, keine Rechts- oder Steuerberatung.
Anfrage
curl -F "file=@rechnung.xml" https://checkxrechnung.com/v1/validate
Beispielantwort
Gegen invalid-xrechnung-ubl.xml: 14 Fehler. Unten der erste, mit den Feldern von POST /v1/validate. Die Website-Antwort unter /api/validate hat zusätzlich resultClass, sessionId, uploadIndexInSession, sanitized, scenario, recommendation, customization, extractedName und kind. rule_url zeigt auf die Erklärungsseite der Regel, wenn es sie gibt, zum Beispiel BR-08. Alle Regeln stehen unter /fehler/, auf Englisch unter /en/errors/.
{
"ok": false,
"persisted": false,
"fileName": "invalid-xrechnung-ubl.xml",
"bytes": 2496,
"hasXml": true,
"syntax": "UBL Invoice",
"invoiceType": "XRechnung",
"summary": { "errors": 14, "warnings": 0 },
"versions": {
"product": "RechnungCheck",
"domain": "checkxrechnung.com",
"xrechnung": "3.0.2",
"kosit_validator": "1.6.3",
"kosit_configuration": "2026-08-31",
"en16931_schematron": "1.3.16"
},
"issues": [
{
"severity": "error",
"code": "BR-08",
"location": "/Invoice",
"message": "[BR-08]-An Invoice shall contain the Seller postal address.",
"hint": "Die Verkäuferanschrift (BG-5) fehlt. StreetName, CityName, PostalZone und Country/IdentificationCode setzen.",
"source": "kosit",
"rule_url": "https://checkxrechnung.com/fehler/br-08"
}
]
}
Dateien über 5 MB antworten mit 413. Ab der 51. Prüfung einer IP am UTC-Tag, oder ab der 11. in einer Minute, antwortet die API mit 429 und einem Link zur Warteliste.
ZUGFeRD / Factur-X
POST /v1/zugferd/validate nimmt eine PDF (höchstens 10 MB). Dieselbe Freigrenze wie POST /v1/validate: 50 Prüfungen pro IP und UTC-Tag, 10 pro Minute, ohne API-Key. Die Zähler gelten für alle /v1/-Prüfungen gemeinsam.
Die PDF/A-3-Prüfung ist eine Strukturprüfung (PDF-Kopf, XMP pdfaid:part 3, Konformität A/B/U, eingebettete XML, AFRelationship Alternative). Steht veraPDF auf dem Server, wird veraPDF benutzt und das Feld pdfa.engine ist verapdf. Sonst ist pdfa.engine structure und pdfa.label sagt, dass es keine volle veraPDF-Prüfung ist.
Extrahiert wird factur-x.xml, zugferd-invoice.xml oder xrechnung.xml. Das Profil ist MINIMUM, BASIC WL, BASIC, EN16931, EXTENDED oder XRECHNUNG. Das XML läuft durch das EN-16931-CII-Schematron 1.3.16 aus der KoSIT-Konfiguration. Beim Profil XRECHNUNG zusätzlich durch das XRechnung-CII-Schematron. Jeder Treffer hat rule_url, wenn es eine Seite unter /fehler/ gibt.
MINIMUM, BASIC WL und BASIC sind Teilmengen von EN 16931. Eine korrekte Datei dieser Profile kann am EN-16931-Schematron scheitern. Das steht in profileNote.
curl -F "file=@factur-x-en16931.pdf" https://checkxrechnung.com/v1/zugferd/validate
curl -F "file=@factur-x-en16931.pdf" https://checkxrechnung.com/v1/zugferd/extract
POST /v1/zugferd/extract liefert das eingebettete XML und eine JSON-Zusammenfassung (Rechnungsnummer, Datum, Verkäufer, Käufer, Beträge, Profil). Auch hier 10 MB und dieselbe Freigrenze. Beschrieben auf /zugferd.
Weiter
Beispieldateien · Fehler-Codes · Changelog · llms.txt · openapi.json
Bobook Limited, Venture Hub, 136 Capel Street, Dublin 1, D01 T2C9, Ireland · info@bobook.club