PEPPOL BIS Billing 3.0 Validator V2
On this page
Validate a UBL invoice (Invoice or CreditNote) against EN 16931 and the OpenPEPPOL business rules, without the invoice ever leaving your browser.
Paste a UBL invoice conforming to PEPPOL BIS Billing 3.0 to validate it.
Embedded rule set: 73 business rules
(BR-*, BR-CO-* calculation, PEPPOL-*, UBL-CR-*),
57 EN 16931 Business Terms,
83 PEPPOL EAS codes,
1 profile. Sources:
docs.peppol.eu,
PEPPOL Schematron rules
and EN 16931-1:2017.
How it works
The validator runs three passes:
- XML well-formedness: your document is parsed by the
browser's native
DOMParser. Any mismatched tag or invalid XML character is reported first (E_XML_NOT_WELL_FORMED). - UBL root element: the root must be
<Invoice>or<CreditNote>in the UBL 2.1 namespace. Otherwise:E_NOT_UBL_ROOT. - PEPPOL BIS Billing 3.0 business rules: the
BR-NNandPEPPOL-EN16931-RNNNcodes listed below are checked against the document structure. Each diagnostic surfaces the EN 16931 Business Term (BT-1,BT-24, etc.) and the XPath of the offending element.
Implemented rules (73)
The validator covers 73 rules among the most blocking in integration work: EN 16931 rules as carried by OpenPeppol, Peppol-specific rules and UBL syntax restrictions. IDs and severities follow the official Peppol BIS Billing 3.0 release; EN 16931 rules keep the CEN wording, Peppol-specific rules are worded by ediverse; amounts are compared the way the Schematron does (rounded to two decimals, then compared exactly). The list is generated from the validator's own catalogue: it matches exactly what the tool checks.
EN 16931 rules — presence and values(25)
| Rule | Severity | Wording |
|---|---|---|
BR-01 | error | An Invoice shall have a Specification identifier (BT-24). |
BR-02 | error | An Invoice shall have an Invoice number (BT-1). |
BR-03 | error | An Invoice shall have an Invoice issue date (BT-2). |
BR-04 | error | An Invoice shall have an Invoice type code (BT-3). |
BR-05 | error | An Invoice shall have an Invoice currency code (BT-5). |
BR-06 | error | An Invoice shall contain the Seller name (BT-27). |
BR-07 | error | An Invoice shall contain the Buyer name (BT-44). |
BR-08 | error | An Invoice shall contain the Seller postal address. |
BR-09 | error | The Seller postal address (BG-5) shall contain a Seller country code (BT-40). |
BR-10 | error | An Invoice shall contain the Buyer postal address (BG-8). |
BR-11 | error | The Buyer postal address shall contain a Buyer country code (BT-55). |
BR-12 | error | An Invoice shall have the Sum of Invoice line net amount (BT-106). |
BR-13 | error | An Invoice shall have the Invoice total amount without VAT (BT-109). |
BR-14 | error | An Invoice shall have the Invoice total amount with VAT (BT-112). |
BR-15 | error | An Invoice shall have the Amount due for payment (BT-115). |
BR-16 | error | An Invoice shall have at least one Invoice line (BG-25) |
BR-17 | error | The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4) |
BR-18 | error | The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11) |
BR-19 | error | The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11). |
BR-20 | error | The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11). |
BR-62 | error | The Seller electronic address (BT-34) shall have a Scheme identifier. |
BR-63 | error | The Buyer electronic address (BT-49) shall have a Scheme identifier. |
BR-CL-01 | error | The document type code MUST be coded by the invoice and credit note related code lists of UNTDID 1001. |
BR-CL-04 | error | Invoice currency code MUST be coded using ISO code list 4217 alpha-3 |
BR-CL-14 | error | Country codes in an invoice MUST be coded using ISO code list 3166-1 |
EN 16931 rules — calculations and decimals(34)
| Rule | Severity | Wording |
|---|---|---|
BR-CO-03 | error | Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive. |
BR-CO-10 | error | Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131). |
BR-CO-11 | error | Sum of allowances on document level (BT-107) = Σ Document level allowance amount (BT-92). |
BR-CO-12 | error | Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99). |
BR-CO-13 | error | Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108). |
BR-CO-14 | error | Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117). |
BR-CO-15 | error | Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). |
BR-CO-16 | error | Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114). |
BR-CO-17 | error | VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. |
BR-CO-18 | error | An Invoice shall at least have one VAT breakdown group (BG-23). |
BR-CO-19 | error | If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both. |
BR-29 | error | If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73). |
BR-CO-25 | error | In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present. |
BR-DEC-01 | error | The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2. |
BR-DEC-02 | error | The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2. |
BR-DEC-05 | error | The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2. |
BR-DEC-06 | error | The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2. |
BR-DEC-09 | error | The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2. |
BR-DEC-10 | error | The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2. |
BR-DEC-11 | error | The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2. |
BR-DEC-12 | error | The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2. |
BR-DEC-13 | error | The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2. |
BR-DEC-14 | error | The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2. |
BR-DEC-15 | error | The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2. |
BR-DEC-16 | error | The allowed maximum number of decimals for the Paid amount (BT-113) is 2. |
BR-DEC-17 | error | The allowed maximum number of decimals for the Rounding amount (BT-114) is 2. |
BR-DEC-18 | error | The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2. |
BR-DEC-19 | error | The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2. |
BR-DEC-20 | error | The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2. |
BR-DEC-23 | error | The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2. |
BR-DEC-24 | error | The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2. |
BR-DEC-25 | error | The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2. |
BR-DEC-27 | error | The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2. |
BR-DEC-28 | error | The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2. |
OpenPeppol rules (PEPPOL-EN16931-R*)(8)
| Rule | Severity | Wording |
|---|---|---|
PEPPOL-EN16931-R001 | error | The business process identifier (BT-23, ProfileID) is missing. |
PEPPOL-EN16931-R002 | error | Only one document-level note (BT-22) is accepted, except when seller and buyer are both German. |
PEPPOL-EN16931-R003 | error | Neither a buyer reference (BT-10) nor a purchase order reference (BT-13) is given; one of them is required. |
PEPPOL-EN16931-R004 | error | The specification identifier (BT-24) does not begin with the Peppol BIS Billing 3.0 value 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0', or does not follow the identifier format rules (it contains '::'). |
PEPPOL-EN16931-R008 | error | The document contains an empty element; Peppol rejects empty elements. |
PEPPOL-EN16931-R010 | error | The buyer electronic address (BT-49, EndpointID) is missing. |
PEPPOL-EN16931-R020 | error | The seller electronic address (BT-34, EndpointID) is missing. |
PEPPOL-EN16931-CL008 | error | The electronic address scheme (schemeID) is not in the Electronic Address Scheme (EAS) code list. |
UBL syntax restrictions (UBL-CR / UBL-DT)(6)
| Rule | Severity | Wording |
|---|---|---|
UBL-CR-002 | warning | A UBL invoice should not include the UBLVersionID or it should be 2.1 |
UBL-CR-003 | warning | A UBL invoice should not include the ProfileExecutionID |
UBL-CR-004 | warning | A UBL invoice should not include the CopyIndicator |
UBL-CR-005 | warning | A UBL invoice should not include the UUID |
UBL-CR-006 | warning | A UBL invoice should not include the IssueTime |
UBL-DT-01 | error | Amounts shall be decimal up to two fraction digits |
Privacy
Limitations
The validator is not — yet — a 1:1 replacement for the official Schematron. Out of scope for this MVP:
- Full VAT rules (BR-AE-*, BR-E-*, BR-IC-*, BR-O-*, BR-S-*, BR-Z-*) that cross-check VAT category, exemption, rate, and country.
- Strict UBL 2.1 XSD validation (child cardinalities, XSD types) — we focus on Business Terms.
- Reference resolution across lines,
AllowanceCharge, andTaxTotal. -
Second-tier code-list rules:
UnitOfMeasure, UNTDID 4461PaymentMeansCode, UNTDID 5305 VAT category. -
DocumentReferencelinking and MIME types (BG-24).
For a production pipeline, running the official
PEPPOL-EN16931-UBL.sch Schematron remains the recommended
approach.
Related documentation
- PEPPOL — the network overview, four-corner model, and 2026 mandate calendar.
- EN 16931 — the European semantic model for the core elements of an electronic invoice.
- cXML Validator — same approach for Ariba / SAP Business Network documents.