Troubleshooting

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.

Tom Van AsbroeckApril 202615 min read
Last updated: April 2026

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.

1

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.

2

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.

3

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.

Error 106|Schematron Validation Error

The most common Peppol error. Your XML document fails one or more business rules in the Peppol BIS schematron files. The error response includes the specific rule that failed.

Error 103|Sender Identifier Mismatch

The sender Peppol ID in your access point configuration does not match the sender identifier in the UBL document. The document is rejected before validation.

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.

PEPPOL-EN16931-R004

Tax amount mismatch

The total tax amount does not equal the sum of individual tax category amounts. Often caused by rounding errors when calculating VAT on multiple line items. Peppol allows a tolerance of €0.02 per tax category.

BR-CO-13

Invoice 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-15

Line 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-27

Item 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-04

Invoice 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-15

Buyer 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-25

Endpoint 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-23

Invalid 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.

EN16931-R008

Document must not contain empty elements

Your XML contains elements with no content. Peppol requires that if an element is present, it must have a value. Remove empty elements or add the required content.

PDF/A

Invoices must be in PDF/A format with embedded XML

When attaching a PDF representation to a Peppol invoice, the PDF must comply with PDF/A (ISO 19005) format. Regular PDFs are rejected. This is required for hybrid invoice formats like Factur-X and ZUGFeRD.

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

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.

Common Peppol and UBL Invoice Errors: Complete Troubleshooting Guide | e-invoice.be