UBL — Universal Business Language
The universal XML library of business documents: invoice, order, despatch advice, catalogue… One royalty-free grammar underpinning PEPPOL, the European EN 16931 standard and the majority of national e-invoicing systems.
What is UBL?
UBL (Universal Business Language) is a library of XML business documents standardised by OASIS. Where EDIFACT and X12 describe segment-based messages, UBL describes XML documents with an explicit, readable vocabulary. Its original goal: to provide a royalty-free set of documents, reusable across sectors and countries, to replace the proprietary formats of early e-commerce.
UBL is not limited to the invoice. The library covers the entire procure-to-pay and order-to-cash process: catalogue, quotation, order, order response, despatch advice, receipt advice, invoice, credit note, statement, reminder… Each document is an independent XSD schema, but all share the same elementary building blocks.
The two namespaces: cbc and cac
UBL's coherence rests on two namespaces reused by every document:
-
cbc— Common Basic Components: the simple, atomic elements (an identifier, a date, an amount, a code). Example:cbc:IssueDate,cbc:PayableAmount. -
cac— Common Aggregate Components: the composite elements that group other components (a party, an address, an invoice line). Example:cac:AccountingSupplierParty,cac:InvoiceLine.
This split makes UBL highly reusable: the cac:Party component (with its
name, address and tax identifiers) is the same in an order, a despatch advice
and an invoice. Learn the components once and you can read every document.
Anatomy of a UBL invoice
A UBL invoice is an XML file whose root is <Invoice>. The header
declares the version (cbc:UBLVersionID) and the semantic profile
(cbc:CustomizationID); then come the parties
(cac:AccountingSupplierParty / AccountingCustomerParty), the
tax and monetary totals, and finally the line items.
<?xml version="1.0" encoding="UTF-8"?>
<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:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
<cbc:ID>F-2026-00187</cbc:ID>
<cbc:IssueDate>2026-06-23</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyName><cbc:Name>Atelier Marchand SARL</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:CityName>Lyon</cbc:CityName>
<cac:Country><cbc:IdentificationCode>FR</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyName><cbc:Name>Northern Textile Co-op</cbc:Name></cac:PartyName>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">432.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">2160.00</cbc:LineExtensionAmount>
<cbc:PayableAmount currencyID="EUR">2592.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="MTR">120</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">2160.00</cbc:LineExtensionAmount>
<cac:Item><cbc:Name>Unbleached canvas 220 g/m²</cbc:Name></cac:Item>
<cac:Price><cbc:PriceAmount currencyID="EUR">18.00</cbc:PriceAmount></cac:Price>
</cac:InvoiceLine>
</Invoice>
The two namespaces appear everywhere: cbc for simple values,
cac for groupings. A currencyID attribute qualifies each
amount, and each line (cac:InvoiceLine) carries its quantity, its item
(cac:Item) and its unit price.
The document library
The most widely used UBL documents across the commercial chain:
| UBL document | Role | EDIFACT equivalent |
|---|---|---|
| Catalogue | Product / price catalogue | PRICAT |
| Order | Purchase order | ORDERS |
| OrderResponse | Order response (acceptance / change) | ORDRSP |
| DespatchAdvice | Despatch advice | DESADV |
| ReceiptAdvice | Goods receipt acknowledgement | RECADV |
| Invoice | Invoice | INVOIC |
| CreditNote | Credit note | INVOIC (type 381) |
| Statement | Account statement | STATAC |
| ApplicationResponse | Business status of a received document | APERAK / CONTRL |
CustomizationID, CIUS and extensions
UBL is deliberately permissive: most of its elements are optional. For
an exchange to be genuinely interoperable, UBL is restricted via a
CIUS (Core Invoice Usage Specification) or an
extension, signalled by cbc:CustomizationID:
- EN 16931 — the European semantic core:
urn:cen.eu:en16931:2017. It mandates the required business terms (BT-*) and rules (BR-*). - PEPPOL BIS Billing 3.0 — a CIUS of EN 16931 adding the rules specific to the PEPPOL network.
- National CIUS — Serbia (SEF), Albania, the Netherlands (SI-UBL / NLCIUS), Singapore (SG PEPPOL) and Denmark (OIOUBL) each define their own UBL restriction.
Versions
| Version | Year | Addition |
|---|---|---|
| UBL 1.0 | 2004 | First documents (order, invoice). |
| UBL 2.0 | 2006 | Library expanded to ~30 documents. |
| UBL 2.1 | 2013 | ~65 documents, published as ISO/IEC 19845:2015. The reference version for European invoicing. |
| UBL 2.2 | 2018 | Procurement documents (tender, ESPD). |
| UBL 2.3 | 2021 | Additional logistics and transport documents. |
| UBL 2.4 | 2024 | Sector extensions; backward-compatible with 2.1. |
In practice, the overwhelming majority of 2026 e-invoicing integrations target UBL 2.1, because that is the version EN 16931 and PEPPOL BIS are aligned to.
UBL in its ecosystem
UBL provides the syntax; other layers provide meaning and transport:
- Semantics: EN 16931 defines the business terms and rules the UBL XML must satisfy.
- Network: PEPPOL carries UBL documents over AS4 on its four-corner network.
- CII alternative: Factur-X / ZUGFeRD uses the UN/CEFACT CII syntax rather than UBL for the same EN 16931 model.
- Validation: the PEPPOL validator checks a UBL file against the EN 16931 / PEPPOL rules.
Further reading
- UBL 2.1 — OASIS Open Standard (published 2013, copyright OASIS Open).
- ISO/IEC 19845:2015 — the ISO transposition of UBL 2.1.
- PEPPOL BIS Billing 3.0 — the most widely deployed European implementation of UBL.