The reform in short
Invoices between businesses established in France become electronic. Since 1 September 2026 every business must be able to receive them, and large and mid-sized businesses must issue them; small and micro businesses follow on 1 September 2027. Invoices travel through an approved platform (plateforme agréée), which checks them and reports their data to the tax administration.
Three formats are accepted, all built on the European standard EN 16931: UBL, CII and Factur-X (a PDF with the CII invoice attached). The French requirements are set by the AFNOR standard XP Z12-012, and FNFE-MPE publishes them as Schematron rules, the BR-FR rules, which platforms apply in their "fatal" form from 1 October 2026.
How to check an invoice
- Open the validator with the French UBL profile, or pick France e-invoice (CII) or France Factur-X EN 16931 in the catalog.
- Paste the XML or drop the file. A Factur-X PDF works too: the XML attached to it is taken out in your browser, and an invoice that states a French billing mode (BT-23) gets the French profile for its syntax on its own.
- Press Validate. Schema errors come first; the EN 16931 and French rules run once the invoice matches the schema.
What the French rules check
- The business process (BT-23, such as S1 for goods or B1 for services), which says how the invoice is handled: BR-FR-08_BT-23.
- The seller's SIREN (9 digits, scheme 0002) and the electronic addresses of seller and buyer: BR-FR-10_BT-30, BR-FR-13_BT-34.
- Invoice numbers made of letters, digits and
+ - _ /only, dates in the 2000s, and the invoice type codes the reform accepts: BR-FR-01_BT-1-2, BR-FR-03_BT-2, BR-FR-04_BT-3. - VAT details and amounts, on top of the EN 16931 calculations such as BR-CO-15.
The EN 16931 rules run in release 1.3.16, the one the French rules are published with. Invoices that need more than EN 16931, such as multi-vendor invoices or sub-lines, use the EXTENDED-CTC-FR profile (UBL or CII) or Factur-X EXTENDED; FNFE-MPE's EXTENDED-CTC-FR rules then take the place of the EN 16931 ones.
Profiles to check with
- France e-invoice (UBL): An invoice for the French e-invoicing reform in UBL syntax, checked against the UBL 2.1 schema, the EN 16931 rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France e-credit note (UBL): A credit note for the French e-invoicing reform in UBL syntax, checked against the UBL 2.1 CreditNote schema, the EN 16931 rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France e-invoice (CII): An invoice for the French e-invoicing reform in CII syntax, checked against the CII D22B schema, the EN 16931 rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France Factur-X EN 16931: The XML of a Factur-X invoice for the French e-invoicing reform, checked against the Factur-X EN 16931 schema and rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France Factur-X BASIC WL: The XML of a Factur-X BASIC WL invoice for the French e-invoicing reform, checked against the Factur-X BASIC WL schema and rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France Factur-X EXTENDED: The XML of a Factur-X EXTENDED invoice for the French e-invoicing reform, checked against the Factur-X EXTENDED schema and rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France EXTENDED-CTC-FR (UBL): An invoice in the French EXTENDED-CTC-FR profile in UBL syntax, checked against the UBL 2.1 schema, the EXTENDED-CTC-FR rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
- France EXTENDED-CTC-FR (CII): An invoice in the French EXTENDED-CTC-FR profile in CII syntax, checked against the CII D22B schema, the EXTENDED-CTC-FR rules and the French rules (BR-FR-*) published by FNFE-MPE. Validate
Rules invoices break most
Each one has a page with what it checks, its test and, for many, how to fix it.
BR-FR-08_BT-23: La valeur du cadre de facturation (ram:ID) est absente ou n’est pas autorisée. Valeurs acceptées : B1, S1, M1, B2, S2, M2, S3, B4, S4, M4, S5, S6, B7, S7, B8, S...BR-FR-10_BT-30: Le SIREN du vendeur (CompanyID[@schemeID='0002']) est obligatoire et doit être composé exactement de 9 chiffres. Valeur actuelle : " … ". Veuillez renseigner un...BR-FR-13_BT-34: Le BT-34 (cbc:EndpointID du vendeur) est obligatoire. Valeur actuelle : BT-34=" … ".BR-FR-01_BT-1-2: L'identifiant de facture (cbc:ID) contient des caractères non autorisés. Valeur actuelle : " … ". Seuls les caractères alphanumériques et les symboles + - _ / s...BR-FR-04_BT-3: Le code type de document (cbc:InvoiceTypeCode") n’est pas autorisé. Valeurs acceptées : 380, 389, 393, 501, 386, 500, 384, 471, 472, 473, 261, 262, 381, 396, 50...BR-FR-03_BT-2: La date d’émission doit contenir une année comprise entre 2000 et 2099, au format AAAAMMJJ. Valeur actuelle : " … ". Veuillez vérifier que l’année est correcte...BR-CO-15: Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
Questions
Is the invoice uploaded?
No. The schema check and the rules both run in your browser. Only the API and URL monitors validate on our servers.
Does a valid result mean my platform will accept the invoice?
It means the invoice passes the published schema, EN 16931 and BR-FR rules, which approved platforms apply. A platform can still refuse it for reasons outside the invoice, such as a buyer it cannot find in the directory.
Which version of the rules is used?
The FNFE-MPE rules 1.4.0.04 (4 September 2026) for XP Z12-012 1.4, with the EN 16931 rules 1.3.16. A weekly check tells us when FNFE-MPE publishes a newer release.
Can I check invoices in bulk or from code?
Yes: a folder or .zip of up to 1,000 invoices in the browser, or the API and the command-line client with --schema france-ctc-ubl.
Official sources
Other countries
- German e-invoice validator: XRechnung and ZUGFeRD
- Belgian e-invoice validator: Peppol BIS
- KSeF invoice validator: FA(3)
- Croatian eRačun validator
- RO e-Factura validator
- FatturaPA validator
- UAE e-invoice validator (PINT AE)
- InvoiceNow validator (PINT SG)
- JP PINT validator
- Australian e-invoice validator (PINT A-NZ)
- Spanish e-invoice validator