Skip to content
EN

Factur-X Explained: France's Hybrid E-Invoice Format (2026)

Short answer: Factur-X is a PDF invoice with a structured XML file embedded inside. People read the PDF. Software, and the French tax authority’s systems, read the XML. It’s one of the three base formats of France’s e-invoicing reform, alongside UBL and CII, and it’s technically identical to Germany’s ZUGFeRD. The current version is Factur-X 1.09.2 (August 2026). For the French reform, use the EN 16931 profile, or EXTENDED-CTC-FR if you need extra French fields, and send the file through your Plateforme Agréée, not by email.

This guide is for small French businesses, foreign sellers with French customers, and developers asked to “generate Factur-X”. For the reform’s dates, platforms and penalties, see E-invoicing in France. This page goes deeper on the format itself.

What it isA hybrid e-invoice: a PDF/A-3 file with a CII XML file embedded inside
Maintained byFNFE-MPE (Forum National de la Facture Électronique et des Marchés Publics Électroniques), jointly with Germany’s FeRD
Current versionFactur-X 1.09.2, published 4 August 2026 (= ZUGFeRD 2.5.2)
XML syntaxUN/CEFACT Cross Industry Invoice (CII), D22B schema, backward compatible with D16B
Built onThe European standard EN 16931
ProfilesMINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED. France adds the EXTENDED-CTC-FR reference profile
Role in the French reformOne of three base formats (with UBL and CII) that every Plateforme Agréée must accept
Also usedOn Chorus Pro for French public sector invoices since 2018, and in Germany as ZUGFeRD
CostFree. The specification is a free download from FNFE-MPE
Your situationWhat to do
French business invoicing French businesses, subject to the issuance obligation (from 1 September 2026 or 2027)Issue e-invoices through your Plateforme Agréée. Factur-X is a good choice if your customers like a readable PDF. UBL or CII also work
Your platform or software already creates the e-invoice for youYou may never handle the Factur-X file directly. Check that it uses the EN 16931 profile or EXTENDED-CTC-FR
Foreign business with no French establishment, invoicing French businessesYou’re outside the French e-invoicing obligation. Your customer may still ask for Factur-X. See foreign companies
Invoicing German businessesFactur-X in a qualifying profile is a valid German e-invoice. It’s the same file as ZUGFeRD
Invoicing French public bodiesSend through Chorus Pro, which has accepted Factur-X since 2018
Selling only to consumersNo e-invoice. Your sales may need e-reporting instead (see France: e-reporting)

A Factur-X invoice is one PDF file containing two things:

  1. A PDF/A-3 document that looks like a normal invoice. PDF/A is the archive version of PDF, and version 3 allows file attachments.
  2. An XML file named factur-x.xml, attached inside the PDF, with all the invoice data in structured form.

The PDF’s XMP metadata declares the profile, so receiving software knows what to expect:

<rdf:Description rdf:about=""
xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#">
<fx:DocumentType>INVOICE</fx:DocumentType>
<fx:DocumentFileName>factur-x.xml</fx:DocumentFileName>
<fx:Version>1.0</fx:Version> <!-- version of this metadata schema, not of Factur-X -->
<fx:ConformanceLevel>EN 16931</fx:ConformanceLevel> <!-- must match BT-24 in the XML -->
</rdf:Description>

The XML is what counts. Under the French reform, the platforms read the structured data, check it against the business rules, route the invoice and pass the required data to the tax authority. The PDF is there for people.

Here’s a shortened excerpt for the wholesale order in the France guide: Atelier Lumière, a Lyon candle maker, sells 200 candles at €12.00 to a Paris concept store. The excerpt shows the two parties. The SIREN and VAT numbers are made up.

<ram:SellerTradeParty>
<ram:Name>Atelier Lumière SAS</ram:Name> <!-- BT-27: seller name -->
<ram:SpecifiedLegalOrganization>
<ram:ID schemeID="0002">123456782</ram:ID> <!-- BT-30: seller SIREN (0002 = SIRENE) -->
</ram:SpecifiedLegalOrganization>
<ram:PostalTradeAddress>
<ram:PostcodeCode>69002</ram:PostcodeCode>
<ram:CityName>Lyon</ram:CityName>
<ram:CountryID>FR</ram:CountryID> <!-- BT-40 -->
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">FR11123456782</ram:ID> <!-- BT-31: seller VAT number -->
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:Name>Maison Concept SARL</ram:Name> <!-- BT-44: buyer name -->
<ram:SpecifiedLegalOrganization>
<ram:ID schemeID="0002">987654324</ram:ID> <!-- BT-47: buyer SIREN, a new mandatory mention -->
</ram:SpecifiedLegalOrganization>
<!-- ...buyer address and VAT number... -->
</ram:BuyerTradeParty>

And the totals, which must add up exactly:

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>2400.00</ram:LineTotalAmount> <!-- BT-106 -->
<ram:TaxBasisTotalAmount>2400.00</ram:TaxBasisTotalAmount> <!-- BT-109: total excl. VAT -->
<ram:TaxTotalAmount currencyID="EUR">480.00</ram:TaxTotalAmount> <!-- BT-110: TVA at 20% -->
<ram:GrandTotalAmount>2880.00</ram:GrandTotalAmount> <!-- BT-112: total incl. VAT -->
<ram:DuePayableAmount>2880.00</ram:DuePayableAmount> <!-- BT-115: amount due -->
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

The reform’s new mandatory mentions, such as the buyer’s SIREN, the delivery address and the category of the transaction, must be in this structured data. Printing them on the PDF alone isn’t enough.

VersionReleasedWhat changed
1.031 December 2017First version, built on the new EN 16931 standard. Taken up by Chorus Pro in 2018
1.0 release matching ZUGFeRD 2.124 March 2020Factur-X and ZUGFeRD become one identical joint standard
1.0718 September 2024Joint release with ZUGFeRD 2.3
1.084 December 2025, in use from 15 January 2026Moved to CII D22B. Sub-lines for kits and bundles. New EXTENDED elements for the French B2B reform. Supports reference profiles such as EXTENDED-CTC-FR
1.0910 June 2026, in use from 1 July 2026Updated EN 16931 code lists. More EXTENDED elements from the revised EN 16931-1, with adjustments for French B2B exchanges
1.09.24 August 2026Corrigendum to 1.09, fixing inconsistencies in the new EXTENDED elements. Current version

Sources: FNFE-MPE’s Factur-X page, the joint 1.08 press release and FeRD’s 1.09.2 announcement.

FeRD has said the next joint release is expected in autumn 2026, mainly adding gross-price invoices. We couldn’t find it published as of 26 October 2026. Each version is backward compatible, so a valid 1.08 file doesn’t become invalid when 1.09 comes out.

A profile sets how much data the XML carries. The French rules are set by the AFNOR standard XP Z12-012, referenced in the tax code, which defines the formats and profiles usable under the reform.

ProfileWhat it carriesFrench reformGerman B2B
MINIMUMParties and totals onlyNot usable: not enough structured dataNo
BASIC WLHeader and totals, no linesReported as tolerated during the start-up phase only, until 1 September 2027. Check with your platformNo
BASICSimple lines, a subset of EN 16931Not used as a separate profile. A BASIC file is also valid EN 16931, so declare it as EN 16931Yes
EN 16931Everything in the European standardYes, the default, with the French business rules (BR-FR) appliedYes
EXTENDEDEN 16931 plus many extra fieldsYes, but platforms validate it against EXTENDED-CTC-FRYes
EXTENDED-CTC-FRA subset of EXTENDED with the extra French data fieldsYes, for cases the base standard can’t handlen/a

The French status of each profile comes from published summaries of XP Z12-012, which is revised regularly. The France guide notes the MINIMUM restriction too. The details of BASIC WL in particular are still to be confirmed in updated texts, so ask your platform which profiles it accepts.

In the reform, the EN 16931 profile works as a French CIUS: the European standard with extra French business rules, coded BR-FR, on top. They cover the reform’s new mandatory mentions, such as the buyer’s SIREN, the delivery address and the transaction category, plus checks on identifiers, decimals and code lists. The same rules apply whether you send Factur-X, UBL or CII. FNFE-MPE publishes them as schematron files in its France_RFE repository.

EXTENDED-CTC-FR is the French extension, a subset of Factur-X’s EXTENDED profile. It adds French data fields, coded EXT-FR-FE-..., for cases the European standard doesn’t cover well: extra third parties (a payer, agents, a separate invoicer), invoicing on behalf of others, factoring and subcontracting. It also relaxes a few rules, for example allowing a small rounding tolerance on each line. A typical small business selling goods or services doesn’t need it.

Its profile ID (BT-24) is urn:cen.eu:en16931:2017#conformant#urn.cpro.gouv.fr:1p0:extended-ctc-fr. The plain EN 16931 profile is urn:cen.eu:en16931:2017.

Factur-XZUGFeRDXRechnungEN 16931
What it isHybrid: PDF/A-3 + CII XMLThe same file under its German nameGerman CIUS, pure XMLThe European standard behind all of them
Readable without software?YesYesNoNot a file format
SyntaxCIICIIUBL or CIIDefines the data. UBL and CII are its syntaxes
Maintained byFNFE-MPE with FeRDFeRD with FNFE-MPEKoSITCEN
Current version1.09.22.5.23.0.2EN 16931-1:2026
French reformOne of three base formatsSame as Factur-XNot one of France’s formatsThe base the French rules build on
German B2BYes, except MINIMUM and BASIC WLYes, except MINIMUM and BASIC WLYesReference for what counts
How it’s sent in FranceThrough a Plateforme AgrééeThrough a Plateforme Agrééen/an/a

Most small French businesses never build a Factur-X file themselves. Here are the options, from least to most technical.

1. Your Plateforme Agréée or invoicing software

Section titled “1. Your Plateforme Agréée or invoicing software”

Under the reform, your Plateforme Agréée can usually create the e-invoice from what you type into its interface or from your invoicing software’s data. Invoicing tools with the DGFiP’s Solution compatible label are connected to a platform and pass invoices through it. Ask:

  • Which format and profile it sends. EN 16931 Factur-X is a sensible default.
  • Whether it covers the four new mentions, and where you enter the delivery address and transaction category.
  • What happens on rejection, and how you see the status messages that come back.

FNFE-MPE publishes a free Excel workbook, listed on its implementation page, that builds Factur-X files from CSV extracts. It’s useful for testing, or for very low volumes. You still have to send the result through your platform.

If you run a SaaS or your own checkout, an e-invoicing API can take invoice data as JSON and return a Factur-X PDF, a UBL or CII file, or send it on to a platform for you. In France, check whether the provider is itself a Plateforme Agréée or works with one, because a file alone doesn’t meet the reform: it has to go through a PA.

LibraryLanguageWhat it doesLicence
factur-x by AkretionPythonTurns a regular PDF plus an XML into Factur-X, extracts the XML, checks it against the official XSD and schematron, and can build CII or UBL from a dictionary of EN 16931 terms. Version 7.7, October 2026BSD-style
MustangJava (and command line)Reads, writes, validates and converts Factur-X and ZUGFeRD. Version 2.26.0 supports Factur-X 1.09.2Apache 2.0
horstoeko/zugferdPHPBuilds and reads Factur-X and ZUGFeRD documentsMIT
atgp/factur-xPHPEmbeds an XML in a PDF/A-3, listed by FNFE-MPEOpen source

With the Python library, adding the XML to an existing PDF takes two lines:

from facturx import generate_from_file
generate_from_file("invoice-2027-0318.pdf", "factur-x.xml")

The command-line tools that come with it, facturx-pdfgen, facturx-pdfextractxml and facturx-xmlcheck, do the same from a shell. You’re still responsible for producing correct XML with the French data, and for validating it.

A Factur-X file can fail in three places: the PDF/A-3 container, the XML schema, or the business rules (EN 16931 and the French BR-FR rules).

ToolWhat it checksCost
FNFE-MPE validatorFactur-X, CII, UBL and CDAR (status messages) files against the reform’s formats and rulesFree, account required
Mustang command-line toolXML schema, EN 16931 and profile rules, plus PDF/A through veraPDFFree, open source
factur-x (facturx-xmlcheck)The XML against the official XSD and schematronFree, open source
veraPDFWhether the PDF is valid PDF/A-3Free, open source
France_RFE schematronsThe French BR-FR business rules, for developers building their own pipelineFree

FNFE-MPE is the body that co-writes Factur-X, which makes its validator the closest thing to an official reference for French files. Your platform will also validate every invoice and reject the ones that fail. Testing first saves rejected invoices and late payments.

Common errors

  • The profile in the PDF metadata doesn’t match BT-24 in the XML.
  • The buyer’s SIREN is missing from the structured data (BT-47).
  • The totals don’t add up, often from rounding each line in the PDF but not in the XML.
  • MINIMUM used for a reform invoice. It doesn’t carry enough data.
  • The PDF isn’t real PDF/A-3, for example because fonts aren’t embedded or the colour profile is missing.

Worked example: Atelier Lumière’s first Factur-X

Section titled “Worked example: Atelier Lumière’s first Factur-X”

Atelier Lumière, the Lyon candle maker from the France guide, is an SME, so it must issue e-invoices from 1 September 2027. A Paris concept store orders 200 candles at €12.00:

  • Net: 200 × €12.00 = €2,400.00
  • TVA at 20%: €480.00
  • Total: €2,880.00

Its invoicing software carries the Solution compatible label and is connected to a Plateforme Agréée. When it issues the invoice:

  1. The software creates a Factur-X file in the EN 16931 profile, with both SIREN numbers, the category “delivery of goods” and the shop’s delivery address in the XML.
  2. It sends the file to Atelier Lumière’s platform, which validates it against EN 16931 and the BR-FR rules.
  3. The platform looks up the concept store in the national directory and routes the invoice to the store’s own platform.
  4. The platform passes the required invoice data to the tax authority.

The concept store’s owner opens the PDF and sees a normal invoice. Their accounting software reads the XML.

A Factur-X file passes the platform’s checks only if the VAT data is right: the correct rate, the right VAT category, the reverse charge where it applies and the right identifiers. GoodVat Global Tax Compliance takes care of that side:

  • Maps your obligations: which e-invoicing, e-reporting and VAT rules apply to you in France, Germany and every other country you invoice into
  • Registers you for French VAT, OSS or IOSS where you need it
  • Calculates the right VAT at checkout and sends your customers compliant invoices
  • Files your VAT returns in France, the rest of the EU, the UK and US states

GoodVat is not a Plateforme Agréée, a Peppol access point or a format validator. In France, your e-invoices still go through a registered platform.

Factur-X is a hybrid e-invoice format: a PDF/A-3 file that people can read, with a structured XML file in the UN/CEFACT CII syntax embedded inside. It follows the European standard EN 16931 and is maintained by France’s FNFE-MPE together with Germany’s FeRD. It is technically identical to Germany’s ZUGFeRD.

No single format is mandatory. France’s e-invoicing reform accepts three base formats: UBL, UN/CEFACT CII and Factur-X, and every approved platform (Plateforme Agréée) must handle all three. Factur-X is popular with small businesses because the customer can still read the PDF, but you can use any of the three.

Factur-X 1.09.2, published by FNFE-MPE and FeRD on 4 August 2026. It is identical to ZUGFeRD 2.5.2 and corrects version 1.09 of 10 June 2026, which added new EXTENDED elements needed for the French reform. Version 1.08 came out on 4 December 2025.

Which Factur-X profile should I use for the French reform?

Section titled “Which Factur-X profile should I use for the French reform?”

Use the EN 16931 profile unless your platform or customer asks for something else. The French standard XP Z12-012 also defines EXTENDED-CTC-FR, a subset of the EXTENDED profile with extra French fields. MINIMUM can’t be used for the reform. Check your platform’s rules for BASIC WL, which is reported to be tolerated only during the start-up phase.

What is the difference between Factur-X and ZUGFeRD?

Section titled “What is the difference between Factur-X and ZUGFeRD?”

There is no technical difference. Since 2020 they have been one joint Franco-German standard released under two names, so Factur-X 1.09.2 and ZUGFeRD 2.5.2 are the same specification. The national rules around the file differ: in France the invoice must go through an approved platform and meet French business rules, while in Germany it can be sent by email.

Can I send a Factur-X invoice by email in France?

Section titled “Can I send a Factur-X invoice by email in France?”

Not as your compliant invoice, once you are subject to the issuance obligation. From 1 September 2026 for large and mid-sized companies, and 1 September 2027 for small businesses, invoices to French business customers must go through a Plateforme Agréée. Emailing the same Factur-X file directly does not meet the rule.

FNFE-MPE runs a free online validator at services.fnfe-mpe.org that checks Factur-X, CII and UBL files against the French reform rules, after you create an account. Developers can also use the open-source Mustang command-line tool or the factur-x Python library, plus veraPDF to check that the PDF is valid PDF/A-3.

Yes, a few. FNFE-MPE publishes a free Excel tool that builds Factur-X files from CSV data, and open-source libraries such as factur-x for Python and Mustang for Java can turn a regular PDF plus XML into a Factur-X file. For day-to-day invoicing, most businesses let their invoicing software or Plateforme Agréée generate it.