UBL 2.1 Invoice Validator
Free UBL validator for UBL 2.1 invoices and credit notes. Check your XML against Peppol BIS Billing 3.0 and EN16931 schematron rules and get instant results.
Drag and drop XML invoices
or click to browse · UBL and CII / Factur-X supported
The UBL validation stack
A Peppol invoice passes through three validation layers. Understanding them helps you fix errors faster. The middle layer maps to the EN16931 business terms (BT and BG codes) that each field must satisfy.
UBL 2.1 Schema
XML structure: correct element names, namespaces, and data types. Defined by OASIS.
EN16931 Business Rules
European semantic rules covering mandatory fields, calculation checks, and tax category logic. Rules prefixed BR- and BR-CO-.
Peppol BIS 3.0 Rules
Network-specific rules covering electronic address schemes, process identifiers, and code list restrictions. Rules prefixed PEPPOL-EN16931-.
Supported UBL document types
| Code | Type | UBL Document |
|---|---|---|
| 380 | Commercial invoice | Invoice |
| 381 | Credit note | CreditNote |
| 384 | Corrected invoice | Invoice |
| 386 | Prepayment invoice | Invoice |
| 389 | Self-billed invoice | Invoice |
Credit notes (code 381) use the UBL 2.1 CreditNote syntax and carry their own rules — see the Peppol credit note validation guide. Comparing syntaxes? Read UBL vs CII vs Factur-X.
People also ask about UBL and Peppol
What is a UBL invoice?
A UBL invoice is a business invoice written in Universal Business Language (UBL) 2.1, an OASIS XML standard. It uses a fixed set of XML elements (in the cbc: and cac: namespaces) to describe the seller, buyer, line items, taxes, and totals, so the invoice can be processed automatically. In Europe, a UBL invoice is the syntax used by Peppol BIS Billing 3.0 and the EN16931 standard.
Is Peppol BIS based on UBL?
Yes. Peppol BIS Billing 3.0 is built on UBL 2.1: it uses the UBL Invoice and CreditNote XML syntax and adds its own business rules, code lists, and identifier requirements on top. Every Peppol invoice on the network is a UBL 2.1 document. CII (Cross Industry Invoice) is not accepted on Peppol.
What UBL version does Peppol use?
Peppol uses UBL 2.1. Peppol BIS Billing 3.0 requires the UBL 2.1 Invoice and CreditNote schemas, and documents built on the older UBL 2.0 namespaces are rejected. This validator checks your file against the UBL 2.1 structure before applying the EN16931 and Peppol BIS rules.
How do I check if a UBL file is valid?
Upload the UBL XML file to a validator that runs the official EN16931 and Peppol BIS 3.0 schematron rules, such as this free UBL validator. It reports every schema error, missing mandatory field, invalid identifier, and business-rule violation with the exact rule ID and a plain-language explanation. Fix each reported issue and re-run the check until the file passes.
Can I validate UBL XML online for free?
Yes. This UBL validator checks UBL 2.1 XML invoices and credit notes online for free, with no signup and no upload limit. It runs the same EN16931 (CEN) and Peppol BIS Billing 3.0 schematron rules used across the Peppol network and shows results instantly with shareable links.
UBL validator FAQ
What is UBL 2.1?
Universal Business Language (UBL) 2.1 is an OASIS open standard that defines XML document formats for business documents like invoices, credit notes, and orders. It is the syntax used by Peppol BIS Billing 3.0 and the EN16931 European e-invoicing standard.
What is the difference between UBL and Peppol?
UBL 2.1 defines the XML structure: the tags, elements, and data types. Peppol BIS Billing 3.0 is a business profile on top of UBL that adds constraints, including which fields are mandatory, which code lists to use, and what business rules must be satisfied. EN16931 sits between them as the European semantic model. When you validate here, we check all three layers.
Which UBL document types can I validate?
This validator supports UBL 2.1 Invoice (InvoiceTypeCode 380 and variants like 384, 386, 389) and UBL 2.1 CreditNote (InvoiceTypeCode 381). These are the document types defined in Peppol BIS Billing 3.0.
What does a UBL validation check?
Validation runs two sets of schematron rules: EN16931 (CEN) business rules that check European standard compliance (BR-series rules), and Peppol BIS rules that check network-specific requirements like electronic address scheme IDs, process identifiers, and code list values.
What is an SEF file?
SEF (Stylesheet Export File) is a compiled form of XSLT stylesheets used by SaxonJS. The Peppol schematron rules (.sch files) are compiled into SEF format so they can run efficiently in the browser or on Cloudflare Workers without a full XSLT processor.
Is UBL 2.1 the same as UBL 2.0?
No. UBL 2.1 added significant elements compared to 2.0, including better support for credit notes, self-billing, and additional code lists. Peppol BIS Billing 3.0 specifically requires UBL 2.1. Documents using UBL 2.0 namespaces will fail validation.
Looking for the main Peppol validator? Go to peppolvalidator.com
Validating CII / Factur-X invoices? Use the Factur-X validator
Learn more about Peppol
What is Peppol e-invoicing?
The standards stack, the four-corner model, who is in scope.
The Peppol network
How AS4, SML and SMP discovery actually work end to end.
Mandates by country
Where Peppol or EN 16931 is mandatory in 2026 and beyond.
Peppol Access Points
What certified service providers do and how to choose one.
Validation rules reference
All 311 BR, PEPPOL-EN16931 and country-specific rules.
EN 16931 business terms
Every BG / BT business term with its UBL XML path.