Guides › Peppol validation errors explained
Peppol validation errors explained
Updated: 1 November 2026 · Klik&Shop
Is your UBL invoice rejected by a portal, accounting package or Access Point? The error message almost always contains a rule code. Below are the most common codes, what they mean and how to fix them.
How to read an error code
The code tells you which rule set found the error:
- Schema error (XSD): the XML file does not have the right structure, e.g. elements in the wrong order or a typo in a name.
- BR-…: rules from the European standard EN 16931 (e.g. BR-CO-15 for totals, BR-S-… for standard-rated VAT, BR-AE-… for reverse charge).
- PEPPOL-EN16931-…: additional Peppol BIS Billing 3.0 rules.
- NL-R-…: Dutch rules within Peppol BIS 3, only for suppliers in the Netherlands.
Errors with level fatal must be fixed; a warning usually does not block, but fix it if you can.
The most common errors
| Code | What is wrong? | Fix |
|---|---|---|
PEPPOL-EN16931-R003 | Buyer reference or order reference missing. | Fill in cbc:BuyerReference or cac:OrderReference/cbc:ID. |
PEPPOL-EN16931-R020 / R010 | Seller (R020) or buyer (R010) electronic address missing. | Add cbc:EndpointID with schemeID, e.g. 0106 (KvK) or 0208 (KBO). |
BR-CO-10 / BR-CO-13 | Sum of line amounts or total excl. VAT is wrong. | Re-add the line amounts; subtract document-level allowances and add charges. |
BR-CO-15 / BR-CO-16 | Total incl. VAT or amount due is wrong. | Total incl. = total excl. + VAT total; amount due = total incl. − prepaid + rounding. |
BR-S-08 / BR-S-09 / BR-CO-17 | VAT breakdown per rate is wrong. | Create one VAT breakdown entry per rate: taxable amount = sum of lines at that rate, VAT = taxable × rate, rounded to 2 decimals. |
PEPPOL-EN16931-R120 | Line amount ≠ quantity × price. | Check quantity, price, base quantity and line allowances; do not compute from already-rounded intermediate values. |
BR-DEC-23 e.a. | Too many decimals. | Amounts may have at most 2 decimals. |
BR-AE-02 / BR-AE-10 | Reverse charge without VAT numbers or reason. | Include seller and buyer VAT numbers and an exemption reason (e.g. VATEX-EU-AE). |
BR-CO-09 | VAT number without country prefix. | Start the VAT number with the country code, e.g. NL… or BE…. |
BR-61 | IBAN missing for credit transfer. | Fill cac:PayeeFinancialAccount/cbc:ID with your IBAN. |
BR-CO-25 | Positive amount due without due date or payment terms. | Add cbc:DueDate or cac:PaymentTerms. |
NL-R-003 | Dutch supplier: legal identifier is not KvK or OIN. | Use schemeID 0106 (KvK) or 0190 (OIN) for the legal entity identifier. |
NL-R-001 | Dutch credit note without invoice reference. | Add cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID. |
NL-R-007 | Dutch supplier without payment means. | Add cac:PaymentMeans (e.g. code 58 SEPA credit transfer with IBAN). |
PEPPOL-EN16931-R051 | Different currencies in one invoice. | All currencyID attributes equal to the invoice currency (e.g. EUR). |
BR-CL-23 | Unknown unit code. | Use a UN/ECE Rec 20 code, e.g. C62 (piece), HUR (hour), DAY (day), KGM (kg). |
PEPPOL-EN16931-F001 | Date in wrong format. | Write dates as YYYY-MM-DD, e.g. 2026-11-01. |
Find all errors quickly
Paste or upload your XML in the free validator. It runs the full official check (UBL schema, CEN EN 16931 and Peppol BIS 3.0.21) in your own browser and explains each error. You can also check invoices automatically through the API.
Want to avoid calculation errors altogether? Let the web form or the API calculate totals and the VAT breakdown; see also How to create a UBL invoice.
FAQ
Why does my customer reject the invoice while my software says it is valid?
Software sometimes checks an older version of the rules or only the schema. Validate against the current Peppol BIS 3 rules; the receiver may also have extra requirements, such as a mandatory order number.
What is the difference between fatal and warning?
A fatal error means the invoice does not comply and will usually be rejected. A warning is a recommendation; the invoice is usually accepted.
Do NL-R rules apply to Belgian suppliers?
No. NL-R rules only apply when the supplier is established in the Netherlands (country code NL in the seller address).
Why do I get rounding errors?
Usually because amounts were computed with more than 2 decimals or from already-rounded intermediate values. Calculate per line, round to 2 decimals, then add up.
Create or check a Peppol e-invoice yourself
Create 2 invoices for free with the web form, validate without limits in your browser, or automate with the API (5 free a month).
Not tax or legal advice. This article gives general information based on public sources (as of 1 November 2026). Rules can change; check your own situation with the tax authority (Belastingdienst, Belgian FPS Finance at efactuur.belgium.be) or your accountant.