Across Europe, sending an invoice increasingly means sending it over the Peppol network. Belgium's B2B mandate, the rollouts in France and elsewhere, and long-standing requirements in the Netherlands and the Nordics all point to the same document: a structured UBL 2.1 invoice that follows the European standard EN 16931 and the Peppol BIS Billing 3.0 rulebook. Checking the file here first means your Access Point accepts it on the first try, instead of rejecting it after you thought it was sent.
What the Peppol invoice validator checks
Three separate layers of rules apply to every UBL invoice, and a file has to clear all of them before the Peppol network, or your customer's accounting software, will take it. Peppolio runs the full stack automatically on every upload.
The UBL 2.1 structure - the document is checked against the official OASIS schemas for invoices and credit notes. This layer catches structural mistakes: required elements that are missing, elements in the wrong order, badly formatted dates, and namespace problems. Nothing else can pass until the structure is right.
The EN 16931 business rules - the layer where most invoices actually fail. More than 200 rules cross-check the content: the VAT amounts have to add up (rule BR-CO-14 insists the invoice VAT total equals the sum of the VAT category amounts), each VAT category has to be used correctly (BR-S-08 rejects a standard-rate line with a 0% rate), and core details like the seller name (BR-06), the specification identifier (BR-01), and at least one invoice line (BR-16) must be present.
The Peppol BIS Billing 3.0 rules - Peppol adds its own PEPPOL-EN16931-R checks on top of the European standard. The ones that trip people up most involve electronic addresses: seller and buyer each need an Endpoint ID with a scheme from the official Peppol code list (0088 for a GLN, 9930 for a German VAT number, and so on), and the invoice needs either a buyer reference or an order reference.
The UBL errors we see most often, in plain language
When a file fails here, it is usually one of a handful of repeat offenders. Here is what each one actually means.
BR-06 - the seller has no name
The supplier section of the invoice never states who is sending it. The fix is to fill in the registered company name (in UBL terms, cac:PartyLegalEntity/cbc:RegistrationName under AccountingSupplierParty).
BR-CO-14 - the VAT figures disagree
The invoice-level VAT total is not the sum of the per-category VAT amounts, often by a single cent of rounding. Always derive the header total from the VAT breakdown instead of calculating it separately.
PEPPOL-EN16931-R020 - the electronic address has no scheme
An EndpointID exists but its schemeID is missing or not on the Peppol Electronic Address Scheme list. Pick a registered scheme, for example 0088 (GLN), 0192 (Norwegian organisation number), or 9930 (German VAT number).
BR-S-08 - a standard-rate line at 0%
A line is marked with VAT category S (standard rate) yet carries a zero percentage. If no VAT is genuinely due, the line belongs in category Z (zero-rated) or E (exempt) instead.
Failed the check? You do not need to touch the XML
Hand-editing angle brackets is nobody's job description. Build a Peppol-ready UBL invoice with the guided form, which handles the electronic addresses and VAT breakdown for you, or turn an existing PDF invoice into UBL and run it back through this validator.
Not sure why an Access Point sits between you and your customer in the first place? Our guide to how Peppol works walks through the network, the four-corner model, and where validation fits.