Core APIKostenlos

Validator API

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

POST/api/v1/invoice/{countryCode}/validate
Validierung ist kostenlos!

Die 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

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

Alternative: JSON-Wrapper

bash
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

bash
1# Datei-Upload mit multipart/form-data
2curl -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

DE

Deutschland

AT

Österreich

CH

Schweiz

FR

Frankreich

IT

Italien

ES

Spanien

NL

Niederlande

BE

Belgien

Q2.2026
PT

Portugal

Q2.2026
PL

Polen

Q2.2026
CZ

Tschechien

Q2.2026
HU

Ungarn

Q2.2026
RO

Rumänien

Q2.2026
BG

Bulgarien

= Verfügbar | Q2.2026 = Geplant

Deutschland

/api/v1/invoice/DE/validate

Österreich

/api/v1/invoice/AT/validate

Frankreich

/api/v1/invoice/FR/validate

Italien

/api/v1/invoice/IT/validate

Schweiz

/api/v1/invoice/CH/validate

Spanien

/api/v1/invoice/ES/validate

Request Parameter

Path Parameter

ParameterTypPflichtBeschreibung
countryCodestringISO 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

ParameterTypPflichtBeschreibung
AuthorizationheaderBearer Token mit sk_test_* oder sk_live_* API Key
Content-Typeheaderapplication/xml, application/json, oder multipart/form-data
xml / filestring / 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 OK
json
1{
2 "valid": true,
3 "errors": [],
4 "warnings": []
5}

Ungültige Rechnung

200 OK
json
1{
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

400 Bad Request
json
1{
2 "error": "BAD_REQUEST",
3 "message": "Invalid XML format or malformed request body"
4}
401 Unauthorized
json
1{
2 "error": "UNAUTHORIZED",
3 "message": "Invalid or missing API key"
4}
403 Forbidden
json
1{
2 "error": "FORBIDDEN",
3 "message": "Your API key does not have permission for this operation"
4}
500 Internal Server Error
json
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

FeldTypBeschreibung
codestringFehlercode (z.B. BR-DE-01, BR-16)
messagestringLesbare Fehlerbeschreibung
fieldstring (optional)XPath oder Feldname, wo der Fehler aufgetreten ist

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