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.

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.

1

UBL 2.1 Schema

XML structure: correct element names, namespaces, and data types. Defined by OASIS.

2

EN16931 Business Rules

European semantic rules covering mandatory fields, calculation checks, and tax category logic. Rules prefixed BR- and BR-CO-.

3

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

CodeTypeUBL Document
380Commercial invoiceInvoice
381Credit noteCreditNote
384Corrected invoiceInvoice
386Prepayment invoiceInvoice
389Self-billed invoiceInvoice

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