Software · opening soon
Factur-X, XRechnung, EN 16931: the official rules, offline
Validator Pro checks your Factur-X, XRechnung, UBL and CII invoices against the official CEN and KoSIT validation artefacts. It also checks your EDI flows — in batch, from the command line, entirely on your machine.
What you get
Real output of the tool, in free mode, on two invoices: a CII invoice with no number and no type code, whose seller is left empty and whose totals do not add up, then example no. 1 published by CEN. Only the coverage summary, printed before the totals line, is left out.
$ ediverse-validator validate facture-2026-0187.xml facture-2026-0188.xml
[INVALID] facture-2026-0187.xml (cii, 605 ms)
INFO [I_PROFILE]: Guideline urn:cen.eu:en16931:2017 (profile EN16931).
ERROR [BR-02] @ /CrossIndustryInvoice: An Invoice shall have an Invoice number (BT-1).
ERROR [BR-04] @ /CrossIndustryInvoice: An Invoice shall have an Invoice type code (BT-3).
ERROR [BR-06] @ /CrossIndustryInvoice: An Invoice shall contain the Seller name (BT-27).
ERROR [BR-08] @ /CrossIndustryInvoice: An Invoice shall contain the Seller postal address (BG-5).
ERROR [BR-09] @ /CrossIndustryInvoice: The Seller postal address (BG-5) shall contain a Seller country code (BT-40).
ERROR [BR-CO-15] @ /CrossIndustryInvoice: Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
ERROR [BR-S-02] @ /CrossIndustryInvoice/SupplyChainTradeTransaction/IncludedSupplyChainTradeLineItem/SpecifiedLineTradeSettlement/ApplicableTradeTax: An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).
ERROR [BR-CO-26] @ /CrossIndustryInvoice/SupplyChainTradeTransaction/ApplicableHeaderTradeAgreement/SellerTradeParty: In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.
ERROR [BR-CO-10] @ /CrossIndustryInvoice/SupplyChainTradeTransaction/ApplicableHeaderTradeSettlement/SpecifiedTradeSettlementHeaderMonetarySummation: Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).
ERROR [BR-CO-13] @ /CrossIndustryInvoice/SupplyChainTradeTransaction/ApplicableHeaderTradeSettlement/SpecifiedTradeSettlementHeaderMonetarySummation: 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).
ERROR [BR-CO-16] @ /CrossIndustryInvoice/SupplyChainTradeTransaction/ApplicableHeaderTradeSettlement/SpecifiedTradeSettlementHeaderMonetarySummation: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
ERROR [CII-SR-014] @ /CrossIndustryInvoice/ExchangedDocument: TypeCode must exist exactly once
[OK ] facture-2026-0188.xml (ubl, 639 ms)
2 file(s): 1 ok, 1 invalid, 0 skipped, 0 failed
Free mode — batch and JSON/CSV reports unlock with a license: https://www.ediverse.io/en/validator-pro/ Every error raised by the official rules carries the rule's identifier and message as published (in English; in German for KoSIT's national rules) and the path of the node the rule is evaluated on — the document root when the element is missing. The file is well-formed XML: it is the EN 16931 business rules that flag the missing data and the totals mismatch.
Why the official rules
The EN 16931 standard comes with validation rule sets published by CEN; Germany adds KoSIT's for XRechnung. They establish, rule by rule, whether an invoice conforms to the standard and, for Germany, to XRechnung; platforms and networks may add their own checks. Rewriting them by hand means accepting gaps: Validator Pro runs the official artefacts themselves, with their identifiers, severities and messages. The site's free validators remain the right starting point for a quick check in the browser.
Coverage, format by format
What Validator Pro checks, and what it does not: text and JSON reports state it, format by format.
| Format | Checked | Not checked |
|---|---|---|
| Factur-X / ZUGFeRD (PDF) | Extraction of the embedded XML, profile detection; EN 16931, BASIC and XRechnung profiles: official CEN rules (CII) and, for XRechnung 3.0, KoSIT. Reads signed PDFs. | EXTENDED profile: EN 16931 rules only (FeRD and FNFE-MPE's EXTENDED Schematron is not applied). MINIMUM and BASIC WL are not EN 16931 invoices. ZUGFeRD 1.0: reported as an error, no rules applied. PDF/A conformance not checked. |
| CII (CrossIndustryInvoice) | Official CEN EN 16931 1.3.16 rules: 223 business rules and 583 CII syntax rules; KoSIT rules when XRechnung 3.0 is declared. | No full XSD validation (datatypes are checked). |
| UBL (Invoice, CreditNote) | Official CEN EN 16931 1.3.16 rules: 223 business rules and 756 UBL syntax rules; KoSIT rules when XRechnung 3.0 is declared. | No full XSD validation (dates, times and amounts are checked). Other UBL documents (order, despatch advice): structural checks. |
| Peppol BIS Billing 3.0 | Official EN 16931 rules + ediverse implementation of 8 PEPPOL-EN16931 rules (R001, R002, R003, R004, R008, R010, R020, CL008). | The other Peppol rules are not applied: OpenPeppol's official artefacts are not bundled (no licence). |
| UN/EDIFACT | ISO 9735 envelopes (UNB, UNG, UNH, UNT, UNE, UNZ: counts, references); top-level mandatory segments and allowed segments per the directory each message declares, for the message types included (42 to 81 depending on the directory) in 15 directories: D.96A, D.97A, D.99B, D.00B, D.01B, D.02B, D.05A, D.08A, D.10A, D.13B, D.16B, D.18B, D.20B, D.21B, D.24A. | Mandatory segments inside groups, element content, segment order. Other directories or message types: envelope only, stated in the report. |
| X12, TRADACOMS | Envelopes (ISA, GS, ST; STX, MHD, MTR, END), counts; X12 control numbers. | Message content rules (850, 856…) not checked. |
| HL7 v2, SWIFT MT | HL7: MSH header. SWIFT: block structure and mandatory fields of MT103, 202, 900, 910, 940, 942. | HL7 message structure and SWIFT field formats not checked. |
| cXML, SBDH | cXML: known elements, allowed children under each parent and required attributes, per the 1.2.069 DTD set. SBDH: envelope, then validation of the enclosed document when its format is supported. | cXML: element order and cardinality (including required elements), undeclared attributes, attribute values. SBDH: binary or text payloads and documents of an unsupported type. |
Also included: identifier checks (IBAN, BIC, LEI, SIREN/SIRET, GS1 element strings) and EDIFACT/X12 ↔ JSON conversion.
Free or Pro
| Free mode | With a licence | |
|---|---|---|
| Checks | All | All |
| Files per run | 5 | No limit |
| Reports | Text on screen | Text, JSON, CSV, written to a file |
| Identifier checks, conversion | Yes | Yes |
The licence is verified offline, with no account and no connection.
Known limits
- No full XSD validation: the datatypes the rules rely on (dates, amounts, quantities) are checked.
- Very large CII invoices are slow with the official rules: about 17 seconds for 1,000 lines, measured on a desktop computer; longer on a less powerful or busy machine, and the time grows roughly with the square of the line count. By default each rule set stops after 120 seconds (adjustable): the file is then reported as not validated and the rest of the batch carries on.
- Factur-X EXTENDED profile: only the EN 16931 rules apply.
- Peppol BIS Billing 3.0: official EN 16931 rules and 8 Peppol rules (see the table).
Frequently asked questions
Are my invoices sent anywhere?
No. Validator Pro runs entirely on your machine: the official rules ship inside the software and network access is disabled in the validation engine. No file and no invoice data leaves your computer.
How is it different from the site's free validators?
ediverse's online validators cover a selection of checks: the EN 16931 validator, for instance, applies 28 of the 223 business rules of CEN release 1.3.16, plus BR-CO-25 as adopted by Peppol and the XRechnung rule BR-DE-15. Validator Pro runs the complete official CEN and KoSIT rule sets, validates whole folders and produces usable reports.
Which rule versions are applied?
The CEN/TC 434 EN 16931 validation artefacts version 1.3.16 (UBL and CII syntaxes) and the KoSIT XRechnung Schematron version 2.6.0 (XRechnung 3.0.2). For a UBL, CII or Factur-X file, text and JSON reports state the versions used; CSV reports hold the findings only.
Can it run in a continuous integration pipeline?
Yes. It is a command-line tool whose exit codes are documented in its help: 0, no error; 1, at least one file invalid or failed (empty, unreadable or not validated in time); 2, usage or installation error; 3, no error but some files unrecognised or unsupported (--allow-skipped turns this case into 0). With a licence, reports are also available as JSON and CSV.
Does it validate Peppol BIS Billing 3.0 invoices?
The official EN 16931 rules apply to Peppol invoices as to any UBL invoice. For the Peppol-specific rules, Validator Pro applies its own implementation of 8 PEPPOL-EN16931 rules: OpenPeppol's official artefacts are not published under a licence that allows bundling them.
Does it read signed Factur-X PDFs?
Yes. The extractor reads modern PDFs (cross-reference streams, object streams) and the incremental updates produced when a PDF is signed or annotated.
Early access
Early access opens soon, for EDI teams, integrators and companies preparing for the French, Belgian or German deadlines. In the meantime, the online tools remain free to use.
The official rule sets are those of CEN/TC 434 (EUPL-1.2 licence) and KoSIT (Apache-2.0 licence), redistributed with their licences and sources.