Peppol BIS 3.0: Document Identifiers, Network Transport, and Validation
Peppol is the delivery infrastructure that carries structured invoices between businesses and public authorities across Europe and beyond. Peppol BIS Billing 3.0 is the specification that defines exactly how an invoice must be structured, identified, and validated before it enters that network. This page explains the technical parts that matter most when you are converting UBL invoices and routing them through Peppol-connected systems.
What Peppol BIS 3.0 Specifies
BIS stands for Business Interoperability Specification. Peppol BIS Billing 3.0 is a CIUS — a Core Invoice Usage Specification — built on top of EN 16931. It takes the 176-field semantic model and adds Peppol-specific rules: which optional EN 16931 fields become mandatory in this network, which code lists are accepted, and which document identifiers are required for routing.
The two accepted syntaxes for Peppol BIS 3.0 are UBL 2.1 and UN/CEFACT CII. UBL is the dominant format in practice. If you are converting an invoice to send via Peppol, UBL 2.1 is the correct target format.
Document Identifiers
Every Peppol document must carry two identifiers in its envelope: a document type ID and a process ID. These are not inside the invoice XML itself — they live in the AS4 transport envelope — but they determine which validation rules apply and how the receiving access point routes the document.
The standard document type ID for a Peppol BIS 3.0 invoice is:
urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1Breaking that string apart:
| Segment | Meaning |
|---|---|
ubl:schema:xsd:Invoice-2 | Document is a UBL 2.x Invoice |
urn:cen.eu:en16931:2017 | Based on EN 16931 version 2017 |
#compliant# | This profile is compliant with the base standard |
urn:fdc:peppol.eu:2017:poacc:billing:3.0 | Peppol BIS Billing 3.0 CIUS |
::2.1 | UBL syntax version 2.1 |
The process ID for the standard billing process is:
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0The Four-Corner Transport Model
Peppol uses a four-corner model to move documents between sender and receiver without a direct connection between them:
Your system (C1) submits the invoice to your access point provider (C2). That provider looks up the receiver's access point (C3) in the Peppol SMP directory, then delivers the AS4 message. The buyer's access point (C3) passes the document to the buyer's system (C4). No direct connection between C1 and C4 is needed.
Participant Identifiers
Every Peppol participant is identified by a scheme and an ID. The most common schemes in Europe are:
| Scheme ID | Country / type | Example |
|---|---|---|
| 0208 | Belgium (KBO/CBE) | 0208:0123456789 |
| 0088 | GLN (GS1 global) | 0088:1234567890128 |
| 0192 | Norway (Org number) | 0192:987654321 |
| 0007 | Sweden (Org number) | 0007:5560987441 |
| 0037 | France (SIRET) | 0037:12345678900012 |
| 0201 | Germany (Leitweg-ID) | 0201:991-12345678-06 |
| 9906 | Italy (VAT number) | 9906:IT01234567890 |
| 9907 | Italy (Codice Fiscale) | 9907:RSSMRA80A01H501U |
Validation Layers
A Peppol BIS 3.0 invoice must pass three sequential validation layers before the receiving access point accepts it. Failing any layer means the document is rejected with an error code.
Layer 1 — XML Schema (XSD)
The basic structure of the XML file is checked against the UBL 2.1 Invoice schema. This catches missing required elements, wrong data types (a string where a date is expected), and namespace errors. XSD validation runs in milliseconds and is the first filter.
Layer 2 — EN 16931 Schematron Rules
Schematron rules check business logic across the document: does the invoice total equal the sum of line amounts? Is the VAT category code valid? Is the currency code consistent across all amount fields? There are around 80 EN 16931 Schematron rules. Violations here are the most common source of real-world conversion failures.
Layer 3 — Peppol BIS Schematron Rules
On top of EN 16931 rules, Peppol BIS 3.0 adds its own set of around 50 additional rules. These cover Peppol-specific requirements: the CustomizationID must match the BIS 3.0 identifier string exactly, the ProfileID must be present, and certain code lists (payment means codes, unit codes) must come from the approved Peppol subsets.
The required CustomizationID value in every Peppol BIS 3.0 invoice is:
urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0If this value is absent or incorrect, the document fails at the access point before any business content is checked.
UBL Fields Required by Peppol BIS 3.0 (beyond EN 16931)
| UBL element | Why Peppol requires it |
|---|---|
cbc:CustomizationID | Identifies this as a BIS 3.0 document; used by access points for routing |
cbc:ProfileID | Identifies the business process (billing 01) |
cac:PaymentMeans / cbc:PaymentMeansCode | Must use UN/ECE UNTDID 4461 codes; Peppol restricts to an approved subset |
| Seller endpoint ID (BT-34) | Peppol participant ID of the seller; required for reply routing |
| Buyer endpoint ID (BT-49) | Peppol participant ID of the buyer; required for SMP lookup |
How This Converter Relates to Peppol
This tool converts invoice files to and from UBL 2.1 — the primary Peppol syntax. It does not connect to Peppol access points or submit documents to the network. What it does is produce a UBL file that is structurally ready for Peppol submission: correct CustomizationID, ProfileID, mandatory fields present, and EN 16931 Schematron rules passing. Your access point provider handles the AS4 transport from there.
Continue Reading
- European eInvoicing Overview
- EN 16931 — semantic model and compliance
- Country formats — Italy, Germany, France, Poland
- Conversion matrix — every supported path
- implementation-guide — onboarding steps for ERP/accounting teams