Peppol is an international open B2B network that enables organizations to exchange structured business documents such as orders and invoices efficiently.
Understanding Peppol’s technical specifications and implementation process is critical for developers to build robust systems that enhance organizational efficiency. This guide outlines key concepts and technical guidance for developers to get started with electronic orders using Peppol.
What is Peppol?
Peppol (Pan-European Public Procurement Online) is a framework that standardizes electronic document exchange between businesses and public organizations. It is not an ERP system, portal, or procurement platform but a protocol enabling interoperability between different systems.
Peppol uses the four-corner model, meaning each organization connects to the network through its chosen Peppol Access Point provider, removing the need to align service providers with business partners.
The key features of Peppol are:
- Standardization: A common language for business documents across industries.
- Interoperability: Compatibility between systems worldwide.
- Scalability: Easily connect with new partners without additional development.
Peppol offers developers a framework to integrate structured electronic order processing into existing business processes.
Getting started with Peppol order
Implementing electronic orders in Peppol involves understanding its Business Interoperability Specifications (BIS), message syntax, and data exchange requirements.
Here’s a breakdown of the core six steps and their technical considerations.
1. Understanding the basic elements
Developers implementing Peppol invoices must understand how to properly populate cbc elements according to the Peppol BIS guidelines to ensure document compliance and successful transmission.
In the context of Peppol and the UBL (Universal Business Language) syntax for invoices, cbc stands for Common Basic Components. These predefined data elements within the UBL schema represent basic, reusable building blocks of business documents such as invoices, orders, and despatch advice messages.
Key features of cbc elements
- Simple data types: cbc elements are typically atomic and represent simple data such as text, numeric values, dates, or codes.
- Basic information: They capture essential, straightforward data points like identifiers, dates, monetary amounts, or descriptions.
- Reusability: These components are designed to be reusable across different UBL document types.
2. Choose Peppol BIS profile for orders
Peppol supports three primary specifications, also called profiles, for order processes. Each BIS is designed for specific use cases, and business partners must agree on which to use.
BIS Order Only: For simple order submissions without supplier response.
BIS Ordering: Includes order responses to confirm acceptance, rejection, or partial acceptance.
BIS Despatch Advice: Informs the buyer about shipment details.
3. Understand the Peppol order syntax
The Peppol Order transaction (T01) follows the UBL (Universal Business Language) standard.
To implement Peppol effectively, developers need a thorough understanding of how to populate cbc elements in line with Peppol BIS guidelines, ensuring both compliance and smooth transmission. Adhering to the required syntax for all document elements is essential, as deviations from Peppol’s validation rules can lead to errors that disrupt the order process.
Here are a few examples of core elements for order documents:
UBL element | Description |
cbc:ID | A unique order identifier. |
cbc:OrderTypeCode | Specifies the order type, such as a purchase order. |
cbc:DocumentCurrencyCode | Denotes the currency (e.g., “EUR”). |
cac:ValidityPeriod | Indicates the order’s expiration date. |
Characteristics of cbc elements
Data Representation: cbc elements typically represent single data fields, making them straightforward to use and validate.
Attributes: Some cbc elements include attributes like currencyID (for amounts) or unitCode (for quantities).
Mandatory/optional: The Peppol BIS (Business Interoperability Specification) guidelines specify which cbc elements are mandatory, optional, or conditionally required.
Comparison to cac (Common Aggregate Components)
While cbc represents basic components, cac (Common Aggregate Components) is used for complex data structures that group related cbc and other cac elements. For example, cac:Party groups all information about a business entity, such as its name, address, and identifiers.
For more details on specific cbc elements used in Peppol UBL ordering, see the official Peppol BIS Ordering documentation.
3. Integrate with a Peppol Access Point
Peppol transactions are distributed through certified Peppol Access Points, also called Peppol Service Providers. As a developer, your application must connect to a provider’s API to transmit and receive documents. Access Points handle the technical complexities of routing messages to and from trading partners.
Learn more about accessing Peppol orders through Order API.
4. Implement validation and error handling
Validation ensures compliance with Peppol’s rules and BIS requirements. Implement robust validation checks to identify errors before transmission. For example, check mandatory fields such as cbc:ID
and cbc:DocumentCurrencyCode
. Validate data formats, including dates, currencies, and identifiers.
Format validations are built-in and automated for users of Qvalia’s Peppol Access Point.
5. Test in a sandbox environment
Before deploying your solution, test the integration in a sandbox environment provided by your Access Point provider. This allows you to simulate various scenarios, such as submitting orders, receiving responses, and managing despatch advice messages.
Technical insights: Structure of Peppol orders
Peppol orders rely on XML-based UBL schemas. Below is a brief overview of critical elements in the order structure:
Document header
The header contains critical metadata about the order.
UBL element | Description |
<cbc:ID> | A unique identifier for the order document (e.g., “1234567”). |
<cbc:IssueDate> | The date the order document was issued (e.g., “2024-08-14”). |
<cbc:OrderTypeCode> | Indicates the type of order, where “220” typically represents a purchase order. |
<cbc:DocumentCurrencyCode> | Specifies the currency used in the order document (e.g., “EUR”). |
Buyer and seller information
The buyer and seller are defined using cac:BuyerCustomerParty and cac:SellerSupplierParty segments.
UBL element | Description |
<cac:BuyerCustomerParty> | Represents the buyer in the transaction, containing details about the customer party. |
<cac:Party> | Provides information about the buyer’s party, such as identifiers and names. |
<cbc:EndpointID schemeID=”0088″> | The electronic address of the buyer, where “schemeID” specifies the type of identifier (e.g., “GLN” in this case). |
<cac:PartyName> | Contains the trading name of the buyer. |
<cbc:Name> | Specifies the name of the buyer (e.g., “Buyer Name”). |
Order lines
Each order line specifies the items, quantities, and prices.
UBL element | Description |
<cac:OrderLine> | Represents an individual line in the order, containing details about the item and its quantity. |
<cbc:ID> | A unique identifier for the order line (e.g., “1”). |
<cbc:Quantity unitCode=”EA”> | Specifies the quantity of items in the order line, where “unitCode” defines the measurement unit (e.g., “50” units, measured in “Each”). |
<cac:Item> | Contains details about the ordered item. |
<cbc:Name> | The name or description of the item (e.g., “Product Name”). |
<cac:SellersItemIdentification> | Provides the seller’s identifier for the item. |
<cbc:ID> | The seller’s unique identifier for the product (e.g., “87654321”). |
Advanced features: Despatch advice documents
The BIS Despatch Advice specification enables suppliers to inform buyers about shipment details.
The message can include:
UBL element | Description |
<cac:DespatchAdvice> | The root element representing the entire Despatch Advice document, used to notify the recipient of the shipment details. |
<cbc:ID> | A unique identifier for the Despatch Advice document (e.g., “654321”) |
<cbc:IssueDate> | The date the Despatch Advice document was issued (e.g., “2024-08-20”) |
<cac:Delivery> | Contains details about the delivery of the shipment. |
<cac:DeliveryLocation> | Specifies the location where the shipment is to be delivered. |
<cbc:ID> (inside DeliveryLocation) | The unique identifier for the delivery location (e.g., “Warehouse ID”). |
<cbc:Name> | The name of the delivery location (e.g., “Warehouse Name”). |
Best practices for developers
Follow Peppol BIS guidelines: Always adhere to the official Peppol BIS documentation to ensure compliance.
Handle local variations: While Peppol is a global standard, some sectors or regions may require specific adaptations.
Automate validation: Implement automated checks for syntax and content compliance before transmission.
Secure data: Ensure all transmitted data complies with GDPR and other privacy regulations.
Peppol provides a robust framework for electronic orders, enabling businesses to streamline operations and improve data accuracy. For developers, understanding the technical specifications of Peppol BIS, UBL schemas, and Access Point integration is vital in creating scalable and efficient solutions.