Conformance report
Trust in a validator is earned, not asserted. This page reports how the engine behaves on every official test file we can find, and explains every disagreement. It is regenerated by CI on every change.
| Official test files | 129 (ConnectingEurope eInvoicing-EN16931 examples + KoSIT XRechnung test suite, UBL & CII) |
| Parsed successfully | 129 (0 parse failures) |
| Pass validation | 122 |
| Flagged invalid | 7 — every one annotated below |
Files we flag, and why
A validator that passes everything is not a validator. These official files contain genuine violations (several official examples are known to be invalid against the official artefacts) or values outside the pinned code lists:
| File | Rules raised | Assessment |
|---|---|---|
04.05a-INVOICE_uncefact.xml | BR-CL-10, BR-CL-21 | XRechnung extension case using XR01/XR03 scheme identifiers, which are valid only under the XRechnung extension, not under the EN 16931 core ICD lists (BR-CL-10/21). |
05.01a-INVOICE_ubl.xml | BR-CO-16 | KoSIT business case where BT-115 (366.86) ≠ BT-112 (336.90) with no prepaid/rounding amounts; BR-CO-16 fails under the official artefacts as well. |
01.05_minimal_test_uncefact.xml | BR-CO-15 | KoSIT minimal CII case omits TaxTotalAmount entirely; the official EN 16931 CII Schematron fails it on BR-CO-15 for the same reason we do. |
02.01a-cvd_INVOICE_ubl.xml | BR-CL-13 | Uses item classification listID “CVD”, which is newer than the UNTDID 7143 list in the pinned official artefacts; an EN-core validator at the pinned release flags BR-CL-13. |
02.01a-cvd_INVOICE_uncefact.xml | BR-CL-13 | Same as its UBL sibling: post-release codelist value (BR-CL-13). |
CII_example7.xml | BR-CO-15 | Official example is invalid per the official artefacts: it lacks a TaxTotalAmount in the invoice currency, which BR-CO-15 requires (count = 1). Our verdict matches the official Schematron. |
XRechnung-O.xml | BR-CO-15, BR-CL-22 | Official example is invalid per the official artefacts: missing TaxTotalAmount (BR-CO-15) and lowercase VATEX code “vatex-eu-132-1a” where the official code list is uppercase (BR-CL-22). |
Method
- Rule semantics (rounding, ±1 tolerances, absent-term handling) are implemented from the official Schematron expressions, not from prose.
- Code lists are extracted mechanically from the official artefacts at build time — never hand-typed.
- The corpus is fetched fresh in CI from the official repositories (EUPL/Apache licensed) and re-run on every commit.
- Unit tests additionally verify that seeded rule violations (wrong totals, wrong VAT, bad codes) are caught — a validator must fail the invalid, not just pass the valid.