Factur-X vs UBL vs CII vs Peppol BIS
Your French customer has asked for an invoice "in Factur-X" — or in UBL, or over Peppol — and you would quite like to know what that actually means before you say yes. Fair enough. Here is the whole picture, in plain English, with none of the vendor framing.
Here is the reassuring bit: they are mostly the same invoice
Underneath all four names sits one thing: EN 16931, the European semantic standard for electronic invoicing. It defines the meaning of an invoice — which fields exist, what they mean, which are mandatory — without saying how to write them down. Everything below is just a different way of writing down that same model.
So you are not choosing between different invoices. You are choosing a container and a delivery route. That is why approved platforms can convert between them, and generally do.
What each one is
Factur-X — the hybrid PDF
One file that does both jobs. It is an ordinary PDF/A-3 document — open it and you see a normal invoice a human can read — with a structured XML file tucked inside it, in the UN/CEFACT CII syntax, carrying the same figures machine-readably. Technically it is the same standard as the German ZUGFeRD 2.x, published jointly by the French FNFE-MPE and its German counterpart.
Watch out for one thing. Factur-X comes in profiles of increasing completeness — MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED. The lower ones carry header-level data only and are not a full EN 16931 invoice, so "we send Factur-X" is not actually an answer on its own. Ask your customer which profile their platform expects.
Choose it when your customer's staff still want to look at a PDF, or your own system already produces a good-looking PDF you would rather not lose.
UBL — plain XML, the widely-used one
Universal Business Language, an OASIS standard. A pure XML file with no visual rendering at all — there is nothing to look at, and that is rather the point. It is the syntax most European e-invoicing tooling already speaks, and the one sitting underneath Peppol.
Choose it when you already issue e-invoices anywhere else in Europe. Chances are you are producing UBL today without having thought about it.
CII — plain XML, the UN/CEFACT one
Cross Industry Invoice, from UN/CEFACT. The other XML syntax EN 16931 allows, and the one hiding inside a Factur-X PDF. On its own it does the same job as UBL — same model, different element names.
Choose it when your customer's platform asks for it, or when you are already generating the CII payload for Factur-X and sending it bare is less work than wrapping it.
Peppol BIS Billing 3.0 — a profile plus a network
Peppol BIS Billing 3.0 is a specification built on EN 16931 and written in UBL syntax, with extra rules on top. The difference that matters: Peppol is also a delivery network. You send through an access point, your customer receives through theirs, and addressing works by Peppol participant identifier rather than by email.
Choose it when you are already on Peppol for other countries and your customer's French platform accepts Peppol inbound. If both of those are true, you may need to change nothing but the address.
Side by side
| Format | What the file is | Human-readable? | Syntax | Delivery | Approved platforms accepting it |
|---|---|---|---|---|---|
| Factur-X | PDF/A-3 with XML embedded | Yes — it is a PDF | CII, inside the PDF | Via the customer's platform | 111 of 148 |
| UBL | Plain XML file | No | UBL (OASIS) | Via the customer's platform | 102 of 148 |
| CII | Plain XML file | No | CII (UN/CEFACT) | Via the customer's platform | 95 of 148 |
| Peppol BIS 3.0 | Plain XML file, plus a network | No | UBL | Peppol access points | 74 of 148 |
Where these numbers come from, so you can weigh them properly: the approved-platform survey this site publishes — 148 platforms, self-reported format support. Not from the DGFiP, which registers platforms but does not publish a format matrix. You can browse the underlying rows on the approved platforms page. And a platform that does not list a format may still accept it, so treat this table as a good starting point for the conversation, not the final answer.
How to actually choose
Five steps, in the order that saves you the most work.
- Ask the customer, not the internet. Their approved platform decides what arrives cleanly, and they are the only people who can tell you which profile and which routing level to use.
- Check what you already produce. If you issue UBL or Peppol BIS for other European customers, start there. Building Factur-X because it is "the French one" is a common and completely avoidable expense.
- Let the platform do the converting. Approved platforms are built around Factur-X, UBL and CII and convert between them, so agreeing on the one you can already emit is usually fine.
- Validate before you send. This one catches people out: a structurally valid file that breaks an EN 16931 business rule gets rejected just as firmly as a PDF, and the message comes back through the platform rather than to your inbox. See what a rejection looks like.
- Send one test invoice. Do it before 1 September 2026, while a wrong SIRET is still a five-minute fix.
The usual caveat: this is a description of a standard and a regulation, not tax or legal advice. Format and profile choices have commercial consequences, so confirm them with your customer in writing.
Want the checklist and the September 1 updates by email?
Nothing is hidden behind this form — the questions to ask your client are already on this site, free. Leave your address and we will send you the same list in a form you can forward to a colleague, plus a note whenever the French rules or the approved-platform register change in a way that actually affects you. That is it.
Here is exactly what happens to your address. We store it — lowercased, with the date you first sent it, and nothing else — in Cloudflare Workers KV, the key-value store this site runs on. We use it to send you this checklist and the occasional update about the French mandate. No third-party marketing tools, no tracking pixels, nothing shared with anyone. Want out? Reply to any email, or write to hello@attestwire.com, and we will remove you.
Frequently asked questions
What is the difference between Factur-X and UBL?
Mostly the wrapper. Factur-X is a PDF/A-3 file with structured XML embedded inside it, so one file serves both a human reader and a machine. UBL is a plain XML file with no visual rendering at all. Both express the same EN 16931 invoice model — Factur-X uses CII syntax for its embedded XML, UBL is its own OASIS syntax. French approved platforms are built around both and convert between them, so this is rarely the hard decision it looks like.
Is Factur-X mandatory in France?
No — and this is a useful myth to drop. Factur-X is the best-known French format, not the only accepted one. UBL and CII are equally part of what approved platforms are built to handle, and many platforms also take Peppol BIS. Which one you use is decided by your customer's platform, not by the law.
Is Peppol BIS accepted in France?
Often, yes. 74 of the 148 platforms in the survey behind this site report Peppol BIS support — but it is not universal, so confirm with the specific platform your customer uses. Peppol BIS Billing 3.0 is written in UBL syntax and built on EN 16931, so your data is never the obstacle here. It is the delivery route that varies.
What is EN 16931?
It is the thing all of these have in common. EN 16931 is the European semantic standard for electronic invoicing: it defines the meaning and the mandatory content of an invoice without prescribing a file format, and it permits two XML syntaxes, UBL and CII. Factur-X, UBL, CII and Peppol BIS are all just ways of expressing that same model.
Which Factur-X profile should I send?
Ask your customer — do not guess this one. Factur-X defines MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED profiles, with increasing amounts of structured data. The lower profiles carry header-level information only and are not a complete EN 16931 invoice, so a platform expecting line-level data will bounce a MINIMUM file.
Is Factur-X the same as ZUGFeRD?
Technically yes, and that is genuinely good news if you already do German invoicing. Factur-X and ZUGFeRD 2.x are the same standard published under two names, French and German, by FNFE-MPE and its German counterpart. A file valid as one is valid as the other — the profiles and the embedded CII XML are identical.