France E Invoice mentions 2026 — check your french invoices free

Lint Factur-X, UBL and CII invoices for the French mandatory mentions a PDP rejects: SIREN Luhn, FR VAT key, delivery address, operation category, totals. 12 rules, offline. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hub
ext install ReadyStack.france-einvoice-reception-lint
npx @readystack/france-einvoice-reception-lint <file>
npx @readystack/france-einvoice-reception-lint --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 12 rules France E-Invoice Reception Lint checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Sweep every invoice in the workspace and write one dated reception-readiness report — the same 12 rules at workspace scope

One payment, one licence key for this tool. The key is shown right after payment.

An e-invoicing integrator bills about 95 US dollars an hour to map and re-test one invoice profile

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

6 rejects in one French invoice

6 rejects in one French invoice - for billing developers and ERP integrators who emit invoice XML for France. This is what the lint printed on a file that validates as UBL:

L1 bt24_profile BT-24 profile identifier is missing. France routes on the Factur-X / EN 16931 profile URN; without it the PDP cannot decide the flow. L20 fr_vat_key VAT number FR12842019051 has key 12. The key computed from SIREN 842019051 is 43. L29 buyer_siren Buyer SIREN is missing. France added the buyer SIREN to the mandatory mentions for the e-invoicing reform; the name and address alone are not enough. L40 delivery_address The delivery block carries no address. France added "adresse de livraison" to the mandatory mentions; a date alone is not the address. L57 totals_balance Totals do not reconcile: 1250,00 EUR + 250,00 EUR = 1500,00 EUR, but BT-112 says 1512,00 EUR - off by 12,00 EUR. L1 late_payment_terms Late-payment mentions are incomplete (no penalty rate) (no 40 EUR recovery indemnity). Code de commerce art. L441-10 requires both on every B2B invoice.

Six findings, out of 12 checks, on one file generated by a billing template in Paris. The XML is valid. It would have been refused anyway.

Since 1 September 2026, every business established in France must be able to receive an electronic invoice. Issuing is being phased in; reception is not. From that date a supplier can push a Factur-X, UBL or CII document at your platform, and it has to take it and post it.

That is where generated code breaks. A mapping written by an AI assistant, or ported from a German XRechnung integration, validates against EN 16931 and is still refused in France: France added four mandatory mentions on top of the European model. The buyer's SIREN, because name and address are not enough. The delivery address, BG-15, which the billing address does not stand in for. The category of the operation: goods, services or mixed. And, on service invoices that took the option, the line "Option pour le paiement de la taxe d'apres les debits", which sets when the buyer deducts VAT. A European validator knows none of the four.

Then the arithmetic, the part a chatbot cannot do for you. A SIREN is nine digits carrying a Luhn check digit, so a transposed pair passes a regex and fails the platform. The French intra-EU VAT number carries a two-character key computed from the SIREN as (12 + 3 x (SIREN mod 97)) mod 97 - in the file above, the number carries key 12 where the SIREN 842019051 computes 43. And BT-109 plus BT-110 has to equal BT-112: the file says 1512 where 1250 net and 250 VAT give 1500, off by 12 EUR. A general assistant will not recompute any of those three on a number it has never seen; the platform recomputes all three before it accepts the file.

A reject does not fail quietly either. CGI article 1737 fines 15 EUR per missing or wrong mandatory mention, capped at 15000 EUR a year, and every refused invoice comes back to a human to re-issue.

France E-Invoice Reception Lint is a VS Code extension that runs those 12 checks - eleven errors and one warning - on the XML in front of you, reporting each with a line number, exactly as printed above. It runs offline and uploads nothing. The rule table is plain JSON, and the same engine file runs the free web page, so you can paste an invoice into a browser before installing anything. The deadline is not coming: it arrived on 1 September 2026. The open question is whether the XML your code emits today survives the trip.

Checking the file open in your editor is free and needs no key, and it is a finished job: every finding on that file, not a teaser. The licensed part is scope rather than depth - sweep every invoice in the workspace and write one dated reception-readiness report. Same 12 rules, more files. That is 29 US dollars once, against about 95 US dollars an hour for an integrator to map and re-test one invoice profile.

15 seconds — what it actually does

Questions people ask

What does France E-Invoice Reception Lint actually do?

It reads a Factur-X, UBL or CII invoice XML open in your editor and runs 12 checks for the mentions a French platform rejects on. It verifies the Luhn check digit of the seller and buyer SIREN, recomputes the FR intra-EU VAT key from the SIREN, re-adds BT-109 plus BT-110 against BT-112, and reports every failure with a line number.

Who is this for?

Developers who generate invoice XML for French companies: billing engineers at SaaS vendors invoicing France, ERP and accounting-software integrators wiring up a PDP, and teams porting a German XRechnung mapping to France. If you have never had to print the 40 EUR recovery indemnity on an invoice, this is the tool that tells you that you must.

Why is a chatbot or a free EN 16931 validator not enough?

A free EN 16931 validator checks the European semantic model. France added mandatory mentions on top of it: the buyer SIREN, the delivery address, the category of operation, and the VAT-on-debits option. A chatbot will list those mentions but will not recompute a Luhn check digit, a mod-97 VAT key, or your totals — and a PDP recomputes all three.

What is free and what needs a licence key?

Free, with no key: check the invoice open in the editor against all 12 rules and get every finding with its line number. That is a complete answer for that file. The licensed part is scope, not depth: sweep every invoice in the workspace and write one dated reception-readiness report. Same rules, more files.

What would this cost me otherwise?

An e-invoicing integrator bills about 95 US dollars an hour to map and re-test one invoice profile, and a rejected invoice comes back for a human to re-issue. CGI article 1737 fines 15 EUR per missing or wrong mandatory mention, with an annual cap of 15000 EUR. The licence is 29 US dollars once.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. France E-Invoice Reception Lint checks the file you open against 12 rules, each naming its legal or official basis, from a rule set dated 2026-09-20, and points at the exact line. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →