Skip to content
- Unverified detection rules:
ubl-unknown and cii-unknown are fallbacks, not confirmed formats. The Croatian spec spells its own identifier inconsistently, so hr-cius only checks for urn:mfin.gov..
- EN 16931-1:2026 (published March 2026; 164 to 216 business terms and 32 to 39 groups, per trade press) is not modelled beyond the identifier. Checked on 2026-10-16: the ConnectingEurope validation artefacts (v1.3.17, UBL 2.1 / CII D16B) and the KoSIT XRechnung Schematron (v2.6.0, XRechnung 3.0) contain no 2026 terms, and the EN 16931-1:2026 text and the updated CEN/TS 16931-3-x bindings are paywalled, so neither the exact BT/BG ids and names nor their UBL/CII paths are confirmed. Secondary sources mention multiple payment terms (BG-33), early-payment discounts (BG-35) and line-level delivery (BG-37) but disagree on detail, so nothing was added to
src/canonical.ts or the parsers. Missing: the CEN/TS 16931-3-1 and 3-3 binding tables, or the 2026 Schematron/XSD once ConnectingEurope or Peppol BIS publish them. 2026-identified documents still parse, with the 2017 terms only.
- Signature trust: signatures are verified cryptographically; signers are checked only when you pass
trustAnchors or an euTrust snapshot. The snapshot is only as current as its fetch date and drops services the lists identify by name or key id without a certificate, and no revocation check is made on the signer’s own certificate.
- Validation covers UBL and CII only (XSD, EN 16931 and Peppol/XRechnung Schematron). On invoices with more than 2,000 lines the two Schematron layers are skipped (
not-run, with an info finding saying why) because SaxonJS needs minutes for them (about 80 s for the EN 16931 rules on a 26,813-line Peppol sample, longer for Peppol’s own); the XSD layer still runs. Raise or lift the limit with validation: { maxSchematronLines }. National formats get the BR-CO arithmetic checks only; their official schemas are not run yet.
- Synthetic fixtures: most national parsers were built from specifications and tested on synthetic files. Formats without a converted real sample are listed in the conformance checklist; run
sweep --expect on your own inbound files before relying on them.
- Peppol PINT and ZATCA validation: the PINT Schematron and ZATCA’s rules are not bundled (licence, see
validation/NOTICE); only the UBL XSD runs. PINT OM and EU are mapped as plain UBL. A Hijri date whose day does not exist in the Gregorian month of the same number (for example 1446-02-30) is rejected as an invalid date before conversion.
- Non-XML formats (EDIFACT INVOIC, PDFs without embedded XML) are out of scope.