Core API

Validator API

Validiere E-Rechnungen gegen offizielle KoSIT-Schemas und Schematron-Regeln. Erhalte detaillierte Fehlermeldungen mit XPath-Angaben und Korrekturvorschlägen.

POST/v1/validate

KoSIT-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

bash
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.xml

Alternative: JSON-Wrapper

bash
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

ParameterTypPflichtBeschreibung
Content-Typeheaderapplication/xml für direktes XML oder application/json für JSON-Wrapper
xmlstringDie zu validierende XML-Rechnung (Body oder JSON-Feld)
formatstring-Optional: Erwartetes Format. Wird automatisch erkannt wenn nicht angegeben
strictboolean-Strikte Validierung (Warnungen werden zu Fehlern). Default: false

Response

Gültige Rechnung

200 OK
json
1{
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": 2
21 },
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": 45
35}

Ungültige Rechnung

200 OK
json
1{
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": 15
16 }
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": 0
48 },
49 "processingTime": 52
50}

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

FormatSchemaSchematron
XRechnung 3.0.2EN16931 CII/UBLKoSIT 1.9.1
XRechnung 2.3EN16931 CII/UBLKoSIT 1.8.2
ZUGFeRD 2.1.1EN16931 CIIZUGFeRD 2.1
ZUGFeRD 2.0.1EN16931 CIIZUGFeRD 2.0
Factur-X 1.0EN16931 CIIFactur-X 1.0
UBL 2.1OASIS UBL 2.1EN16931 UBL

Häufige Validierungsfehler

BR-DE-01

Eine Rechnung muss eine Leitweg-ID enthalten

Lösung: Füge buyer.leitweg im Request hinzu

BR-DE-15

Ländercode des Verkäufers fehlt

Lösung: Stelle sicher, dass seller.address.country gesetzt ist

BR-DE-17

USt-IdNr. oder Steuernummer des Verkäufers fehlt

Lösung: Setze seller.vatId oder seller.taxNumber

BR-16

Rechnungssumme stimmt nicht mit Positionen überein

Lösung: Überprüfe die Berechnung von Netto + MwSt = Brutto

BR-CO-10

Summe 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 →