Validator API
Validiere E-Rechnungen gegen offizielle KoSIT-Schemas und Schematron-Regeln. Erhalte detaillierte Fehlermeldungen mit XPath-Angaben und Korrekturvorschlägen.
/v1/validateKoSIT-konform
Offizielle Schematron-Regeln der KoSIT (Koordinierungsstelle für IT-Standards)
Detaillierte Fehler
XPath-Angaben, Zeilennummern und konkrete Korrekturvorschläge
Alle Formate
XRechnung, ZUGFeRD, Factur-X und UBL werden unterstützt
Beispiel
1curl -X POST https://api.xhub.io/v1/validate \2 -H "Authorization: Bearer xhub_live_abc123..." \3 -H "Content-Type: application/xml" \4 --data-binary @rechnung.xmlAlternative: JSON-Wrapper
1curl -X POST https://api.xhub.io/v1/validate \2 -H "Authorization: Bearer xhub_live_abc123..." \3 -H "Content-Type: application/json" \4 -d '{5 "xml": "<?xml version=\"1.0\"?>\n<Invoice>...</Invoice>",6 "format": "xrechnung-3.0"7 }'Request Parameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
Content-Type | header | application/xml für direktes XML oder application/json für JSON-Wrapper | |
xml | string | Die zu validierende XML-Rechnung (Body oder JSON-Feld) | |
format | string | - | Optional: Erwartetes Format. Wird automatisch erkannt wenn nicht angegeben |
strict | boolean | - | Strikte Validierung (Warnungen werden zu Fehlern). Default: false |
Response
Gültige Rechnung
200 OK1{2 "valid": true,3 "format": {4 "detected": "XRechnung",5 "version": "3.0.2",6 "profile": "EN16931"7 },8 "schema": {9 "valid": true,10 "errors": []11 },12 "schematron": {13 "valid": true,14 "errors": [],15 "warnings": []16 },17 "summary": {18 "errors": 0,19 "warnings": 0,20 "notices": 221 },22 "notices": [23 {24 "code": "BR-DE-INFO-01",25 "message": "Zahlungsbedingungen wurden nicht angegeben",26 "severity": "info"27 },28 {29 "code": "BR-DE-INFO-02",30 "message": "Optionales Feld 'BuyerReference' ist leer",31 "severity": "info"32 }33 ],34 "processingTime": 4535}Ungültige Rechnung
200 OK1{2 "valid": false,3 "format": {4 "detected": "XRechnung",5 "version": "3.0.2",6 "profile": "EN16931"7 },8 "schema": {9 "valid": false,10 "errors": [11 {12 "code": "cvc-complex-type.2.4.a",13 "message": "Invalid content was found starting with element 'InvalidElement'",14 "line": 42,15 "column": 1516 }17 ]18 },19 "schematron": {20 "valid": false,21 "errors": [22 {23 "code": "BR-DE-01",24 "message": "Eine Rechnung muss eine Leitweg-ID enthalten",25 "xpath": "/Invoice/AccountingCustomerParty",26 "severity": "error"27 },28 {29 "code": "BR-DE-15",30 "message": "Das Element 'Seller postal address country code' muss übermittelt werden",31 "xpath": "/Invoice/AccountingSupplierParty/Party/PostalAddress",32 "severity": "error"33 }34 ],35 "warnings": [36 {37 "code": "BR-DE-WARN-01",38 "message": "Empfehlung: Bankverbindung sollte angegeben werden",39 "xpath": "/Invoice/PaymentMeans",40 "severity": "warning"41 }42 ]43 },44 "summary": {45 "errors": 3,46 "warnings": 1,47 "notices": 048 },49 "processingTime": 5250}Response-Felder
valid
true wenn die Rechnung alle Prüfungen besteht, false wenn Fehler gefunden wurden.
format
Erkanntes Format, Version und Profil der Rechnung. Wird automatisch aus dem XML ermittelt.
schema
Ergebnis der XSD-Schema-Validierung. Prüft die XML-Struktur gegen das offizielle Schema.
schematron
Ergebnis der Schematron-Validierung. Prüft Geschäftsregeln (BR-DE-xx) und EN16931-Konformität.
summary
Zusammenfassung: Anzahl der Fehler, Warnungen und Informationshinweise.
processingTime
Verarbeitungszeit in Millisekunden. Typisch: 30-80ms.
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 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 →