PEPPOL (Pan-European Public Procurement Online) is a network and framework designed to facilitate standardized e-invoicing, procurement, and electronic document exchange across borders, particularly for the public sector in Europe. It ensures that documents like invoices, orders, and dispatch advice can be exchanged seamlessly between businesses and public entities using a common format and framework. PEPPOL is based on the Universal Business Language (UBL) and uses a four-corner model to ensure interoperability between different service providers.
PEPPOL’s document structure follows a modular approach, and each type of document (such as an invoice or order) has its specific structure built on the UBL format. It relies heavily on XML to structure the documents, making them machine-readable and adaptable to various industries.
1. Basic PEPPOL Document Structure
PEPPOL documents are primarily XML-based and follow the UBL (Universal Business Language) structure. A typical document includes three main parts:
- Header: Contains metadata about the document, such as sender, recipient, and document type.
- Body: Contains the actual transaction data, such as line items, prices, and delivery details.
- Footer: May include closing details or signatures.
The document is enclosed in a standard XML format that follows the UBL schema, ensuring that it is structured uniformly for all parties.
2. PEPPOL Document Types
PEPPOL supports several types of business documents for cross-border e-procurement and e-invoicing. Some of the common PEPPOL document types include:
- Invoice: An e-invoice issued from a supplier to a buyer.
- Order: A purchase order sent by a buyer to a supplier.
- Despatch Advice: A shipping notification detailing what is being shipped.
- Order Response: A confirmation or rejection of a purchase order.
- Catalogue: A structured product or service listing.
3. Structure of a PEPPOL Invoice (Example)
3.1 Header Section
The header section of a PEPPOL document includes basic information about the document itself, such as the invoice number, the date of issue, the parties involved, and relevant references.
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:ID>INV001</cbc:ID>
<cbc:IssueDate>2024-08-14</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:Name>Supplier Name</cbc:Name>
<cac:PostalAddress>
<cbc:StreetName>Main Street</cbc:StreetName>
<cbc:CityName>Berlin</cbc:CityName>
<cbc:PostalZone>10001</cbc:PostalZone>
<cbc:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cbc:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:Name>Buyer Name</cbc:Name>
<cac:PostalAddress>
<cbc:StreetName>Buyer Street</cbc:StreetName>
<cbc:CityName>Paris</cbc:CityName>
<cbc:PostalZone>75001</cbc:PostalZone>
<cbc:Country>
<cbc:IdentificationCode>FR</cbc:IdentificationCode>
</cbc:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingCustomerParty>
</Invoice>
<cbc:ID>
: Invoice identification number (unique).<cbc:IssueDate>
: The date when the invoice was issued.<cbc:InvoiceTypeCode>
: A code that identifies the type of document (380 for invoices).
3.2 Body Section
The body contains the actual transaction data, including line items, quantities, prices, taxes, and payment details.
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity>10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Product A</cbc:Name>
<cbc:Description>Description of Product A</cbc:Description>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">20.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">40.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">40.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>VAT</cbc:ID>
<cbc:Percent>20</cbc:Percent>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cbc:InvoicedQuantity>
: The quantity being invoiced.<cbc:LineExtensionAmount>
: The total amount for the line item (quantity x unit price).<cbc:PriceAmount>
: The unit price for the item.<cbc:TaxAmount>
: The total tax amount for the invoice.
3.3 Footer Section
The footer may contain summary information, such as totals for the invoice, the currency used, and payment terms.
<cbc:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">240.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">240.00</cbc:PayableAmount>
</cbc:LegalMonetaryTotal>
<cac:PaymentMeans>
<cbc:PaymentDueDate>2024-09-14</cbc:PaymentDueDate>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
</cac:PaymentMeans>
<cbc:PayableAmount>
: The total amount that is payable, including taxes.<cbc:PaymentDueDate>
: The date by which payment is due.
4. PEPPOL and UBL Compliance
PEPPOL documents are built on UBL 2.1, which is a globally accepted XML format for electronic documents. This ensures compatibility across various systems, regardless of the software used by either party. PEPPOL’s specifications for each document type provide detailed rules on how to implement UBL for e-procurement processes, ensuring that the structure is followed consistently.
5. Four-Corner Model
The PEPPOL network uses a four-corner model to facilitate interoperability. This model involves:
- Sender: The company or public entity sending the document.
- Sender's Access Point: The service provider or system that sends the document on behalf of the sender.
- Receiver's Access Point: The service provider or system that receives the document on behalf of the receiver.
- Receiver: The recipient of the document.
This model ensures that documents can be sent and received across different systems and countries without compatibility issues, as long as both parties are connected to the PEPPOL network through their access points.