Country Guides
E-invoicing requirements vary by country. This section covers country-specific requirements, identifier schemes, and compliance rules.
European Unionโ
Peppol is mandated or widely adopted across the EU:
| Country | B2G Mandate | B2B Status | CIUS |
|---|---|---|---|
| ๐ณ๐ฑ Netherlands | โ Required | Encouraged | NLCIUS |
| ๐ฉ๐ช Germany | โ Required | Encouraged | XRechnung |
| ๐ง๐ช Belgium | โ Required | โ Mandatory since 1 January 2026 | โ |
| ๐ซ๐ท France | โ Required | โ Receiving mandatory for all since 1 September 2026; issuing phased โ large and mid-sized from 1 September 2026, smaller businesses from 1 September 2027 | Factur-X |
| ๐ฎ๐น Italy | โ Required | โ Required | FatturaPA |
| ๐ช๐ธ Spain | โ Required | Growing | โ |
| ๐ต๐น Portugal | โ Required | Growing | โ |
| ๐ฆ๐น Austria | โ Required | Growing | โ |
| ๐ต๐ฑ Poland | โ Required | Coming | KSeF |
This column names the national CIUS or format that applies in that country. It is not a statement about which Schematron packs GoRoute compiles and runs โ for that, see Schematron packs GoRoute actually runs below.
Nordicsโ
Strong Peppol adoption in Nordic countries:
| Country | B2G Mandate | B2B Status | Notes |
|---|---|---|---|
| ๐ณ๐ด Norway | โ Required | Common | EHF format |
| ๐ธ๐ช Sweden | โ Required | Common | Svefaktura |
| ๐ฉ๐ฐ Denmark | โ Required | Common | OIOUBL |
| ๐ซ๐ฎ Finland | โ Required | Common | Finvoice |
Asia-Pacificโ
Growing Peppol adoption:
| Country | B2G Status | B2B Status | Notes |
|---|---|---|---|
| ๐ธ๐ฌ Singapore | โ InvoiceNow | Growing | Government push |
| ๐ฆ๐บ Australia | โ Available | Growing | PINT A-NZ |
| ๐ณ๐ฟ New Zealand | โ Available | Growing | PINT A-NZ |
| ๐ฏ๐ต Japan | โ Pilot | Starting | JP PINT |
| ๐ฒ๐พ Malaysia | โ MyInvois | Mandated 2024+ | LHDN |
Middle East (GCC)โ
Oman and the United Arab Emirates have Peppol Authorities. Saudi Arabia and Qatar do not.
| Country | B2G Status | B2B Status | Notes |
|---|---|---|---|
| ๐ฆ๐ช UAE | Mandatory: government entities appoint an Accredited Service Provider by 31 March 2027 and go live on 1 October 2027 | Mandatory, in phases. Revenue of AED 50 million or more: appoint a provider by 30 October 2026, go live on 1 January 2027. Below AED 50 million: appoint by 31 March 2027, go live on 1 July 2027. Voluntary exchange and reporting since July 2026 | Ministry of Finance (regulator and UAE Peppol Authority); invoice data is reported to the Federal Tax Authority. Peppol, five-corner model, PINT AE. GoRoute does not yet produce or validate PINT AE documents |
| ๐ธ๐ฆ Saudi Arabia | โ ZATCA | โ Mandated | FATOORA (ZATCA). Phase 2, the Integration Phase, is rolling out in waves by taxpayer group โ not Fawtara, which is Oman's programme. Saudi Arabia has no Peppol Authority. GoRoute has no FATOORA integration |
| ๐ถ๐ฆ Qatar | No dates published | Draft e-invoicing law and executive regulations approved by the Cabinet on 6 May 2026; no dates published | Ministry of Finance and General Tax Authority. Qatar has no Peppol Authority |
| ๐ด๐ฒ Oman | โ Available | Mandated from 1 April 2027 | Tax Authority / Fawtara. Decision 189/2026: above OMR 5,000,000 of annual supplies from 1 April 2027, at or below from 1 October 2027 |
UAE row, as of 9 October 2026: UAE Ministry of Finance, UAE eInvoicing Programme (30 June 2026), and mof.gov.ae/einvoicing. The dates are set by Ministerial Decision No. 244 of 2025, as amended by Ministerial Resolution No. 66 of 2026.
Peppol Authorities and the Qatar row, as of 9 October 2026: OpenPeppol, Peppol Authorities, and Qatar News Agency, Cabinet Holds Regular Meeting (6 May 2026).
Africaโ
| Country | B2G Status | B2B Status | Notes |
|---|---|---|---|
| ๐ณ๐ฌ Nigeria | โ NRSMBS | Phased mandate | Nigeria Revenue Service Merchant Buyer Solution โ clearance model (IRN + QR), SI / APP roles |
Americasโ
| Country | B2G Status | B2B Status | Notes |
|---|---|---|---|
| ๐บ๐ธ United States | Available | Growing | Business Payments Coalition |
| ๐จ๐ฆ Canada | Available | Growing | โ |
| ๐ฒ๐ฝ Mexico | โ CFDI | โ Required | SAT integration |
Identifier Schemes by Countryโ
Quick reference for the most common schemes:
Netherlands ๐ณ๐ฑโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0106 | KVK | 8 digits | 12345678 |
0190 | OIN | 20 digits | 00000001234567890000 |
Germany ๐ฉ๐ชโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0204 | VAT | DE + 9 digits | DE123456789 |
0209 | Leitweg-ID | Variable | 991-12345-67 |
Belgium ๐ง๐ชโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0208 | CBE/KBO | 10 digits | 0123456789 |
France ๐ซ๐ทโ
| Scheme | Name | Format | Example |
|---|---|---|---|
9925 | SIRET | 14 digits | 12345678901234 |
0009 | SIREN | 9 digits | 123456789 |
Italy ๐ฎ๐นโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0210 | Codice Fiscale | 11-16 chars | RSSMRA85M01H501W |
0211 | IPA Code | 6 chars | UFABCD |
Norway ๐ณ๐ดโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0192 | Organisasjonsnummer | 9 digits | 123456789 |
Sweden ๐ธ๐ชโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0007 | Organisationsnummer | 10 digits | 1234567890 |
Singapore ๐ธ๐ฌโ
| Scheme | Name | Format | Example |
|---|---|---|---|
0195 | UEN | Variable | S12345678A |
Country-Specific Validationโ
GoRoute applies country-specific validation rules through the deep-validation endpoint. Both validation endpoints take a JSON body containing a canonical invoice โ not raw XML.
| Endpoint | Purpose |
|---|---|
POST /api/v1/invoices/validate | Fast structural and business-rule check (dry run) |
POST /api/v1/invoices/validate/deep | Full CEN EN16931 + Peppol BIS Schematron validation, or the PINT pack for a PINT document |
import requests
response = requests.post(
"https://app.goroute.ai/peppol-api/api/v1/invoices/validate/deep",
headers={
"X-API-Key": "your_api_key",
"Content-Type": "application/json",
},
json={
"invoice": invoice, # CanonicalInvoice
"include_schematron": True,
},
)
result = response.json()
print(result["is_valid"], result["error_count"], result["warning_count"])
How the Schematron pack is selectedโ
There is no cius query parameter, and receiver_country does not select one either.
Pack selection is driven entirely by the document itself. GoRoute reads the document's syntax
and its cbc:CustomizationID, in this order:
- Deep validation always checks the UBL GoRoute renders from your invoice. CII documents (the XML inside a ZUGFeRD or Factur-X PDF, or XRechnung CII) are not validated or accepted as raw XML by the public API โ see ZUGFeRD, Factur-X and XRechnung CII.
- National rule sets such as KoSIT XRechnung are not run by deep validation today; see the Germany guide.
- If it identifies a PINT jurisdiction that GoRoute has a compiled pack for, that PINT pack is run instead of CEN EN16931 โ not in addition to it. The PINT pack already incorporates the adapted EN16931 rules.
- Otherwise the document is validated against CEN EN16931 + Peppol BIS 3.0.
DeepValidationRequest does accept an optional receiver_country. It feeds a national CIUS
layer that is not implemented: the layer runs, finds nothing configured, and returns no
pack. Setting it changes nothing about which Schematron runs.
Deep validation responseโ
The response is a DeepValidationResponse:
| Field | Type | Meaning |
|---|---|---|
is_valid | boolean | False if any error or fatal finding |
error_count | integer | Number of errors |
warning_count | integer | Number of warnings |
validation_time_ms | number | Validation duration |
schematron_version | string | Schematron pack version applied |
profile | object | Audit metadata: schematron_release_track, schematron_pack_checksum, cius_pack_ids_applied |
errors | array | Findings with layer, identifier, identifier_type |
warnings | array | Same shape as errors |
score | integer | Compliance score, 0โ100 |
ubl_xml_preview | string | Preview of the generated UBL XML if validation passes |
cius_pack_ids_applied is always emptyThe field exists on the response, but the national CIUS layer that would populate it is not
implemented, so it is permanently an empty list. Do not use it as an audit trail of
which national rules were applied. The audit fields that are actually populated are
profile.schematron_release_track and profile.schematron_pack_checksum.
Compliance gate policy: error and fatal severities reject (is_valid: false); warning
severity passes with a flag (is_valid: true, logged).
Schematron packs GoRoute actually runsโ
These are the packs compiled into the GoRoute validator image at build time. Anything not on this list is not validated by a national Schematron, whatever the country guide for that jurisdiction says about local requirements.
| Pack | Source | Applies to |
|---|---|---|
Peppol BIS 3.0 (PEPPOL-EN16931-UBL) | OpenPeppol | Baseline for every non-PINT document |
CEN EN16931 (CEN-EN16931-UBL) | OpenPeppol | Baseline for every non-PINT document |
| PINT EU | OpenPeppol PINT eu | Documents whose CustomizationID is PINT EU |
| PINT Japan | OpenPeppol PINT jp | PINT JP documents |
| PINT Singapore | OpenPeppol PINT sg | PINT SG documents |
| PINT A-NZ Billing (v1.1.3) | OpenPeppol PINT aunz | PINT A-NZ billing documents |
| PINT A-NZ Self-billing (v1.1.3) | OpenPeppol PINT aunz-sb | PINT A-NZ self-billing documents |
| PINT Malaysia | OpenPeppol PINT my | PINT MY documents |
| PINT Oman | Copied into the image (not yet published by OpenPeppol) | PINT OM documents |
| XRechnung UBL (3.0.2, Schematron 2.6.0) | KoSIT itplr-kosit/xrechnung-schematron | UBL documents whose CustomizationID (BT-24) names XRechnung |
| XRechnung CII (3.0.2, Schematron 2.6.0) | KoSIT itplr-kosit/xrechnung-schematron | CII documents whose CustomizationID (BT-24) names XRechnung |
| CEN EN 16931 CII (1.3.16) | ConnectingEurope eInvoicing-EN16931 | Every document in CII syntax โ the XML inside a ZUGFeRD or Factur-X PDF, and XRechnung CII |
The two A-NZ versions are the versions OpenPeppol publishes today at the two addresses the image downloads from when it is built. See the Australia guide for what the A-NZ rule identifiers look like and which of them are specific to Australia and New Zealand.
Three packs were added on 7 September 2026 and are named in the table above: XRechnung in UBL,
XRechnung in CII, and the CEN EN 16931 rules for the CII syntax. They are compiled into the
image, but no public endpoint runs them today: deep validation runs CEN EN16931 + Peppol
BIS 3.0 (or the PINT pack), and raw XML sent to POST /api/v1/documents must be UBL. Read that
list precisely, because more things people expect are absent:
- The Netherlands (NLCIUS) and Italy (FatturaPA) have no national pack. Those documents are validated against CEN EN16931 + Peppol BIS 3.0 only, exactly as before.
- There is no Factur-X or ZUGFeRD profile pack. A document in CII syntax is checked against the CEN EN 16931 CII rules. That is not the same as conformance to a Factur-X or ZUGFeRD profile, and we do not claim it.
If you need XRechnung, NLCIUS, FatturaPA or profile-level Factur-X conformance today, validate against the national tooling as well.
Availability: the three packs above were added in the release of 7 September 2026 and were read
from the product source in this repository (app/cius/germany/schematron/, selected in
app/services/schematron_validator.py). The release record pins that build to production; we have
not separately probed the production service for them.
Only PINT versions that OpenPeppol publishes on its A-NZ specification pages are stated
above; the other PINT packs are pulled from OpenPeppol's current resources.zip at image
build time and are not pinned to a version this documentation can quote.
Country Guidesโ
Select a country for detailed requirements:
- ๐ณ๐ฑ Netherlands โ KVK, OIN, DigiInkoop
- ๐ฉ๐ช Germany โ XRechnung, Leitweg-ID
- ๐ง๐ช Belgium โ CBE, Mercurius
- ๐ซ๐ท France โ Chorus Pro, Factur-X
- ๐ฎ๐น Italy โ SDI, FatturaPA
- ๐ณ๐ด Norway โ EHF, Altinn
- ๐จ๐ญ Switzerland โ UID, e-bill
- ๐ธ๐ช Sweden โ Organisationsnummer, Svefaktura
- ๐ต๐ฑ Poland โ KSeF, NIP
- ๐ท๐ด Romania โ RO e-Factura, CUI
- ๐ธ๐ฌ Singapore โ InvoiceNow, UEN
- ๐ฆ๐บ Australia โ ABN 0151, PINT A-NZ, GST
- ๐ณ๐ฟ New Zealand โ MBIE, NZBN 0088, PINT A-NZ, GST
- ๐ด๐ฒ Oman โ Fawtara, QR Code, 0248
- ๐ณ๐ฌ Nigeria โ NRSMBS, IRN, QR code, invoice_kind, TIN
Next Stepsโ
Further readingโ
- Global e-invoicing platform
- The Peppol network
- 2026 e-invoicing mandate tracker โ every country, one page
- How to choose a Peppol Access Point
- One API for multi-country e-invoicing
Ready to build? The free developer sandbox gives you test credentials and a registered participant, provisioned within 24 hours on business days. Recorded ERP integration walkthroughs are on the tutorials page.