Skip to main content

Country compliance matrix

This page is generated. Every cell below is read directly from the JSON data files the application itself loads at boot — nobody hand-typed these facts, and nobody can let them drift: rerun npm run build (or npm run start) in documentation/ and this page is rebuilt from whatever the data files say today. See Adding a country to add a row or a column.

5 countries are known to at least one mechanism. A value means the fact is declared and sourced (or explicitly marked unverified — see the country page); a — means this exact mechanism has no file for this country at all: an honest absence, never a guessed default.

CountryPolicyB2G routeCorrection routesLocal cancelTaxesIdentifiersChannel mandate
Germany (DE)✓zre-ozgre / XRechnung8/11yesVAT 19% / 7% / 0% (legal)2 — VAT, LEGAL_IDnone — the law imposes no channel
France (FR)✓Chorus Pro / Factur-X10/11yesVAT 20% / 10% / 5.5% / 2.1% (legal)2 — LEGAL_ID, VATPDP: mandated (2026-09-01)
Italy (IT)✓SdI (clearance model) / FatturaPA8/11restrictedVAT 22% / 10% / 5% / 4% / 0% (legal)5 — VAT, LEGAL_ID, IT_PA_CODE, IT_SDI, PECSdI: mandated (2019-01-01)
Poland (PL)✓KSeF (clearance model) / FA(3)7/11noVAT 23% / 8% / 5% / 0% (legal)1 — LEGAL_IDKSeF: suggested
Portugal (PT)✓fe-ap / UBL4/11noVAT 23% / 13% / 6% (legal)2 — LEGAL_ID, VATnone — the law imposes no channel

What each column reads​

ColumnSource directoryMeaning
Policybackend/src/modules/documents/country-policy/dataWhether this country has a document-action policy file at all (which document ACTIONS — send, save-draft, … — are allowed, and under what restriction).
B2G routebackend/src/modules/documents/b2g-routing/dataThe transport + format used when this country is the government client's own country, regardless of the seller's own country. See the glossary for B2G, Peppol, CIUS and EAS.
Correction routesbackend/src/modules/documents/correction-routes/dataHow many of the eleven canonical correction routes (credit note, corrective invoice, cancel-and-replace, …) are sourced to a real legal citation for this country, out of 11.
Local cancelbackend/src/modules/documents/correction-routes/cancel-policy.tsWhether cancelling an already-issued invoice is actually implementable in this app for this country — yes (unrestricted), restricted (only from certain statuses), or no (the legal route may exist, but no channel/mechanism in this repo realizes it — see the country page).
Taxesbackend/src/modules/documents/tax/tax-systems/data + vat-rates/dataEvery VAT/GST rate this country's own catalog declares (when it has one), plus the tax kind the cross-border tax engine assumes. A country with no rate catalog still shows the one rate tax-systems/ knows.
Identifiersbackend/src/modules/documents/country-identifiers/dataHow many national identifier schemes (SIRET, EIN, VAT number, …) this country requires on a party, and which ones.
Channel mandatebackend/src/modules/documents/transports/channel-policy/dataWhat this country says about a transmission channel for a SELLER established there: merely the usual one (suggested) or legally required from a given date (mandated). This is a delivery-channel fact only — see the glossary entry for e-reporting for the separate (and not yet covered by this page) declarative obligation some countries add.

Glossary​

Terms used across this page and the country pages below. The first time one of these terms appears in the flowing text of a page, it also carries this same definition as a hover tooltip.

  • B2G — Business-to-Government — invoicing where the buyer is a public administration. Many countries mandate a specific channel and format for it.
  • CIUS — Core Invoice Usage Specification — a national or sector profile that narrows the generic Peppol BIS / EN 16931 format with extra local rules.
  • clearance model — A transmission model where the tax authority validates (and sometimes signs) an invoice before or as it reaches the buyer — as opposed to a post-audit model, where the authority only checks after the fact.
  • Credit note — A document that cancels or reduces a previously issued invoice — one of the eleven correction routes this catalog tracks.
  • e-invoicing mandate — A law that doesn't just ALLOW sending invoices electronically (almost every country does) but REQUIRES it, in a specific structured format, through a specific channel, from a specific date — as opposed to simply emailing a PDF, which most countries still permit unless a mandate like this applies.
  • e-reporting — A separate obligation — independent of how the invoice is delivered — to declare an invoice's data to the seller's own tax authority, typically in near-real time.
  • EAS — Electronic Address Scheme — the code identifying which registry (SIRET, VAT number, …) a Peppol participant id is expressed in.
  • franchise — A VAT exemption below a turnover threshold — a small business skips charging VAT at all, in exchange for not deducting it either.
  • KSeF — Krajowy System e-Faktur — Poland's national e-invoicing system; an invoice is cleared through it before being considered issued.
  • PDP — Plateforme de Dématérialisation Partenaire — a private platform accredited by the French tax authority to transmit e-invoices under the French B2B e-invoicing reform.
  • Peppol — Pan-European Public Procurement OnLine — an international network of Access Points that routes e-invoices between businesses and governments without a direct connection between sender and receiver.
  • post-audit model — A transmission model where the seller sends the invoice straight to the buyer and the tax authority only checks it later, if it checks at all — as opposed to a clearance model, where the authority validates the invoice before (or as) it reaches the buyer.
  • provenance — Where a fact on this page comes from: either "legal" — an exact quote from a law or an official source, dated — or "unverified" — an honest note saying nobody has confirmed this against the actual law yet, and what would settle it. There is no in-between and no guessing.
  • Schematron — An XML rule language used to validate an e-invoice's business rules (e.g. EN 16931's own BR-* rules) beyond what an XML schema alone can check.
  • schemeID — A short code, attached to an identifier inside an e-invoice's own XML, that says WHICH REGISTRY that identifier belongs to — e.g. Peppol's own code "0204" in front of a German public body's Leitweg-ID means "this number is a German Leitweg-ID", not a VAT number or anything else. The same idea as an EAS, spelled out as an XML attribute rather than a Peppol network concept.
  • SdI — Sistema di Interscambio — Italy's national clearance platform for e-invoices.
  • VAT — Value Added Tax — a percentage of the price, added on top, that the seller collects from the buyer and hands over to the tax authority. Most of Europe uses it; the exact percentage and the rules for who charges it depend on the country and the kind of sale.
  • XAdES — XML Advanced Electronic Signature — a standard way to attach a legally-recognized digital signature to an XML document (like an e-invoice), so the receiver can verify who signed it and that nobody altered it afterward.

Generated from the application's own per-country data files — do not edit by hand. Sources: backend/src/modules/documents/country-policy/data/, backend/src/modules/documents/b2g-routing/data/, backend/src/modules/documents/correction-routes/data/, backend/src/modules/documents/transports/channel-policy/data/, backend/src/modules/documents/tax/tax-systems/data/, backend/src/modules/documents/country-identifiers/data/, backend/src/modules/documents/mentions/data/, backend/src/modules/documents/country-fields/data/, backend/src/modules/documents/content-requirements/data/, backend/src/modules/documents/vat-rates/data/. See Adding a country for how to extend any of these. Regenerate with node documentation/scripts/generate-country-matrix.mjs (also runs automatically before npm run build/npm run start in documentation/).