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://service.invoice-api.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://service.invoice-api.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://service.invoice-api.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: für Testumgebung oder für Produktion.Bearer sk_test_... / Bearer sk_live_...
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 / false
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 →