XRechnung validator: check XML for free
Upload an XRechnung XML file and validate it against EN 16931 and the German BR-DE rules with the official KoSIT validator. You get the violated rules in plain language, not just "invalid".
Good to know
For public-sector clients
XRechnung is the German implementation (CIUS) of EN 16931 and the format that the German federal government, the federal states and municipalities require for incoming invoices. It is pure XML, without a visual layer like a ZUGFeRD PDF. That is why an error is often only noticed when the recipient rejects the invoice.
German rules on top of EN 16931
In addition to the European rules, around 40 German business rules apply, with identifiers such as BR-DE-1 or BR-DE-15. Among other things, they require payment details, the seller's contact details and the Leitweg-ID (the routing ID of German public-sector recipients). We check them as well and explain every violated rule.
The most common reason for rejection
The Leitweg-ID (Buyer reference, BT-10) is the routing ID that addresses the specific invoice recipient within the German public administration, and it is mandatory for XRechnung. If it is missing, the invoice violates BR-DE-15 and is rejected, even if everything else is correct.
What is checked
Formal validity (KoSIT)
The invoice runs through the official KoSIT validator (KoSIT is Germany's Coordination Office for IT Standards), the same tool the German public administration uses. It is checked against EN 16931 and the German XRechnung rules (BR-DE). You get the violated rules in plain language, not just a red cross.
What you see versus what machines read
A ZUGFeRD PDF has two layers: what you see and what your accounting software imports. We compare both. If the IBAN printed in the PDF differs from the embedded XML, that is a red flag that pure format validators do not even look for.
Plausibility of the payment details
Is the IBAN valid according to its check digits at all? Does the IBAN country match the issuer's registered location? This is exactly where payment diversion fraud strikes: an otherwise genuine invoice where only the bank details have been swapped.
Error message in your result?
The KoSIT validator reports rule identifiers such as BR-DE-15 or BR-CO-25. The error code reference lists all rules from EN 16931 and the German XRechnung standard with their official text.
With a free account we check even more
- Bank change detection: an alert when a known supplier suddenly bills with a different IBAN.
- IBAN vault: approve or block bank details per supplier, optionally with four-eyes approval.
- Mailbox automation: incoming invoices are checked automatically before anyone pays.
- Duplicate check & check history: spot duplicate invoices and look up past results.
Frequently asked questions
How do I check an XRechnung?
Upload the XML file here. It is checked with the official KoSIT validator against EN 16931 and the German XRechnung rules. The result names every violated rule with its identifier and official text.
What is the Leitweg-ID and why is mine missing?
The Leitweg-ID is the routing address of the invoice recipient in the German public administration, technically the Buyer reference field (BT-10). You get it from your client; it is usually stated in the purchase order or the contract. Without it, rule BR-DE-15 fails.
Which XRechnung version is checked?
The check runs against the official KoSIT validation scenarios stored in the validator. If no scenario matches your file, for example because it uses a very old or a foreign implementation, we say so explicitly instead of returning a green result.
Do you support UBL and CII?
Yes. EN 16931 allows both syntaxes, and so does XRechnung. Our validator accepts both, you do not need to specify the syntax.
Can I also have an XRechnung checked as a PDF?
By definition, an XRechnung is an XML file without a PDF. If you have a PDF, it is either a ZUGFeRD PDF with embedded XML, in which case use the ZUGFeRD validator, or an ordinary PDF, in which case it is not an e-invoice.
What exactly does a BR-DE-… error message mean?
Each identifier stands for a specific German business rule. You will find all rules with the official original text and a plain-language explanation in our error code reference.