UBL Peppol BIS 3.0 EN 16931

UBL & Peppol Validator

Check compliance with EN 16931 and Peppol BIS Billing 3.0 instantly.

Drag and drop your invoices here, or click to browse.

Why Validate with Get UBL?

Catch compliance issues before your invoices reach a trading partner or a Peppol Access Point.

Full EN 16931 Compliance Check

We validate your invoices against the complete EN 16931 standard and the Peppol BIS Billing 3.0 CIUS.

Schema & Business Rule Checks

Both the UBL 2.1 XML schema and the EN 16931 business rules are inspected.

Peppol Ready

Ensure your invoices are accepted by Peppol Access Points before you send them.

Send via Peppol on Success

When your invoice passes validation, premium users can send it over the Peppol network automatically, no extra steps required.

How It Works

Validate your UBL invoices in three simple steps.

Step 1

Upload Your Invoice

Drag and drop your UBL 2.1 invoice or credit note XML file into the validator.

Step 2

Automatic Validation

We check your invoice against the UBL 2.1 schema, the full EN 16931 rule set, and the Peppol BIS Billing 3.0 CIUS constraints.

Step 3

Get Your Report

See a detailed pass/fail report with specific error messages and field-level guidance so you can fix issues before submission.

Frequently Asked Questions

Everything you need to know about validating UBL invoices.

We validate against the UBL 2.1 XML schema, the full EN 16931 standard, and the Peppol BIS Billing 3.0 CIUS. XRechnung CIUS support is on the roadmap.
Yes. Upload your UBL 2.1 invoice or credit note XML directly, that is the native format we validate.
You'll receive a detailed report listing every rule violation, the affected field, and a clear description of how to fix each issue.
Basic validation is free for up to 10 invoices at a time. Premium users unlock batch processing and API access.
Yes. Our validator applies the Peppol BIS Billing 3.0 CIUS rules so you can be confident your invoices will be accepted across the Peppol network.
Yes. Once your invoice passes all compliance checks, premium users can have it sent over the Peppol network automatically, so you go from validation to delivery without leaving the page.

Peppol is now the default rail for cross-border B2B e-invoicing in Europe. Mandates in the Netherlands, Belgium, the Nordics, and beyond expect a structured UBL 2.1 invoice that conforms to the European standard EN 16931 and the Peppol BIS Billing 3.0 Core Invoice Usage Specification (CIUS). Validating your UBL before you send it means an Access Point will accept it instead of silently rejecting it after transmission.


What the UBL validator checks

A UBL invoice has three distinct compliance layers. Our validator runs all three automatically, and a file must pass every layer to be accepted by a Peppol Access Point or your trading partner's accounting system.

UBL 2.1 XML schema - validates the document against the OASIS UBL 2.1 Invoice and CreditNote schemas. Catches structural errors (missing required elements, wrong element ordering, malformed dates, and namespace declaration errors) before the business-rule check runs.

EN 16931 Schematron: the BR rule set - this is where most rejections originate. The rules check VAT arithmetic consistency (BR-CO-14: invoice total VAT must equal the sum of all VAT category amounts), category constraints (BR-S-08: standard-rate lines must carry a rate greater than zero), and mandatory business terms (BR-01: specification identifier, BR-06: seller name, BR-16: at least one invoice line).

Peppol BIS Billing 3.0 CIUS - the PEPPOL-EN16931-R rules layer Peppol's own constraints on top of EN 16931. The most common are the electronic address checks: both seller and buyer need an Endpoint ID with a valid Electronic Address Scheme (for example 0088 for GLN or 9930 for a German VAT number), and the document must carry a buyer reference or a purchase order line.


Common UBL validation errors, and what they mean

These are the rule violations we see most frequently. If your file fails, one of these is likely the cause.

BR-06 - Seller name missing
The AccountingSupplierParty has no registration or party name. Every UBL invoice must name the seller. Add the cac:PartyLegalEntity/cbc:RegistrationName element.

BR-CO-14 - VAT total does not match VAT breakdown
The TaxTotal/TaxAmount does not equal the sum of the TaxSubtotal amounts. This fires when rounding differences between line-level and header-level VAT create a discrepancy of even one cent. Compute the header VAT total from the breakdown, not independently.

PEPPOL-EN16931-R020 - Endpoint ID scheme missing
The seller or buyer EndpointID is present but has no schemeID, or uses a scheme that is not on the Peppol Electronic Address Scheme code list. Set a valid scheme such as 0088 (GLN), 0192 (Norwegian org number) or 9930 (German VAT).

BR-S-08 - Standard-rate line carries a zero rate
A line declares VAT category code S (standard rate) but a 0% rate. If zero-rate is intended, use category code Z (zero-rated) or E (exempt) instead.


From validation to a clean invoice

If your file fails, you do not have to hand-edit XML. Create a compliant UBL invoice from scratch with our guided wizard, which fills in the Peppol electronic addresses and tax breakdown for you, or convert an existing PDF invoice into UBL and validate the result here.

Ready for Peppol e-invoicing?

Make every invoice compliant, in one message

Sign up to unlock unlimited tools, selectable compliance profiles and every premium feature.

EN 16931 & Peppol BIS 3.0 compliant Results in seconds No installation Data never stored
3 free uses per day · No card required