UBL Invoice Validator

Validate UBL 2.1 invoices and credit notes against Peppol BIS Billing 3.0 and EN16931 schematron rules. Free, instant results.

The UBL validation stack

A Peppol invoice passes through three validation layers. Understanding them helps you fix errors faster.

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

Questions

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