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_test_xxx' \3 -H 'Content-Type: application/json' \4 -d '{5 "invoice": {6 "invoiceNumber": "RE-2026-001",7 "type": "invoice",8 "issueDate": "2026-01-15",9 "dueDate": "2026-02-15",10 "currency": "EUR",11 "seller": {12 "name": "Meine Firma GmbH",13 "street": "Musterstraße 1",14 "city": "Berlin",15 "postalCode": "10115",16 "countryCode": "DE",17 "vatId": "DE123456789"18 },19 "buyer": {20 "name": "Kunde AG",21 "street": "Kundenweg 42",22 "city": "München",23 "postalCode": "80331",24 "countryCode": "DE",25 "vatId": "DE987654321"26 },27 "items": [{28 "position": 1,29 "description": "Beratung",30 "quantity": 10,31 "unit": "HUR",32 "unitPrice": 150.00,33 "taxRate": 19,34 "netAmount": 1500.00,35 "taxAmount": 285.00,36 "grossAmount": 1785.0037 }],38 "subtotal": 1500.00,39 "total": 1785.00,40 "taxSummary": [{ "taxRate": 19, "netAmount": 1500.00, "taxAmount": 285.00 }],41 "paymentTerms": { "dueDays": 30 }42 }43 }'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/json | |
invoice | object (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 request body"4}1{2 "error": "UNAUTHORIZED",3 "message": "Invalid or missing API key"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.countryCode 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 →