Skip to content

Validation

Fiscalane validation results

We checked 1,990 unique Fiscalane test documents against the official UBL 2.1 XSD and EN 16931 / Peppol BIS 3.0 Schematron on 22 Oct 2026 and found 0 fatal errors. Here are the validator versions and sample files, so you can check the results yourself.

Headline numbers

Unique test documents
1,990
3,787 exported files across 3 seeds; identical files counted once (by sha256).
Fatal errors
0
0 fatal assertions and 0 XSD failures in every seed.
Run on
22 Oct 2026
Report generated 15:19 UTC.

Fiscalane is not a certification and not a Peppol Access Point. It checks a documented subset of the rules; a receiver's own validator may check more.

What we ran

As recorded in the run report.

Command
npm run validate:proof
Seeds
1, 2 and 3
Generated cases
500 per seed (1,500 in total). Each seed also runs the fixed named test cases, so it exports more files than it has generated cases.
Run at commit
0568b27 (clean working tree)
Runtime
135 seconds
Environment
Java 21.0.12.1, xmllint (libxml 20913)

Validators

Official files, pinned by version and sha256.

  • UBL 2.1 XSD

    Version 2.1

    UBL-2.1.zip

    sha256
    60b80d76394a
    Source
    OASIS
  • CEN EN 16931 UBL Schematron

    Version 1.3.16

    en16931-ubl-1.3.16.zip

    sha256
    bafada015efb
  • Peppol BIS Billing 3.0 Schematron

    Version 3.0.20

    PEPPOL-EN16931-UBL-v3.0.20.sch

    sha256
    5ddf3a2f6633
  • Saxon-HE

    Version 12.5

    Saxon-HE-12.5.jar

    sha256
    98c3a91e6e5a
  • SchXslt

    Version 1.10.1

    schxslt-1.10.1.jar

    sha256
    4f4f21edab7b

Also pinned: xmlresolver-5.2.2.jar, xmlresolver-5.2.2-data.jar. Each file is downloaded from its source and refused if its sha256 differs.

Results per seed

Results per seed, with totals
SeedGenerated casesExported filesRefused by Fiscalane's checkFatal assertionsXSD failuresWarnings (not fatal)
15001,2601670048
25001,2571700058
35001,2701570039
All seeds1,5003,7871,990 unique49400145

Scroll the table sideways to see every column.

Only files that Fiscalane's own check accepts are exported and sent to the validators; refused cases include deliberate negative tests. Warning rules seen: NO-R-002 (93), PEPPOL-COMMON-R047 (34), DK-R-003 (3), DK-R-017 (3), PEPPOL-COMMON-R044 (3), PEPPOL-COMMON-R045 (3), PEPPOL-COMMON-R052 (3), PEPPOL-COMMON-R053 (3).

Rules covered and not covered

Covered in this run

  • Structure against the UBL 2.1 XSD: 0 XSD failures.
  • EN 16931 business rules (CEN UBL Schematron 1.3.16): 0 fatal assertions.
  • Peppol BIS Billing 3.0.20 rules, including country sections: 0 fatal, 145 warnings across 8 rule ids.
  • 4 internal sample files and 1 public sample: 0 fatal, 0 XSD failures.

Not covered

  • This is evidence on a generated corpus, not proof; rules newer than those versions are not covered.
  • Peppol may also accept or reject documents for reasons outside these files (access point policies, receiver-side checks).
  • UBL 2.1 Invoice/CreditNote with BIS 3.0 identifiers only; no Factur-X/CII, XRechnung or other national CIUS, no document-level allowances/charges unless the rule table says so.
  • Unsupported by design: Greek sellers (MARK number etc.), direct debit (payment means 49 and 59: the e-invoice needs a mandate reference Fiscalane does not hold), card payments between German parties (DE-R-024), Danish Giro and FIK (means 50, 93), Icelandic payment means 9 and 42 (need account formats Fiscalane does not hold), intra-community supply (VAT category K), currencies with more than 2 decimals (EN 16931 limit), fractional line totals in 0-decimal currencies (JPY).
  • No delivery: no Access Point, no SMP lookup, no Peppol network sending.

Download samples

Sample data only. Open it in any Peppol validator.

Download fiscalane-sample-invoice.xml

Invoice SAMPLE-0001. sha256 014a36b1a3c3. 0 fatal, 0 XSD failures in this run.