EN 16931 on your device

E-Invoice Reader & Rule Check

Open a ZUGFeRD, Factur-X, XRechnung or Peppol BIS e-invoice, read the structured data it carries, and check it against the EN 16931 rules that catch real mistakes — without the invoice leaving your computer.

✓ Deterministic local baseline✓ Evidence per finding✓ JSON + CSV report✓ Versioned method
Interactive tool

Analyse your own file

Local by default

Choose a Factur-X / ZUGFeRD PDF (embedded XML) and standalone CII or UBL invoice XML file

Drop it here or browse this device

No file selected

Your original file is analysed in this browser and is not uploaded. This tool has no AI or server-processing step.

Processing manifest

What happens to the file

Original stays on this device
Default processing
Browser-only JavaScript, PDF.js, pdf-lib and Tesseract where the task needs them
Accepted input
Factur-X / ZUGFeRD PDF (embedded XML) and standalone CII or UBL invoice XML
Report contract
File Intelligence JSON schema 1.0 plus a flattened CSV view
Optional AI
Not used by this tool
Example analysis report

The published sample is a coherent Factur-X BASIC invoice: two lines totalling 150.00 net, 19% VAT of 28.50 and a gross of 178.50. Every checked rule passes. Change any amount in the file and run it again to watch the calculation rules fail and name both the stated and the computed figure.

Download factur-x-sample.pdfDownload factur-x-sample.xmlRun it with “Load published sample” above to reproduce the report.

How the result is calculated

A hybrid invoice is a PDF with the machine-readable invoice attached inside it. The browser opens the PDF with PDF.js, looks through its embedded files for the invoice XML (factur-x.xml, zugferd-invoice.xml, xrechnung.xml or any attached .xml) and parses that XML directly; a standalone .xml file is parsed as-is. Field lookups match on element local names, which is what lets one set of rules read both CII (ram:/rsm:) and UBL (cbc:/cac:) syntax. Every extracted value keeps the element path and the line number it came from, so each finding points back into your own file.

Published formula and threshold

Structural rules BR-01 to BR-16 require the mandatory business terms. Calculation rules recompute the document’s own arithmetic and compare with a two-decimal tolerance: BT-106 = sum of line net amounts (BR-CO-10), BT-109 = BT-106 minus allowances plus charges (BR-CO-13), BT-110 = sum of the VAT breakdown (BR-CO-14), BT-112 = BT-109 + BT-110 (BR-CO-15), BT-115 = BT-112 minus prepaid (BR-CO-16). A rule that cannot be evaluated is reported as skipped, never as passed. When the invoice declares a CIUS, a verified subset of that layer is checked on top: 15 German BR-DE rules for XRechnung (payment instructions, buyer reference/Leitweg-ID, seller contact, postal fields, VAT rate, invoice type code, IBAN syntax) and 5 Peppol BIS rules (business process, buyer reference or order reference, both electronic addresses, specification identifier).

Supported and unsupported cases

Input or situationWhat version 1.0.0 checksWhat it does not claim
Factur-X / ZUGFeRD PDFFinds the invoice XML embedded in the PDF and reads itWhether the PDF container itself conforms to PDF/A-3
CII or UBL invoice XMLSyntax and profile detection, business-term extraction, rule checksSchema (XSD) validation against the official schemas
Arithmetic across the documentRecomputes totals, VAT and amount due from the document’s own figuresWhether the prices or tax rates are commercially correct
Profile identificationNames MINIMUM, BASIC WL, BASIC, EXTENDED, XRechnung, Peppol BIS or EN 16931Whether a given recipient or authority accepts that profile
XRechnung invoices15 verified BR-DE rules on top of EN 16931 — the ones German authorities reject invoices forThe full XRechnung rule set, or the Leitweg-ID format (the official Schematron does not check it either)
Peppol BIS invoices5 verified rules including the buyer/order reference and both electronic addressesRules needing the Peppol participant registry or a code list, and the two changes that only take effect with release 3.0.21
Advertisement

What the confidence score means

Confidence describes how much of the file the published parser could inspect and how specific the evidence was. It is deliberately separate from the result score. A 95/100 confidence value does not mean “95% likely to be true,” and a high health/readiness score does not certify safety, compliance or factual correctness.

Comparison with other approaches

ApproachUseful strengthImportant limitation
This browser readerRuns in the browser, so the invoice never leaves the deviceImplements part of EN 16931, not the official Schematron
Free online validatorsComplete official rule setsEvery one we checked uploads the invoice to a server
Accounting softwareValidates inside the bookkeeping workflowOnly helps for invoices already in that system
Opening the XML by handNo tool requiredUnreadable in practice, and the arithmetic goes unchecked
Anonymous synthetic release dataset

8/8 fixtures passed (100%)

Dataset: FH-INT-SYNTH-2026-07. Scope: CII and UBL coherent invoices, a broken line sum, a missing mandatory term, a header-only profile, a non-numeric amount, a hybrid PDF with embedded XML, and the XRechnung BR-DE layer. Fixtures contain generated data only; no visitor file or personal record is collected.

Open method and raw CSV

When this result can be wrong

Only part of EN 16931 is implemented: the structural rules BR-01 to BR-16 and the calculation rules BR-CO-10, -13, -14, -15, -16 and BR-CO-25. For XRechnung invoices a verified subset of the BR-DE rules is checked; the rest of that layer, a verified subset of the Peppol BIS rules is checked for Peppol invoices; the rest of both layers and every national tax rule are not. The Leitweg-ID’s format is deliberately not validated, because the published XRechnung Schematron checks only that a buyer reference is present. Rules needing a code list, registry or certificate cannot be decided from the file and are not implemented. No XSD or Schematron validation is performed. An invoice with no failures here can still be rejected by a tax authority, a customer or an access point.

Keep the original file, test the output in the receiving application and escalate high-stakes legal, financial, medical, accessibility or security decisions to a qualified reviewer.

Advertisement

Version and accuracy change log

ReleaseDateCalculation/coverage changeRe-test requirement
1.0.02026-07-29Initial public engine, report schema, thresholds, synthetic fixtures and sample files.All published fixtures and one browser sample per tool.

Downloadable evidence, not a black-box verdict

After analysis, use Download JSON report for structured evidence or Download CSV report for review in a spreadsheet. Both include engine version, timestamp, score, confidence, metrics, findings, recommendations and limitations. Sensitive-data reports mask candidate values and no report includes the complete extracted document text.

Related tools and independent checks

Method or accuracy correction? Read the testing methodology and contact info@brothers.net.tr. Material scoring changes are published in the change log.