Conformance checklist
Where every format in the registry stands, generated from the code and the test fixtures on each build. Back to the converter.
What it reads, country by country
Every EU country also sends Peppol BIS Billing 3.0, which converts fully. The tiles show each country's own formats; each one links to its page.
- Converted to canonical JSON
- Identified; parser still to come
ATAustria
BEBelgium
BGBulgaria
HRCroatia
CYCyprus
CZCzechia
DKDenmark
EEEstonia
FIFinland
FRFrance
DEGermany
GRGreece
HUHungary
IEIreland
ITItaly
LVLatvia
LTLithuania
LULuxembourg
MTMalta
NLNetherlands
PLPoland
PTPortugal
RORomania
SKSlovakia
SISlovenia
ESSpain
SESweden
Beyond the EU
Peppol PINT jurisdictions and Saudi ZATCA, mapped on top of the UBL parser. The PINT Schematron is not bundled, so these get the UBL schema check only.
AUAustralia
JPJapan
MYMalaysia
NZNew Zealand
OMOman
SASaudi Arabia
SGSingapore
AEUnited Arab Emirates
Checklist by format
- 46 of 46 formats have a parser; 44 convert at least one fixture, 21 of them from a real public sample.
- 2 formats have a parser but no fixture that exercises it, and 1 have no fixture at all.
- 2 detection rules are unverified. 38 formats run schema or Schematron validation.
| Format | Countries | Detection rule | Fixtures detected | Parser | Fixtures converted | Real samples converted | Mapping source | Validation |
|---|---|---|---|---|---|---|---|---|
| XRechnung (UBL)xrechnung-ubl | DE | current | 2 | yes | 2 | 1 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic, profile |
| NLCIUS (UBL)nlcius-ubl | NL | current | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| RO e-Factura (CIUS-RO)cius-ro | RO | current | 1 | yes | 1 | 1 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| CIUS-PTcius-pt | PT | current | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| HR-CIUS (Fiskalizacija 2.0)hr-cius | HR | current | 1 | yes | 1 | 1 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| France CTC (UBL)fr-ctc-ubl | FR | current | 2 | yes | 2 | 1 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| OIOUBL 3.0oioubl-3 | DK | current | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema |
| Poland PEF (Peppol BIS 3 + PL extension)pl-pef | PL | current | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| Peppol BIS Billing 3.0peppol-bis3 | EU | current | 4 | yes | 4 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic, profile |
| Peppol BIS Self-Billing 3.0peppol-bis3-selfbilling | EU | current | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema |
| Peppol PINT Singapore (InvoiceNow)pint-sg | SG | current | 1 | yes | 1 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT SG (GST as VAT-like scheme, UEN EAS 0195) | schema |
| Peppol PINT Australia and New Zealandpint-aunz | AU, NZ | current | 2 | yes | 2 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT A-NZ (ABN EAS 0151, NZBN EAS 0088, GST scheme); stored under extensions.au or extensions.nz | schema |
| Peppol PINT Japanpint-jp | JP | current | 2 | yes | 2 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT JP and the non-tax-registered variant (qualified invoice issuer number T + 13 digits) | schema |
| Peppol PINT Malaysia (MyInvois)pint-my | MY | current | 1 | yes | 1 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT MY (TIN in the GST scheme, SST in VAT, MSIC code, LHDN references) | schema |
| Peppol PINT United Arab Emiratespint-ae | AE | current | 1 | yes | 1 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT AE (eight transaction-type flags in ProfileExecutionID, TIN EAS 0235) | schema |
| Peppol PINT Omanpint-om | OM | current | 1 | yes | 1 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT OM: detected only, parsed as plain UBL | schema |
| Peppol PINT EUpint-eu | EU | current | 1 | yes | 1 | 0 | Peppol PINT specification pages (docs.peppol.eu/poac), PINT EU: parsed as plain UBL | schema |
| Peppol PINT (base and other jurisdictions)peppol-pint | EU | current | 3 | yes | 3 | 2 | Peppol PINT specification pages (docs.peppol.eu/poac): PINT base and older BIS Billing International identifiers; common part from the EN 16931 UBL binding | schema |
| Saudi ZATCA e-invoice (UBL, KSA profile)zatca-ubl | SA | current | 3 | yes | 3 | 3 | ZATCA E-Invoicing Detailed Technical Guidelines and XML Implementation Standard (zatca.gov.sa): InvoiceTypeCode/@name NNPNESB, ICV/PIH/QR references, XAdES invoice hash, QR TLV tags 1-9 | schema |
| UBL.BEubl-be | BE | legacy | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema |
| EN 16931 (UBL), no CIUSen16931-ubl | EU | current | 2 | yes | 2 | 2 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema, semantic |
| Peppol BIS 2 / CEN BII (incl. Svefaktura BIS 5A, EHF 2)peppol-bis2 | EU | legacy | 1 | yes | 1 | 0 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema |
| OIOUBL 2.xoioubl-2 | DK | legacy | 3 | yes | 3 | 2 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | not yet |
| UBL 2.x invoice, unknown profileubl-unknown | EU | unverified | 2 | yes | 2 | 1 | EN 16931-3-2 (UBL binding) as documented in the Peppol BIS Billing 3.0 syntax pages | schema |
| XRechnung (CII)xrechnung-cii | DE | current | 2 | yes | 2 | 1 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema, semantic, profile |
| NLCIUS (CII)nlcius-cii | NL | current | 1 | yes | 1 | 0 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema, semantic |
| France CTC (CII / Factur-X EXTENDED-CTC-FR)fr-ctc-cii | FR | current | 2 | yes | 2 | 1 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema, semantic |
| Factur-X / ZUGFeRD 2.xfacturx | DE, FR | current | 3 | yes | 3 | 1 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema, semantic (EN 16931 profile only) |
| EN 16931 (CII), no CIUSen16931-cii | EU | current | 2 | yes | 2 | 1 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema, semantic |
| CII invoice, unknown profilecii-unknown | EU | unverified | 1 | yes | 1 | 0 | EN 16931-3-3 (CII binding) as documented by FNFE-MPE / FeRD for Factur-X and KoSIT for XRechnung | schema |
| ZUGFeRD 1.0zugferd-1 | DE | legacy | 3 | yes | 3 | 2 | ZUGFeRD 1.0 (FeRD) CrossIndustryDocument syntax, urn:ferd:CrossIndustryDocument:invoice:1p0; no mapping document cited in the parser | not yet |
| FatturaPAfatturapa | IT | current | 10 | yes | 10 | 5 | FatturaPA 1.2.x (FPR12/FPA12) and FSM10 semplificata schemas (Agenzia delle Entrate); no mapping document cited in the parser | schema |
| FatturaPA semplificatafatturapa-semplificata | IT | current | 2 | yes | 1 | 0 | FatturaPA 1.2.x (FPR12/FPA12) and FSM10 semplificata schemas (Agenzia delle Entrate); no mapping document cited in the parser | schema |
| KSeF FA(2)/FA(3)/FA_RRksef | PL | current | 7 | yes | 7 | 2 | Ministry of Finance KSeF schemas FA(2), FA(3), FA_RR(1) (crd.gov.pl/wzor/...) and the KSeF documentation (CIRFMF/ksef-docs) | schema |
| Facturaefacturae | ES | current | 5 | yes | 4 | 0 | Facturae 3.2 / 3.2.1 / 3.2.2 schemas (Spain); no mapping document cited in the parser | schema |
| ISDOCisdoc | CZ | current | 5 | yes | 5 | 3 | ISDOC 5.2 to 6.x schema (isdoc.cz); no mapping document cited in the parser | schema |
| ebInterfaceebinterface | AT | current | 7 | yes | 6 | 4 | ebInterface 3.0 to 6.1 schemas (ebinterface.at; 3.0 to 4.2 as shipped in phax/ph-ebinterface); no mapping document cited in the parser | schema |
| ebInterface 2.xebinterface-2 | AT | legacy | 0 | yes | 0 | 0 | Not mapped: the ebinterface parser reads 3.0 to 6.1; versions 2.0-2.2 are reported as unsupported (1.0 has no namespace and is not detected) | not yet |
| Finvoicefinvoice | FI | current | 3 | yes | 3 | 1 | Finvoice 3.0 mapping onto EN 16931 (Finnish Federation of Financial Services) | schema |
| TEAPPSXMLteappsxml | FI | current | 1 | yes | 1 | 0 | TEAPPSXML v.3.0 Implementation Guide and 'Empty INVOICES-structure with explanations' (Tieto) | not yet |
| Estonian e-invoice (e-arve)e-arve | EE | current | 2 | yes | 1 | 0 | Estonian e-invoice (e-arve) 1.2 / 1.2.EN; no mapping document cited in the parser | schema |
| eSLOG 2.0eslog-2 | SI | current | 3 | yes | 2 | 0 | e-SLOG 2.0 Electronic Invoice, Part 2: Document Composition (April 2018) | schema |
| eSLOG 1.6eslog-1 | SI | current | 1 | yes | 0 | 0 | Not mapped: the eslog parser reads eSLOG 2.0 only | not yet |
| Svefaktura 1.0svefaktura-1 | SE | legacy | 3 | yes | 3 | 0 | SFTI, Mapping of Svefaktura 1.0 onto EN 16931-1, v1.4 | not yet |
| Greece myDATA invoice XMLgr-mydata | GR | current | 4 | yes | 4 | 3 | AADE myDATA InvoicesDoc XSD, invoice namespace v1.0 and income/expenses classification v1.0 | not yet |
| Mexico CFDI 3.3 / 4.0mx-cfdi | MX | current | 5 | yes | 5 | 1 | SAT Anexo 20 and the CFDI schemas cfdv40.xsd / cfdv33.xsd (sat.gob.mx/sitio_internet/cfd), with the TimbreFiscalDigital 1.1 stamp | not yet |
Generated 2026-10-18 by scripts/conformance.ts. Hand-maintained facts (which fixtures are real public samples, mapping sources) live in conformance/notes.json.
Performance
Documents converted per second by convert() on bun 1.4.2 (darwin-arm64), measured 2026-10-16; peak memory is the resident set of a fresh process that converts the file once. Numbers depend on the machine; the CI gate compares ratios to a calibration loop, not these figures.
| Case | Input | Documents/s | Peak memory |
|---|---|---|---|
| Peppol BIS 3 invoice (UBL) | 11.6 KB | 1460 | 46 MB |
| XRechnung (CII) | 8.5 KB | 2331 | 42 MB |
| FatturaPA | 5.2 KB | 2795 | 42 MB |
| KSeF FA(3) | 1.0 KB | 5958 | 39 MB |
| Factur-X PDF/A-3 | 37.0 KB | 943 | 56 MB |
| FatturaPA in CAdES .p7m | 5.2 KB | 526 | 55 MB |
| ZIP archive | 23.9 KB | 879 | 54 MB |
| UBL with relations and provenance | 11.6 KB | 1242 | 46 MB |
| UBL with XSD and Schematron validation | 11.6 KB | 7.74 | 337 MB |
| Generated invoice, 1,000 lines | 724.3 KB | 16 | 105 MB |
| Generated invoice, 10,000 lines | 7217.8 KB | 1.70 | 517 MB |
| Invoice with a 20 MB attachment | 27677.9 KB | 6.29 | 303 MB |
Browser converter: 879.4 KB of JavaScript loaded up front, 1784.0 KB with everything it can load later (the PDF and CMS chunks load only when a file needs them, the other languages when chosen). Full results: bench/results.md.