← Indietro

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:

text
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.1

Breaking that string apart:

SegmentMeaning
ubl:schema:xsd:Invoice-2Document is a UBL 2.x Invoice
urn:cen.eu:en16931:2017Based on EN 16931 version 2017
#compliant#This profile is compliant with the base standard
urn:fdc:peppol.eu:2017:poacc:billing:3.0Peppol BIS Billing 3.0 CIUS
::2.1UBL syntax version 2.1

The process ID for the standard billing process is:

text
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0

The Four-Corner Transport Model

Peppol uses a four-corner model to move documents between sender and receiver without a direct connection between them:

Corner 1Sender(your system)Corner 2Sender Access Point(certified provider)Corner 3Receiver Access Point(certified provider)Corner 4Receiver(buyer's system)SMP / SMLPeppol directory lookupInvoice travels C1 → C2 → C3 → C4 over AS4 protocol. SMP resolves receiver endpoint.

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 IDCountry / typeExample
0208Belgium (KBO/CBE)0208:0123456789
0088GLN (GS1 global)0088:1234567890128
0192Norway (Org number)0192:987654321
0007Sweden (Org number)0007:5560987441
0037France (SIRET)0037:12345678900012
0201Germany (Leitweg-ID)0201:991-12345678-06
9906Italy (VAT number)9906:IT01234567890
9907Italy (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:

text
urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0

If 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 elementWhy Peppol requires it
cbc:CustomizationIDIdentifies this as a BIS 3.0 document; used by access points for routing
cbc:ProfileIDIdentifies the business process (billing 01)
cac:PaymentMeans / cbc:PaymentMeansCodeMust 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

Last modified: 2026