01 — Why it matters
Why a supplier should care
An invoice that does not meet the requirements can leave your customer unable to deduct the input VAT — so it comes back to you, often weeks later, and gets paid weeks after that. Since 2025 the receiving side is increasingly automated: a rule violation is no longer a person's judgement call, it is a machine rejecting the file.
Check digits are verified offline: a VAT identifier carries its own check digit, so a typo can be caught without asking anyone. Germany, Italy, the Netherlands, Belgium, France, Poland and Romania are covered; anything else — or an older identifier containing letters — is left alone rather than guessed at. A wrong number means the customer will not find you in VIES and cannot deduct.
One national rule is included: BR-DE-15 — an XRechnung needs a Leitweg-ID (BT-10). EN 16931 does not require that field, so a pure EN validator passes the invoice while the German public-sector platform rejects it before anyone reads it. It is the most common rejection reason in Germany.
Factur-X MINIMUM and BASIC WL are reported as such, not as broken. Those two French gateway profiles carry header totals only and are not EN 16931 invoices by design — running the rules against them would put six red lines on a perfectly valid invoice.
Rules that depend on code lists or on national extensions (CIUS) are not implemented. A clean result here means those rules were not checked, not that they pass. For a legally binding statement, use your national validator.
| BR-01 … BR-16 | Mandatory fields. Specification identifier, invoice number and date, type and currency code, both parties with a postal address and country, the totals, and at least one invoice line. |
| BR-CO-10, 13 … 16 BR-CO-18, 25, 26 BR-S-08, BR-S-09 | Arithmetic. Line amounts must sum to the line total, allowances and charges must reconcile, the VAT breakdown must add up, the amount due must follow from the total less prepayments, and the tax at each rate must be that rate applied to that base. |
| BR-CO-09 BR-DEC-12, BR-64 | Form. A VAT identifier must start with its country code — the single most common rejection, because systems store the national number and write it out without the DE or IT. Monetary amounts carry at most two decimals, and every line needs an item name. |
What it reads
Peppol BIS Billing 3.0 (UBL), XRechnung in both its UBL and CII forms, Factur-X and ZUGFeRD
PDFs — including ZUGFeRD 1.0 from 2014 — Italian FatturaPA including signed
.p7m, Spanish Facturae and .xsig, Polish KSeF FA(3) and FA(2),
and Romanian e-Factura. Drop a ZIP, an .eml or an Outlook .msg
and the invoices inside are pulled out.
Nothing is uploaded
The check runs in your browser. Open the Network panel while you drop a file: there is no request. Disconnect from the network and it still works — that is the simplest proof. There is no account and no server to keep your invoices on.
Reading a folder of invoices instead of one? The main tool turns a batch into one spreadsheet, checks these same rules on every invoice, and finds duplicates.
Invoices out of Shopware 6?
We are weighing whether a plugin makes sense — one that checks outgoing invoices against these same rules inside the shop, before they leave. It does not exist yet. If you would use one, send us a line: which Shopware version, roughly how many invoices a month, and whether you are an agency or a merchant. This page counts no clicks and tracks nothing — an email is the only way we would find out.