01 โ What actually arrives
It is a Peppol document, not a PDF
An invoice that comes in over Peppol is UBL: an XML file whose fields are defined by EN 16931, the same European semantic standard behind the German XRechnung, the Dutch SI-UBL and the Italian gateway profiles. Double-click it and you get a tree of tags; the bookkeeping needs one row per invoice with totals that add up.
That is the whole job here. Drop a folder of them โ or the ZIP your access point hands you โ and they come out as a table, with the ones that need a second look marked rather than quietly rounded.
02 โ What gets checked on the way
The rules, by number
Each invoice is held against the EN 16931 rules โ all of them are listed, with the rule number and one sentence on what the failure means in practice. A rule number is the thing you can quote back to a supplier; "it looks wrong" is not.
Two checks are arithmetic rather than opinion: an IBAN carries its own check digits (ISO 13616, mod 97-10), and so do the VAT identifiers of several member states. Where a check digit can be computed, a typo is caught here without asking anyone. Where it cannot โ Ireland's VAT number among them โ nothing is claimed, because a correct number reported as wrong is worse than no check at all.
Euro amounts, and the ones that are not
Invoices from outside the euro area arrive in their own currency, and a total is only a total within one currency. Sums are grouped by currency rather than added across โ an exchange rate guessed at export time is a number nobody can reconcile later.
Trying it
Drop files on the main page โ up to 10 invoices per export and 20 a day, free, no account, and the count resets at midnight. Pro lifts both limits for 29 โฌ once, with no renewal. To inspect a single file there is the check page.
Nothing is uploaded
The files are read in the browser. There is no server they could go to, and that is checkable in two minutes: open the developer tools, the Network tab, and drop an invoice in โ no request goes out. Or load the page, disconnect the network, and drop it anyway. It still works.
The neighbouring tools work the same way: checking one invoice against EN 16931, checking a payment file before the bank sees it, and opening a CAMT.053 or MT940 statement.