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.

Zur Warteliste · info@bobook.club

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.

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

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).

Datenschutz

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