eliDocs
Compliance

Validation artifacts

Versions, sources, and checksums of the validation artifacts used by the Beliq e-invoice engine.

Beliq validates every generated and uploaded e-invoice against official standards artifacts. This page lists the versions currently used in production. The same Italy FatturaPA XSD bundle applies to POST /v1/generate (standard: "fatturapa") and to POST /v1/validate when FatturaPA invoice XML is detected — POST /v1/parse accepts UBL 2.1 and CII only (FatturaPA and SDI messaggio inputs are validated, not parsed). Italy SDI file messaggio XML (MessaggiTypes) uses a separate vendored XSD graph and is validated only on POST /v1/validate when format=sdi_messaggio is set or when a known messaggio root is auto-detected — it is not FatturaPA invoice validation.

For the machine-readable version of this inventory, call GET /v1/rulesets: the same pinned versions and artifact hashes, keyless and with no quota cost.

Current versions

Artifact Version Release date Official source
EN 16931 CII Schematron 1.3.16 2026-04-04 ConnectingEurope/eInvoicing-EN16931
EN 16931 UBL Schematron 1.3.16 2026-04-04 ConnectingEurope/eInvoicing-EN16931
XRechnung Schematron 2.5.0 2026-01-31 itplr-kosit/xrechnung-schematron
Peppol BIS Billing 3.0 Schematron (UBL) 3.0.20 2026-03-16 OpenPEPPOL/peppol-bis-invoice-3
Factur-X 1.08 / CII D22B Schematron + per-profile XSDs (all 5 profiles: MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED) 1.08 2025-12-18 FNFE-MPE / FeRD joint pack — primary for BASIC_WL / EN16931 / EXTENDED; Mustangproject (Apache-2.0) secondary for MINIMUM and BASIC (FNFE-MPE-recommended downstream consumer; pinned to tag core-2.22.0).
France BR-FR-CTC Flux 2 Schematron (CII + UBL) 1.3.0 2026-02-16 FNFE-MPE on behalf of DGFiP / AIFE
France EXTENDED-CTC-FR Schematron (CII + UBL) 1.3.0 2026-02-16 FNFE-MPE on behalf of DGFiP / AIFE
Italy FatturaPA XSD (ordinaria/PA VFPR/VFPA 1.2.3 + semplificata VFSM 1.0.2, runtime bundle) 1.4-runtime-2026-05-01 fatturapa.gov.it — formato / XSD v1.4
Italy SDI MessaggiTypes XSD (file messaggio v1.1) 1.1.0-pinned-2026-05-02 fatturapa.gov.it — Messaggi v1.1 + xmldsig companion. Runtime: POST /v1/validate with format=sdi_messaggio or auto-detect on known messaggio roots — XSD only, not FatturaPA invoice validation.
Italy SDI transport — SOAP / spec URL bundle (reference URLs only, not vendored) sdi-interchange-1.8.4-urls-2026-04-28 DocumentazioneSDI + Specifiche tecniche v1.8.4 PDF + WSDL/XSD export tree. Reference only — SDI submission, signing, and operator interchange are not implemented in Beliq (italy_sdi_transport is blocked); transmission belongs to your SDI intermediary.
Spain Facturae XSD (3.2.2 runtime bundle) 3.2.2-research-2026-05-24 2017-06-06 facturae.gob.es — formato (MINECO unified spec). Runtime: XSD-only on POST /v1/generate (standard: "facturae") and POST /v1/validate (format=facturae or auto-detect).
Slovenia e-SLOG XSD (2.0 runtime bundle, INVOIC v200 + xmldsig companion) 2.0-08-2020 2020-08 epos.si (GZS/ePOS invoice package). Runtime: XSD-only on POST /v1/generate (standard: "eslog", invoices + credit notes) and POST /v1/validate (format=eslog or auto-detect on the urn:eslog:2.00 root).
Romania RO_CIUS Schematron (XSLT pair: EN 16931 CIUS-RO + RO e-Factura operational/VAT) 1.0.9 2024-06-05 Helger phive-rules-cius-ro 4.3.5 (Maven Central, Apache-2.0; vendors ANAF’s authoritative XSLT). Runtime: fired on UBL invoices carrying the CIUS-RO CustomizationID (urn:efactura.mfinante.ro:CIUS-RO:1.0.1 current or RO_CIUS:1.0.0.2021 legacy). The CIUS-RO XSLT bakes in EN 16931 + Peppol BIS rules; both XSLTs fire sequentially. See Romania format reference.
Netherlands NLCIUS Schematron (SI-UBL 2.0; single XSLT covering Invoice + CreditNote) 2.0.3.13 2026-05-21 NPa peppolautoriteit-nl/validation 2026-05-21 (Nederlandse Peppol Autoriteit; MIT-licensed; STPE / Stichting Simplerinvoicing copyright; no Helger wrapper). Runtime: fired on UBL invoices carrying the NLCIUS CustomizationID prefix urn:cen.eu:en16931:2017#compliant#urn:fdc:nen.nl:nlcius:v1.0 (matched starts-with). The NPa-compiled XSLT bakes in EN 16931 + Peppol BIS rules; failures carry BR-NL-* rule IDs. See Netherlands NLCIUS format reference.
CII XSD (D16B) D16B 2016 UN/CEFACT (vendored via the EN 16931 reference repository)
CII XSD (D22B, used by Factur-X 1.08 / ZUGFeRD 2.x) D22B 2023-06-23 UN/CEFACT
UBL 2.1 XSD 2.1 2013-11-04 OASIS
Mustang CLI (ZUGFeRD/Factur-X) 2.22.0 2026-02-04 mustangproject.org
Saxon HE (XSLT processor) 12.9 2025-09-12 saxonica.com
VeraPDF (PDF/A validator) 1.28.2 2025-07-15 verapdf.org
SchXslt2 (Schematron transpiler — vendor-time only, not runtime) 1.10.3 2025-09 Codeberg — SchXslt/schxslt2

Cross-validation tooling

These artifacts are not used to validate customer traffic; they are used internally to cross-check the T3 spec-derived fixtures we ship are validated against an independent reference implementation.

Artifact Version Release date Official source
KoSIT validator (standalone JAR) 1.6.2 2026-02-17 itplr-kosit/validator
KoSIT XRechnung scenario configuration 2026-01-31 (compatible with XRechnung 3.0.x) 2026-01-31 itplr-kosit/validator-configuration-xrechnung
KoSIT Peppol BIS scenario configuration 3.0.20 2026-03 itplr-kosit/validator-configuration-bis
AGID FEL — Fattura Elettronica compilation software XSD bundle 2.1.4 2025-04-01 Agenzia delle Entrate — Software di compilazione
KoSIT xml-mutate (T2 fixture-generation tooling — not a validator) 0.6 2026-02-13 projekte.kosit.org — xml-mutate

Validation pipeline

Every invoice goes through a validation pipeline before a result is returned.

For UBL 2.1 and CII instances in the EN 16931 family, the chain is:

Input → XSD Schema → EN 16931 Schematron → CIUS Schematron → Result

For Italy FatturaPA XML (FatturaElettronica / FatturaElettronicaSemplificata in the Italian namespaces) and Spain Facturae XML (Facturae 3.2.2 in the MINECO namespace), the engine runs W3C XSD validation only against the authority schema graph pinned in the engine (no EN 16931 Schematron layer; responses omit schematronVersion and carry country-specific metadata instead).

  1. XSD schema validation checks XML structure (UBL 2.1, CII D16B/D22B, Factur-X profile subset, FatturaPA XSD, or Facturae XSD)
  2. EN 16931 Schematron checks core business rules (not run for FatturaPA or Facturae)
  3. CIUS Schematron checks country- or network-specific rules when the document declares a recognised customization:
    • XRechnung (KoSIT) — when the CustomizationID matches an XRechnung URN
    • Peppol BIS Billing 3.0 (OpenPeppol) — when the CustomizationID matches urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0. UBL only — Peppol Network only transports UBL, so Peppol rules are not applied to CII payloads even if they happen to carry the URN.

For PDF output (ZUGFeRD/Factur-X), additional steps also run:

  1. Mustang CLI embeds validated XML into a PDF/A-3 document
  2. VeraPDF validates the resulting PDF against PDF/A-3b

API response metadata

Validation responses include the artifact versions used:

Response field / header Example value Description
validationResult.schematronVersion "1.3.16" EN 16931 Schematron version (omitted when validating Italy FatturaPA or Spain Facturae XSD-only)
validationResult.ciusVersion "XRechnung-2.5.0" or "PeppolBIS-Billing-3.0.20" CIUS-specific Schematron version (when detected)
validationResult.peppolVersion "PeppolBIS-Billing-3.0.20" Peppol BIS Billing 3.0 CIUS version. Only present when the document was detected as Peppol; mirrors ciusVersion for Peppol-specific consumers (e.g. Access Point integrations).
validationResult.italyFatturapaXsdBundle (bundle label string) Human-readable label of the authority XSD graph used for FatturaPA (XSD-only).
validationResult.italyFatturapaRuntimeVersion e.g. 1.4-runtime-2026-05-01 Runtime bundle pin (XSD-only invoices).
validationResult.italySdiMessaggiXsdBundle (bundle label string) Human-readable label of the SDI MessaggiTypes XSD graph (XSD-only). Present only when format=sdi_messaggio was used or auto-detected.
validationResult.italySdiMessaggiXsdVersion e.g. 1.1.0-pinned-2026-05-02 SDI MessaggiTypes XSD pin.
validationResult.spainFacturaeXsdBundle (bundle label string) Human-readable label of the authority XSD graph used for Spain Facturae (XSD-only).
validationResult.spainFacturaeRuntimeVersion e.g. 3.2.2-research-2026-05-24 Runtime bundle pin (XSD-only invoices).
validationResult.sloveniaEslogXsdBundle (bundle label string) Human-readable label of the authority XSD used for Slovenia e-SLOG (XSD-only).
validationResult.sloveniaEslogRuntimeVersion e.g. 2.0-08-2020 Runtime bundle pin (XSD-only; invoices and credit notes).
validationResult.romaniaRoCiusVersion e.g. 1.0.9 Romania CIUS-RO Schematron version pin. Populated when profileDetected === "romania-ro-cius".
validationResult.netherlandsNlciusVersion e.g. 2.0.3.13 Netherlands NLCIUS (SI-UBL 2.0) Schematron version pin. Populated when profileDetected === "netherlands-nlcius"; mirrors ciusVersion.
x-schematron-version header 1.3.16 Same as schematronVersion, also exposed as a response header on generate/validate

These fields show which rule versions were applied to your invoice. Validation responses also carry sha256 (the exact bytes validated) and rulesetSha256 + rulesetArtifacts (the rule artifacts that judged them, hashed); see Verify a hash to reproduce both and cross-check the ruleset against the public catalog.

Business rule reference

EN 16931 and related standards use rule IDs with these prefixes:

Prefix Source Example
BR-* EN 16931 core rules BR-01: An Invoice shall have a Specification identifier
BR-CL-* EN 16931 code list rules BR-CL-01: Currency code must be valid ISO 4217
BR-CO-* EN 16931 calculation rules BR-CO-10: Sum of line net amounts must equal invoice net amount
BR-DE-* XRechnung (Germany) BR-DE-1: Buyer reference is required
PEPPOL-EN16931-R* Peppol BIS 3.0 cross-border PEPPOL-EN16931-R003: Buyer reference or order reference is required
PEPPOL-COMMON-R* Peppol BIS 3.0 common PEPPOL-COMMON-R040: Country-specific rule set must be applied
FX-SCH-* Factur-X 1.08 profile Schematron (FNFE-MPE / FeRD) FX-SCH-A-000015: Profile-specific assertion (Factur-X reports the EN 16931 rule code in the message body)
BR-FR-CTC-* France BR-FR-CTC Flux 2 overlay (DGFiP / FNFE-MPE) BR-FR-CTC-01: SIREN or SIRET must be present on French parties
EXT-FR-* France EXTENDED-CTC-FR overlay EXT-FR-FE-163: EXTENDED-CTC-FR-specific structural assertion

Official rule references:

Update policy

Beliq does not auto-update validation artifacts. Version updates are reviewed and tested before rollout. For how versions are classified (safe vs breaking), announced, and how to pin a channel per request or org-wide, see Ruleset versioning.

Nightly content-SHA drift detection

Beyond reviewing official release announcements, the engine runs a nightly content-SHA check against every pinned artefact. If an authority re-publishes an artefact without bumping its version tag (a real failure mode for FNFE-MPE Factur-X bundles and the AdE FEL XsdProject.jar), the workflow opens a tracking issue on the engine repository within 24 hours.

  • Cadence: every day at 04:00 UTC.
  • Workflow: .github/workflows/check-artifact-updates.yml, Layer 3 (the Python module tools/sha_drift).
  • Coverage: 19 SHA-pinned artefacts across 7 structural shapes. New artefacts pinned by SHA are picked up automatically — the engine’s enumeration-coverage test fails loud if a SHA is added without a paired URL.
  • Signal-only: the workflow never auto-bumps anything. Each detected drift creates an issue for human review; vendor / re-pin happens explicitly via scripts/upgrade-artifact.sh.
  • Status visibility: drift status is visible in the engine’s GitHub Actions run logs and as tracking issues on the engine repository.

XRechnung release cycle

XRechnung follows a fixed release schedule:

  • New versions are published on January 31 and July 31
  • Each version becomes mandatory 6 months after publication
  • During the 6-month transition, both old and new versions are accepted by government portals

Beliq adopts new XRechnung versions promptly after publication and runs them through the full test suite before deployment.

Version changelog

Date Artifact Old version New version Notes
2026-04-04 EN 16931 Schematron 1.3.16 Initial version
2026-01-31 XRechnung Schematron 2.5.0 Initial version
2026-02-04 Mustang CLI 2.22.0 Initial version
2026-04 Peppol BIS Billing 3.0 Schematron 3.0.20 Initial version. Compiled from upstream .sch sources at vendor time using SchXslt2.
2026-04 Factur-X / D22B Schematron + XSDs 1.08 Initial version. Vendored from FNFE-MPE / FeRD public ZIP. Covers BASIC_WL, EN16931 and EXTENDED profiles directly.
2026-04-24 Factur-X 1.08 — MINIMUM and BASIC profiles 1.08 Vendored from Mustangproject core-2.22.0 (Apache-2.0) as the FNFE-MPE-recommended downstream consumer. All five Factur-X 1.08 profiles (MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED) are now supported.
2026-04 France BR-FR-CTC Flux 2 + EXTENDED-CTC-FR Schematron 1.3.0 Initial version. Vendored from the FNFE-MPE 2026-02-16 publication.
2026-04-25 KoSIT Peppol BIS scenario configuration 3.0.20 Cross-validation only. Added alongside the KoSIT validator JAR.
2026-04-28 AGID FEL XSD bundle 2.1.4 Cross-validation only. Added to back T3 negatives for italy_fatturapa_ordinaria.
2026-05-01 Italy FatturaPA runtime XSD bundle 1.4-runtime-2026-05-01 Runtime XSD validation on POST /v1/generate and POST /v1/validate for FatturaPA FPR12 / FPA12 / FSM10.
2026-05-02 Italy SDI MessaggiTypes XSD 1.1.0-pinned-2026-05-02 XSD-only path on POST /v1/validate for SDI file messaggi (notifications / receipts). Not transport.
2026-04-28 Italy SDI transport URL bundle sdi-interchange-1.8.4-urls-2026-04-28 URL pointers only — no submission, signing, or operator integration is implemented.
2026-05-23 Nightly content-SHA drift detection active Re-fetches every SHA-pinned artefact nightly and opens tracking issues on detected drift. Internal — no customer-facing API change.
2026-05-26 Spain Facturae runtime XSD bundle 3.2.2-research-2026-05-24 Runtime XSD validation on POST /v1/generate (standard: "facturae") and POST /v1/validate for Facturae 3.2.2 — XSD-only, no EN 16931 Schematron (Facturae’s lineage is the MINECO spec, not CEN).
2026-06-02 Romania RO_CIUS Schematron (XSLT pair via Helger phive-rules-cius-ro 4.3.5) 1.0.9 Runtime Schematron arm on POST /v1/validate for Romanian CIUS-RO UBL (current + legacy URN), plus POST /v1/generate with standard: "peppol-bis" + profile: "romania-ro-cius". Profile is provisional; promotion to supported waits on the remaining T3 negatives and phive cross-validation gate. ANAF SPV submission stays BYOC.
2026-06-09 Netherlands NLCIUS Schematron (SI-UBL 2.0 via NPa peppolautoriteit-nl/validation) 2.0.3.13 Runtime NLCIUS XSLT arm on POST /v1/validate for Dutch NLCIUS UBL (CustomizationID prefix urn:fdc:nen.nl:nlcius:v1.0, matched starts-with), plus POST /v1/generate with standard: "peppol-bis" + profile: "netherlands-nlcius". Single XSLT covers Invoice + CreditNote; failures carry BR-NL-*. Profile netherlands_peppol_nlcius promoted to supported. Digipoort / Logius B2G submission stays Peppol-AP-routed BYOC.
2026-06-11 Slovenia e-SLOG 2.0 runtime XSD bundle 2.0-08-2020 Runtime XSD validation on POST /v1/generate (standard: "eslog", invoices and credit notes) and POST /v1/validate for e-SLOG 2.0. XSD-only, no EN 16931 Schematron (GZS/ePOS publish no machine-readable business rules). UJP submission and e-route provider services stay BYOC.
2026-06-13 Netherlands NLCIUS comprehensive corpus + Schematron-only harness 2.0.3.13 (unchanged) No runtime artifact version change (SI-UBL 2.0 v2.0.3.13, same SHA; SHA-drift unchanged). Test corpus grown 10 → 120 (the full NPa SI-UBL 2.0 authority testset) and asserted by a Schematron-only harness (every document outcome plus per-rule SVRL firing). A rule-coverage audit confirms a Tier-1 negative per critical rule family. Profile netherlands_peppol_nlcius promoted supportedfully-verified; two residuals documented (UBL-SR-09/15 upstream XSLT XPTY0004 crash, BR-NL-34 under the BR-NL-32 id). No API surface change.