Common Peppol and UBL Invoice Errors: Complete Troubleshooting Guide
Every Peppol invoice passes through three validation layers before delivery. If any rule fails, the document is rejected. This guide covers every common error category with causes, examples, and fixes.
You built your UBL XML, sent it to the Peppol network, and got an error back. The message mentions a rule code like PEPPOL-EN16931-R004 or BR-27 but does not tell you what went wrong in plain language. This guide does.
How Peppol validation works
Every Peppol invoice is validated against three layers before it reaches the recipient. Each layer checks different things. An invoice must pass all three to be delivered.
XML Schema Validation
Checks that your XML is well-formed and follows the UBL 2.1 schema. Missing required elements, wrong element order, or invalid data types trigger schema errors. These are the most basic errors and the easiest to fix.
CEN Business Rules (EN16931)
The European standard EN16931 defines business rules that ensure semantic correctness. Rules prefixed with BR- are mandatory business rules. BR-CO- rules check calculations. BR-CL- rules validate code list values.
Peppol BIS Rules
Peppol adds its own rules on top of EN16931. Rules prefixed with PEPPOL-EN16931- are Peppol-specific restrictions. These are the strictest layer and catch issues like tax rounding differences and Peppol-specific field requirements.
When your access point returns an error, the error message includes the rule code. That code tells you exactly which layer and which rule failed. Find your error category below for the fix.
Peppol network errors (error codes 1xx)
These errors come from your Peppol access point, not from the validation rules themselves. They indicate problems with the transmission: sender identity mismatches, schematron failures, or recipient lookup issues. The error code is a number (like 103, 106) returned by the access point.
Tax and calculation errors
Tax calculation errors are the single most frequent cause of Peppol invoice rejections. The rules are strict: tax amounts must match exactly, with specific rounding tolerances. Even a one-cent difference can trigger a rejection.
BR-CO-13Invoice total with VAT mismatch
The invoice total with VAT (BT-112) does not equal the invoice total without VAT (BT-109) plus the invoice total VAT amount (BT-110) minus the prepaid amount. Check your totals calculation.
BR-CO-15Line extension amount calculation error
The invoice line net amount does not equal the invoiced quantity multiplied by the item net price, adjusted for line-level allowances and charges. Verify your line item calculations.
Business rule violations (BR-xx)
Business rules from the EN16931 standard enforce the structure and content of invoices. These rules check that mandatory fields are present, amounts have correct signs, and document references are valid.
BR-27Item net price shall NOT be negative
The unit price (BT-146) of an invoice line item is negative. Unit prices must always be positive. If you need to credit, use a credit note (type 381) with positive amounts or a negative invoice (type 380) with negative quantities.
BR-04Invoice type code is mandatory
Every invoice must have an InvoiceTypeCode (BT-3). Common values: 380 (commercial invoice), 381 (credit note), 389 (self-billing invoice). Missing this field means the receiving system cannot determine how to process the document.
BR-DE-15Buyer reference (BT-10) is required (Germany)
For invoices sent to German recipients, the Buyer Reference (BT-10) field is mandatory. This is a German CIUS (Country-specific Implementation Standard) rule. The Leitweg-ID is commonly used as the buyer reference for public sector invoices.
Code list errors (BR-CL-xx)
Code list rules validate that identifiers, unit codes, currency codes, and country codes use values from the official reference lists. Using an invalid or outdated code triggers these errors.
BR-CL-25Endpoint identifier scheme not in CEF EAS code list
The endpoint identifier scheme (like 0208 for Belgium, 0007 for Sweden) is not in the CEF EAS code list. Check that you are using the correct scheme ID for the recipient's country.
BR-CL-23Invalid unit code
The unit code must be from the UN/ECE Recommendation 20 with Rec 21 extension. Common valid codes: EA (each), HUR (hour), DAY (day), MON (month), KGM (kilogram), MTR (metre), LTR (litre). Check that your unit codes match the official list.
Format and structure errors
These errors relate to the XML structure itself: empty elements, missing attachments, incorrect date formats, or PDF/A compliance issues for embedded documents.
Validate before you send
Catch all these errors before your invoice reaches the Peppol network. The e-invoice.be Peppol Validator checks your UBL XML against all three validation layers and shows exactly which rules fail, with explanations.
Related guides
UBL Format Guide
Understand the Peppol invoice XML structure, elements, and field requirements.
Credit Note Negative Amounts
Why Peppol credit notes require positive amounts and how to fix BR-27 errors.
Best Peppol Validation Tools
Compare free and paid tools for validating Peppol invoices before sending.
XML Invoicing Guide
What is XML invoicing and how does it compare to PDF and EDI?
Frequently asked questions
What are the most common Peppol validation errors?
The most common Peppol validation errors are schematron validation failures (error code 106), tax calculation mismatches (EN16931-R004), missing or invalid tax category codes, empty XML elements (EN16931-R008), and sender identifier mismatches (error code 103). Most errors fall into three categories: business rule violations (BR-xx), CEN semantic rules (EN16931-Rxx), and Peppol network errors (code 1xx).
How do I validate a Peppol invoice before sending?
Use a Peppol validation tool to check your invoice against all three validation layers: XML schema validation (correct structure), CEN business rules (EN16931 compliance), and Peppol BIS rules (network-specific requirements). e-invoice.be offers a free online Peppol Validator that checks all layers and shows exactly which rules fail.
What is a schematron validation error in Peppol?
A schematron validation error means your UBL XML invoice fails one or more business rules defined in the Peppol BIS Billing 3.0 schematron files. These rules check semantic correctness: tax calculations, mandatory fields, code list values, and cross-field consistency. Error code 106 from your access point indicates a schematron failure.
What is the difference between BR, EN16931, and PEPPOL rules?
BR rules (like BR-27, BR-04) are business rules from the EN16931 European standard that apply to all e-invoices. EN16931-R rules are additional CEN semantic rules. PEPPOL rules (like PEPPOL-EN16931-R004) are Peppol-specific restrictions layered on top. An invoice must pass all three layers to be accepted on the Peppol network.
Why was my Peppol invoice rejected?
Peppol invoices are validated at three levels before delivery: XML schema, CEN business rules, and Peppol BIS rules. If any rule fails, your access point rejects the document and returns an error code with the specific rule that failed. Check the error code against the guides on this page to find the exact cause and fix.
Can I test Peppol invoice validation without sending?
Yes. Use the e-invoice.be Peppol Validator to validate your UBL XML against all Peppol BIS Billing 3.0 rules without sending. The API also supports validation-only mode. This lets you catch and fix errors before they reach the network.