Will this invoice be rejected?
Drop an invoice you are about to send. Ledgerdrop checks it against EN 16931 — the semantic standard behind XRechnung, Peppol BIS and Factur-X — and names the rules it breaks, with their numbers. Free, and the file never leaves your browser.
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.
What is checked
This is a subset of EN 16931, and saying so plainly matters more than looking thorough. Two families of rules are implemented, both of which are decidable without interpretation:
- Mandatory fields — BR-01 to BR-16: 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.
- Arithmetic — BR-CO-10, BR-CO-13 to BR-CO-16, BR-CO-18, BR-CO-25, BR-CO-26, and BR-S-08 / BR-S-09: 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.
- Form — BR-CO-09, BR-DEC-12 and BR-64: a VAT identifier must start with its country code (the single most common rejection — 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.
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.
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(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.