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)
28 Länder
Unterstützung für DE, AT, CH, FR, IT, ES, NL, BE, PT, PL, CZ, HU, RO, BG, SE, NO, DK, FI, IE, GB, LU, MT, CY, SI, EE, LV, LT, GR
Alle Formate
XRechnung, ZUGFeRD, Factur-X, Peppol UBL sowie nationale Formate (FatturaPA, ebInterface, Facturae, ISDOC, NAV) 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
SESchweden
NONorwegen
DKDänemark
FIFinnland
IEIrland
GBGroßbritannien
LULuxemburg
MTMalta
CYZypern
SISlowenien
EEEstland
LVLettland
LTLitauen
GRGriechenland
= Verfügbar
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 (28): DE, AT, CH, FR, IT, ES, NL, BE, PT, PL, CZ, HU, RO, BG, SE, NO, DK, FI, IE, GB, LU, MT, CY, SI, EE, LV, LT, GR. |
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 | Validierung |
|---|---|---|
| XRechnung 3.0.2 | EN16931 CII/UBL | KoSIT 3.0.2 Schematron |
| XRechnung 3.0 | EN16931 CII/UBL | KoSIT 3.0 Schematron |
| ZUGFeRD 2.4 | EN16931 CII | EN16931 Schematron |
| ZUGFeRD 2.3 | EN16931 CII | EN16931 Schematron |
| Factur-X 1.08 | EN16931 CII | EN16931 Schematron |
| UBL (Peppol BIS 3.0) | EN16931 UBL | Peppol BIS 3.0 / EN16931 |
| ebInterface | ebInterface XSD (AT) | ebInterface |
| FatturaPA 1.2.3 | FatturaPA XSD (IT) | SDI-Schema |
| Facturae | Facturae XSD (ES) | Facturae XSD |
| ISDOC | ISDOC XSD (CZ) | ISDOC XSD |
| NAV | NAV XSD (HU) | NAV-Online XSD |
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 →