Skip to main content

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:

CountryB2G MandateB2B StatusCIUS
๐Ÿ‡ณ๐Ÿ‡ฑ Netherlandsโœ… RequiredEncouragedNLCIUS
๐Ÿ‡ฉ๐Ÿ‡ช Germanyโœ… RequiredEncouragedXRechnung
๐Ÿ‡ง๐Ÿ‡ช 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 2027Factur-X
๐Ÿ‡ฎ๐Ÿ‡น Italyโœ… Requiredโœ… RequiredFatturaPA
๐Ÿ‡ช๐Ÿ‡ธ Spainโœ… RequiredGrowingโ€”
๐Ÿ‡ต๐Ÿ‡น Portugalโœ… RequiredGrowingโ€”
๐Ÿ‡ฆ๐Ÿ‡น Austriaโœ… RequiredGrowingโ€”
๐Ÿ‡ต๐Ÿ‡ฑ Polandโœ… RequiredComingKSeF
What the CIUS column means

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:

CountryB2G MandateB2B StatusNotes
๐Ÿ‡ณ๐Ÿ‡ด Norwayโœ… RequiredCommonEHF format
๐Ÿ‡ธ๐Ÿ‡ช Swedenโœ… RequiredCommonSvefaktura
๐Ÿ‡ฉ๐Ÿ‡ฐ Denmarkโœ… RequiredCommonOIOUBL
๐Ÿ‡ซ๐Ÿ‡ฎ Finlandโœ… RequiredCommonFinvoice

Asia-Pacificโ€‹

Growing Peppol adoption:

CountryB2G StatusB2B StatusNotes
๐Ÿ‡ธ๐Ÿ‡ฌ Singaporeโœ… InvoiceNowGrowingGovernment push
๐Ÿ‡ฆ๐Ÿ‡บ Australiaโœ… AvailableGrowingPINT A-NZ
๐Ÿ‡ณ๐Ÿ‡ฟ New Zealandโœ… AvailableGrowingPINT A-NZ
๐Ÿ‡ฏ๐Ÿ‡ต Japanโœ… PilotStartingJP PINT
๐Ÿ‡ฒ๐Ÿ‡พ Malaysiaโœ… MyInvoisMandated 2024+LHDN

Middle East (GCC)โ€‹

Oman and the United Arab Emirates have Peppol Authorities. Saudi Arabia and Qatar do not.

CountryB2G StatusB2B StatusNotes
๐Ÿ‡ฆ๐Ÿ‡ช UAEMandatory: government entities appoint an Accredited Service Provider by 31 March 2027 and go live on 1 October 2027Mandatory, 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 2026Ministry 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โœ… MandatedFATOORA (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
๐Ÿ‡ถ๐Ÿ‡ฆ QatarNo dates publishedDraft e-invoicing law and executive regulations approved by the Cabinet on 6 May 2026; no dates publishedMinistry of Finance and General Tax Authority. Qatar has no Peppol Authority
๐Ÿ‡ด๐Ÿ‡ฒ Omanโœ… AvailableMandated from 1 April 2027Tax 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โ€‹

CountryB2G StatusB2B StatusNotes
๐Ÿ‡ณ๐Ÿ‡ฌ Nigeriaโœ… NRSMBSPhased mandateNigeria Revenue Service Merchant Buyer Solution โ€” clearance model (IRN + QR), SI / APP roles

Americasโ€‹

CountryB2G StatusB2B StatusNotes
๐Ÿ‡บ๐Ÿ‡ธ United StatesAvailableGrowingBusiness Payments Coalition
๐Ÿ‡จ๐Ÿ‡ฆ CanadaAvailableGrowingโ€”
๐Ÿ‡ฒ๐Ÿ‡ฝ Mexicoโœ… CFDIโœ… RequiredSAT integration

Identifier Schemes by Countryโ€‹

Quick reference for the most common schemes:

Netherlands ๐Ÿ‡ณ๐Ÿ‡ฑโ€‹

SchemeNameFormatExample
0106KVK8 digits12345678
0190OIN20 digits00000001234567890000

Germany ๐Ÿ‡ฉ๐Ÿ‡ชโ€‹

SchemeNameFormatExample
0204VATDE + 9 digitsDE123456789
0209Leitweg-IDVariable991-12345-67

Belgium ๐Ÿ‡ง๐Ÿ‡ชโ€‹

SchemeNameFormatExample
0208CBE/KBO10 digits0123456789

France ๐Ÿ‡ซ๐Ÿ‡ทโ€‹

SchemeNameFormatExample
9925SIRET14 digits12345678901234
0009SIREN9 digits123456789

Italy ๐Ÿ‡ฎ๐Ÿ‡นโ€‹

SchemeNameFormatExample
0210Codice Fiscale11-16 charsRSSMRA85M01H501W
0211IPA Code6 charsUFABCD

Norway ๐Ÿ‡ณ๐Ÿ‡ดโ€‹

SchemeNameFormatExample
0192Organisasjonsnummer9 digits123456789

Sweden ๐Ÿ‡ธ๐Ÿ‡ชโ€‹

SchemeNameFormatExample
0007Organisationsnummer10 digits1234567890

Singapore ๐Ÿ‡ธ๐Ÿ‡ฌโ€‹

SchemeNameFormatExample
0195UENVariableS12345678A

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.

EndpointPurpose
POST /api/v1/invoices/validateFast structural and business-rule check (dry run)
POST /api/v1/invoices/validate/deepFull 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:

FieldTypeMeaning
is_validbooleanFalse if any error or fatal finding
error_countintegerNumber of errors
warning_countintegerNumber of warnings
validation_time_msnumberValidation duration
schematron_versionstringSchematron pack version applied
profileobjectAudit metadata: schematron_release_track, schematron_pack_checksum, cius_pack_ids_applied
errorsarrayFindings with layer, identifier, identifier_type
warningsarraySame shape as errors
scoreintegerCompliance score, 0โ€“100
ubl_xml_previewstringPreview of the generated UBL XML if validation passes
cius_pack_ids_applied is always empty

The 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.

PackSourceApplies to
Peppol BIS 3.0 (PEPPOL-EN16931-UBL)OpenPeppolBaseline for every non-PINT document
CEN EN16931 (CEN-EN16931-UBL)OpenPeppolBaseline for every non-PINT document
PINT EUOpenPeppol PINT euDocuments whose CustomizationID is PINT EU
PINT JapanOpenPeppol PINT jpPINT JP documents
PINT SingaporeOpenPeppol PINT sgPINT SG documents
PINT A-NZ Billing (v1.1.3)OpenPeppol PINT aunzPINT A-NZ billing documents
PINT A-NZ Self-billing (v1.1.3)OpenPeppol PINT aunz-sbPINT A-NZ self-billing documents
PINT MalaysiaOpenPeppol PINT myPINT MY documents
PINT OmanCopied into the image (not yet published by OpenPeppol)PINT OM documents
XRechnung UBL (3.0.2, Schematron 2.6.0)KoSIT itplr-kosit/xrechnung-schematronUBL documents whose CustomizationID (BT-24) names XRechnung
XRechnung CII (3.0.2, Schematron 2.6.0)KoSIT itplr-kosit/xrechnung-schematronCII documents whose CustomizationID (BT-24) names XRechnung
CEN EN 16931 CII (1.3.16)ConnectingEurope eInvoicing-EN16931Every 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.

NLCIUS and FatturaPA Schematron is still not run, and there is no Factur-X profile pack

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โ€‹

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.