Check a Leitweg-ID
The check digits alone – by the official method.
To the toolFree tool
The points where invoices are rejected in practice: Leitweg-ID with check digits, German mandatory fields, totals that do not add up. In the browser, without an upload.
Check
UBL and CII, both syntaxes. Tested against a real invoice produced by Levora and against KoSIT’s official test suite.
The invoice stays on your machine. It is read in the browser – no upload, no server. An invoice carries your client, your prices and your bank details.
or drag it here – XRechnung as .xml, UBL or CII
Nothing came up in the points that were checked. This is not a conformance certificate – see below.
This tool failed its own test case and has been switched off. Please tell us.
Without JavaScript this tool checks nothing – JavaScript is precisely what evaluates the invoice on your machine instead of sending it away.
No upload, no server, no storage. Your browser's network panel shows it.
It is not a conformance check to KoSIT. That one runs against an XML schema and several Schematron rule sets, needs a Java environment and cannot be rebuilt in a browser. Anyone who needs a defensible statement – because a client demands one, say – uses the official validator: the KoSIT validator configuration together with the validator itself .
So a green box here does not stand for “conformant” but for “nothing came up in the points that were checked”. The difference matters enough to be printed in the result as well.
The points where invoices get stuck in daily practice – with the field number and, where documented, the rule identifier under which the message also appears in the official validator.
The field numbers (BT-…) and rule identifiers (BR-DE-…) are neither German nor English on this page; they are the specification’s own identifiers. They are exactly what you hold on to when looking a finding up in the official validator – which is why they are not translated.
| Check | Field | Rule |
|---|---|---|
| Syntax detected, specification identifier and version | BT-24 | – |
| Invoice number, date, type, currency | BT-1, BT-2, BT-3, BT-5 | – |
| Name of issuer and recipient | BT-27, BT-44 | – |
| VAT identification number | BT-31 | – |
| Buyer reference present, ≤ 40 characters | BT-10 | BR-DE-15 |
| Leitweg-ID: check digits by modulo 97-10 | BT-10 | BR-DE-15 |
| Contact, telephone, email of the issuer | BT-41, BT-42, BT-43 | BR-DE-2, -6, -7 |
| Email format | BT-43 | BR-DE-4 |
| Town and postcode of the recipient | BT-52, BT-53 | BR-DE-8, -9 |
| Length of a German IBAN | BT-84 | BR-DE-18 |
| Payment means code | BT-81 | BR-DE-12 |
| Delivery date or period present | BT-72 / BG-14 | – |
| Sum of the lines = net total | BT-106 | – |
| Net − discounts + charges = total net | BT-109 | – |
| Net + VAT = gross | BT-112 | – |
| Gross − prepaid + rounding = amount due | BT-115 | – |
The Leitweg-ID. Either it is missing, or it sits in the wrong field, or its check digits do not match. In all three cases the portal returns the invoice before a human sees it, and you find out only when the payment does not arrive. You can also test the check digits on their own in the Leitweg-ID checker .
Next
The check digits alone – by the official method.
To the toolWhich deadline applies to you.
To the toolThe same checks, before the file leaves the house.
To the featureIn Levora the XRechnung comes out of the job itself – mandatory fields and Leitweg-ID are checked before the file exists.