Free tool

Test an XRechnung before the portal does

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

Open an invoice

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

Or paste XML

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.

What this tool is not

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.

What it checks

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.

CheckFieldRule
Syntax detected, specification identifier and versionBT-24–
Invoice number, date, type, currencyBT-1, BT-2, BT-3, BT-5–
Name of issuer and recipientBT-27, BT-44–
VAT identification numberBT-31–
Buyer reference present, ≤ 40 charactersBT-10BR-DE-15
Leitweg-ID: check digits by modulo 97-10BT-10BR-DE-15
Contact, telephone, email of the issuerBT-41, BT-42, BT-43BR-DE-2, -6, -7
Email formatBT-43BR-DE-4
Town and postcode of the recipientBT-52, BT-53BR-DE-8, -9
Length of a German IBANBT-84BR-DE-18
Payment means codeBT-81BR-DE-12
Delivery date or period presentBT-72 / BG-14–
Sum of the lines = net totalBT-106–
Net − discounts + charges = total netBT-109–
Net + VAT = grossBT-112–
Gross − prepaid + rounding = amount dueBT-115–

The most common reason an invoice comes back

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

Related

Check a Leitweg-ID

The check digits alone – by the official method.

To the tool

XRechnung in Levora

The same checks, before the file leaves the house.

To the feature

Invoices that do not need this check

In Levora the XRechnung comes out of the job itself – mandatory fields and Leitweg-ID are checked before the file exists.