What is UBL?
UBL, the Universal Business Language, is an OASIS standard (and ISO/IEC 19845) defining XML vocabularies for business documents: invoices, credit notes, orders, despatch advices, and dozens more. For e-invoicing, two of those document types matter: Invoice and CreditNote. Unlike the hybrid ZUGFeRD and Factur-X formats, a UBL invoice is pure XML with no PDF layer: it is written for machines first.
That machine-first design is why UBL dominates network-based e-invoicing: it is the syntax of Peppol BIS Billing 3.0, the standard document exchanged across the Peppol network, and the default choice in the Netherlands, Belgium, the Nordics, and a growing list of countries beyond Europe.
UBL, EN 16931, and Peppol BIS 3.0
Three layers stack on top of each other. UBL 2.1 provides the XML vocabulary. EN 16931, the European e-invoicing norm, defines which fields an invoice must carry and over 200 business rules connecting them. Peppol BIS Billing 3.0 is a usage specification (CIUS) of that norm: it narrows EN 16931 further with network-specific rules, such as valid endpoint identifier schemes and country-specific checks. The declaration lives at the top of every file:
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
Those two lines tell every receiving platform which rulebook to validate against. Get them wrong and a perfectly sensible invoice bounces.
Inside a UBL invoice
The structure is flat and readable once you know the blocks: supplier and customer parties (each with an EndpointID for network delivery, a legal registration, and a VAT number), payment means with IBAN, a tax breakdown per VAT category, document totals, and one InvoiceLine per item. Two details routinely trip up newcomers: credit notes use a separate CreditNote root element rather than a type code alone, and endpoint identifiers must use a registered scheme (a real GS1 GLN, a VAT number scheme, or a national business register) because Peppol validates their format.
UBL or CII: the two EN 16931 syntaxes
EN 16931 permits two XML syntaxes: UBL and UN/CEFACT CII. They carry the same data model, so conversion between them is lossless for the core invoice. CII is the syntax embedded in ZUGFeRD and Factur-X hybrid PDFs; UBL is the syntax of the Peppol network. Which one you need is decided by your recipient, and converting is a solved problem:
Sample files to download
All files below were generated and validated with the tools on this site; the data is fictitious. Use them to test parsers, validators, viewers, and Peppol onboarding.