UBL Format Explorer

Interactive UBL 2.1 invoice schema reference. Browse the XML tree structure, see Peppol BIS 3.0 requirements, and copy XPaths.

177 elements55 Peppol required

Select an element

Click any element in the tree to see its details, XML path, and Peppol requirements.

Build with the Peppol API

Send and receive UBL 2.1 invoices via our REST API. No XML assembly required.

What is UBL?

UBL stands for Universal Business Language. It is an open, royalty-free XML-based standard maintained by OASIS for electronic business documents such as invoices, credit notes, orders, and despatch advices. UBL 2.1 is the version used by Peppol BIS Billing 3.0, the dominant e-invoicing standard across Europe.

A UBL invoice uses two XML namespace prefixes: cbc (Common Basic Components) for simple data elements like dates and amounts, and cac (Common Aggregate Components) for complex structures like addresses and parties. The root element is always <Invoice> with the UBL 2.1 namespace.

UBL 2.1 and Peppol BIS 3.0

UBL 2.1 (OASIS)

The base XML schema that defines all possible invoice elements. UBL 2.1 is very broad and supports many optional fields.

Peppol BIS 3.0

A subset (CIUS) of UBL 2.1 tailored for cross-border invoicing. Peppol makes some optional UBL fields mandatory and restricts allowed values.

This explorer shows the Peppol BIS 3.0 requirements for each element. Fields marked as "Peppol Required" must be present in every Peppol invoice. Fields without the Peppol indicator are valid UBL but not required by the Peppol network.

Key business groups explained

BG-4 Seller & BG-7 Buyer

The two core parties on every invoice. Each contains legal name, address, VAT identifier, and Peppol endpoint ID. Both are mandatory in Peppol.

BG-22 Document Totals

The monetary summary of the invoice. Includes line extension amount (sum of lines), tax exclusive amount, tax inclusive amount, and the final payable amount.

BG-23 VAT Breakdown

One entry per VAT category and rate combination. Each subtotal shows the taxable amount, tax amount, category code, and percentage. Required for every invoice.

BG-25 Invoice Line

Every invoice needs at least one line. Each line contains the item name, quantity with unit code, net amount, price, and VAT classification. Line IDs must be unique within the invoice.

How to read UBL XML

1

Understand the namespace prefixes

cbc: elements contain simple values (text, dates, amounts, codes). cac: elements are containers that group related cbc: elements together. The root Invoice element has no prefix.

2

Read cardinality indicators

[1..1] means exactly one occurrence is required. [0..1] means the element is optional. [0..n] or [1..n] means the element can repeat. Peppol may make optional fields mandatory.

3

Map to EN 16931 business terms

Each UBL element maps to an EN 16931 business term (BT-xx) or business group (BG-xx). Use this mapping to understand the semantic meaning of each field. BTs are leaf-level data, BGs are containers.

100% client-side. No data collected.

This tool is a static reference that runs entirely in your browser. No data is sent to any server. No cookies, no tracking, no account required. Bookmark it and use it anytime.

Frequently asked questions

What is UBL format?

UBL (Universal Business Language) is an XML-based open standard for business documents. For e-invoicing, UBL 2.1 defines the structure of an invoice in XML, including elements for parties, line items, taxes, and totals. It is the format used by Peppol and is mandatory for B2B e-invoicing in Belgium since January 2026.

What is the difference between UBL 2.1 and Peppol BIS 3.0?

UBL 2.1 is the full XML schema with many optional elements. Peppol BIS 3.0 is a CIUS (Core Invoice Usage Specification) that restricts UBL 2.1 for use on the Peppol network. It makes certain optional fields mandatory (like BuyerReference and EndpointID) and defines specific code lists and validation rules.

How does UBL relate to EN 16931?

EN 16931 defines the semantic data model for European e-invoices using business terms (BT-xx) and business groups (BG-xx). UBL 2.1 is one of two official XML syntaxes for expressing this model. Each EN 16931 business term maps to a specific XPath in UBL. The other syntax is CII (Cross Industry Invoice), used by ZUGFeRD and Factur-X.

What are cbc: and cac: namespace prefixes?

In UBL XML, cbc: stands for Common Basic Components and contains simple values like text, dates, amounts, and codes. cac: stands for Common Aggregate Components and groups related elements together (e.g., cac:PostalAddress contains cbc:StreetName, cbc:CityName, etc.). This separation keeps the schema organized and reusable.

What fields are mandatory in a Peppol invoice?

Key mandatory fields include: CustomizationID (BT-24), ProfileID (BT-23), Invoice ID (BT-1), IssueDate (BT-2), InvoiceTypeCode (BT-3), DocumentCurrencyCode (BT-5), BuyerReference (BT-10), seller and buyer details with EndpointID, at least one InvoiceLine, TaxTotal, and all LegalMonetaryTotal amounts. Use the "Peppol Required" filter in this explorer to see the complete list.

Can I use this explorer for credit notes?

UBL credit notes use a separate root element (CreditNote instead of Invoice) with slightly different element names (e.g., CreditedQuantity instead of InvoicedQuantity). However, the overall structure is nearly identical. This explorer covers the Invoice document type. Most fields and their Peppol requirements apply equally to credit notes.

How do I validate a UBL invoice?

UBL validation happens in layers. First, the XML must be well-formed and valid against the UBL 2.1 XSD schema. Second, Peppol BIS 3.0 adds Schematron business rules (e.g., amounts must add up, required fields must be present). Use our Peppol Invoice Viewer to upload and validate your UBL XML files.

Is UBL the same across all European countries?

The base UBL 2.1 schema is the same everywhere. However, each country may apply a CIUS (Core Invoice Usage Specification) that adds national rules. For example, Belgium requires Peppol BIS 3.0, Germany uses XRechnung, and the Netherlands uses NLCIUS. All are subsets of UBL 2.1 with additional constraints. An invoice valid for Peppol BIS 3.0 is accepted across all Peppol-connected countries.

Related resources

Need to send UBL invoices via Peppol? Create a free account or explore the Peppol API.

Map fields between UBL and CII with the EN 16931 Mapper. Check Peppol registration with the Peppol Radar.

UBL Format Explorer | Interactive UBL 2.1 Invoice Schema