Validator API
Validiere E-Rechnungen gegen offizielle KoSIT-Schemas und Schematron-Regeln. Erhalte detaillierte Fehlermeldungen mit Korrekturvorschlägen.
/api/v1/invoice/{countryCode}/validateDie Validierung von E-Rechnungen verbraucht keine Billing-Quota. Du kannst beliebig viele Rechnungen validieren, ohne dass dein Kontingent belastet wird.
Kostenlos
Validierung verbraucht keine Billing-Quota - unbegrenzt nutzbar
KoSIT-konform
Offizielle Schematron-Regeln der KoSIT (Koordinierungsstelle für IT-Standards)
14 Länder
Unterstützung für DE, [Q2.2026 AT, CH, FR, IT, ES, NL, BE, PT, PL, CZ, HU, RO, BG]
Alle Formate
XRechnung, ZUGFeRD, Factur-X und UBL werden unterstützt
Beispiel
1curl -X POST https://api.invoice.xhub.io/api/v1/invoice/DE/validate \2 -H "Authorization: Bearer sk_live_abc123..." \3 -H "Content-Type: application/xml" \4 --data-binary @rechnung.xmlAlternative: JSON-Wrapper
1# Beispiel für Österreich (AT)2curl -X POST https://api.invoice.xhub.io/api/v1/invoice/AT/validate \3 -H "Authorization: Bearer sk_live_abc123..." \4 -H "Content-Type: application/json" \5 -d '{6 "xml": "<?xml version=\"1.0\"?>\n<Invoice>...</Invoice>"7 }'Alternative: Datei-Upload
1# Datei-Upload mit multipart/form-data2curl -X POST https://api.invoice.xhub.io/api/v1/invoice/DE/validate \3 -H "Authorization: Bearer sk_live_abc123..." \4 -H "Content-Type: multipart/form-data" \5 -F "file=@rechnung.xml"Unterstützte Länder
Der Ländercode wird als Teil der URL angegeben: /api/v1/invoice/{countryCode}/validate
DEDeutschland
ATÖsterreich
CHSchweiz
FRFrankreich
ITItalien
ESSpanien
NLNiederlande
BEBelgien
PTPortugal
PLPolen
CZTschechien
HUUngarn
RORumänien
BGBulgarien
= Verfügbar | Q2.2026 = Geplant
Deutschland
/api/v1/invoice/DE/validateÖsterreich
/api/v1/invoice/AT/validateFrankreich
/api/v1/invoice/FR/validateItalien
/api/v1/invoice/IT/validateSchweiz
/api/v1/invoice/CH/validateSpanien
/api/v1/invoice/ES/validateRequest Parameter
Path Parameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
countryCode | string | ISO 3166-1 alpha-2 Ländercode. Verfügbar: DE, AT, CH, FR, IT, ES, NL, BE. Geplant (Q2.2026): PT, PL, CZ, HU, RO, BG |
Headers & Body
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
Authorization | header | Bearer Token mit sk_test_* oder sk_live_* API Key | |
Content-Type | header | application/xml, application/json, oder multipart/form-data | |
xml / file | string / file (body) | Die zu validierende E-Rechnung (XML direkt, JSON-Feld 'xml', oder Datei-Upload als 'file') |
Authentifizierung
Verwende deinen API Key im Authorization-Header: Bearer sk_test_... für Testumgebung oder Bearer sk_live_... für Produktion.
Response
Gültige Rechnung
200 OK1{2 "valid": true,3 "errors": [],4 "warnings": []5}Ungültige Rechnung
200 OK1{2 "valid": false,3 "errors": [4 {5 "code": "BR-DE-01",6 "message": "Eine Rechnung muss eine Leitweg-ID enthalten",7 "field": "/Invoice/AccountingCustomerParty/BuyerReference"8 },9 {10 "code": "BR-DE-15",11 "message": "Das Element 'Seller postal address country code' muss übermittelt werden",12 "field": "/Invoice/AccountingSupplierParty/Party/PostalAddress/Country"13 }14 ],15 "warnings": [16 {17 "code": "BR-DE-WARN-01",18 "message": "Empfehlung: Bankverbindung sollte angegeben werden",19 "field": "/Invoice/PaymentMeans"20 }21 ]22}Error Responses
1{2 "error": "BAD_REQUEST",3 "message": "Invalid XML format or malformed request body"4}1{2 "error": "UNAUTHORIZED",3 "message": "Invalid or missing API key"4}1{2 "error": "FORBIDDEN",3 "message": "Your API key does not have permission for this operation"4}1{2 "error": "INTERNAL_ERROR",3 "message": "An unexpected error occurred"4}Response-Felder
valid
true wenn die Rechnung alle Prüfungen besteht, false wenn Fehler gefunden wurden.
errors
Array von Fehlern. Jeder Fehler enthält code, message und optional field.
warnings
Array von Warnungen. Gleiches Schema wie Fehler, aber keine kritischen Probleme.
Schema für Errors/Warnings
| Feld | Typ | Beschreibung |
|---|---|---|
code | string | Fehlercode (z.B. BR-DE-01, BR-16) |
message | string | Lesbare Fehlerbeschreibung |
field | string (optional) | XPath oder Feldname, wo der Fehler aufgetreten ist |
Unterstützte Formate
| Format | Schema | Schematron |
|---|---|---|
| XRechnung 3.0.2 | EN16931 CII/UBL | KoSIT 1.9.1 |
| XRechnung 2.3 | EN16931 CII/UBL | KoSIT 1.8.2 |
| ZUGFeRD 2.1.1 | EN16931 CII | ZUGFeRD 2.1 |
| ZUGFeRD 2.0.1 | EN16931 CII | ZUGFeRD 2.0 |
| Factur-X 1.0 | EN16931 CII | Factur-X 1.0 |
| UBL 2.1 | OASIS UBL 2.1 | EN16931 UBL |
Häufige Validierungsfehler
BR-DE-01Eine Rechnung muss eine Leitweg-ID enthalten
Lösung: Füge buyer.leitweg im Request hinzu
BR-DE-15Ländercode des Verkäufers fehlt
Lösung: Stelle sicher, dass seller.address.country gesetzt ist
BR-DE-17USt-IdNr. oder Steuernummer des Verkäufers fehlt
Lösung: Setze seller.vatId oder seller.taxNumber
BR-16Rechnungssumme stimmt nicht mit Positionen überein
Lösung: Überprüfe die Berechnung von Netto + MwSt = Brutto
BR-CO-10Summe der Positionsnettobeträge ungleich Rechnungsnetto
Lösung: Prüfe die Summe aller items[].quantity * items[].unitPrice
Vollständige Fehlerliste: Error Handling Dokumentation
Validierung ist komplett kostenlos
Anders als Creator und Converter verbraucht die Validator API keine Billing-Quota. Du kannst beliebig viele Rechnungen validieren, ohne dass dein monatliches Kontingent belastet wird. Perfekt für CI/CD-Pipelines, automatische Tests und Qualitätssicherung.
Validierung im Playground
Du kannst Rechnungen auch direkt im Browser validieren – ohne API Key. Ziehe einfach eine XML-Datei in den Playground und erhalte sofort das Validierungsergebnis.
Zum Playground →