Introduction to Peppol BIS 3.0
Peppol BIS (Business Interoperability Specification) 3.0 is the definitive implementation guide for exchanging business documents over the Peppol network. It ensures that an invoice sent from a software provider in Norway can be processed automatically by an ERP in Greece.
Scope
BIS 3.0 covers the entire procurement cycle, but the Billing profile (Invoice & Credit Note) is the most widely implemented.Document Structure (UBL 2.1)
BIS 3.0 uses Universal Business Language (UBL) 2.1. Below are critical snippets for compliance.
The Header
Every invoice requires specific IDs and codes.urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
INV-2024-001
2024-12-05
380
EUR
Credit Notes vs Invoices
For a Credit Note, change the Type Code and provide a reference to the original invoice:381
INV-ORIGINAL-123
2024-11-01
Validation Architecture
Peppol uses a "Schematron" based validation stack. It happens in layers:
CUP code for public contracts.Troubleshooting Common Errors
When your invoice is rejected, it is usually due to one of these common BIS 3.0 violations:
| Error Code | Description | Fix |
| PEPPOL-EN16931-R001 | BusinessProcessType must be provided | Ensure ProfileID is correct. |
| BR-CO-15 | Invoice total amount with VAT is invalid | Check your math: NetAmount + TaxAmount must equal GrossAmount exactly (to 2 decimals). |
| BR-S-08 | VAT category code is missing | Every line item must have a Tax Category (S, Z, E, AE, etc.). |
| BR-CL-10 | Invalid Unit Code | Use UN/ECE Recommendation 20 codes (e.g., C62 for units, H87 for pieces). |
Best Practices for Developers
BigDecimal or integer-based cents to avoid rounding errors that trigger BR-CO-15.