LedgerdropValidator

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.

Drop an invoice here, or click to choose

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:

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.