The Annuaire Explained: How French Buyers Are Found and Why Routing Fails
Since 1 September 2026, every business established in France and subject to French VAT has to be able to receive structured e-invoices. Most implementation projects spent the year before that worrying about formats.
Formats turned out to be the easy part.
The thing that decides whether your invoice reaches a French customer is the annuaire facturation electronique the national directory that tells sending platforms where a buyer's invoices go. Get the entry wrong and a technically perfect invoice goes nowhere at all.
Here is how it works, and where it breaks.
What the annuaire facturation electronique actually is
The Annuaire is a lookup register held by the Portail Public de Facturation (PPF). It lists French VAT-registered entities, the addressing level each one uses, and the Plateforme Agréée (PA) that receives invoices on their behalf.
It is a phone book, not a post office
This is the part that catches IT managers out. No invoice passes through the Annuaire. It answers one question which platform receives for this entity and then the sending PA delivers directly to the receiving PA.
That distinction matters when you are debugging. A routing failure is a lookup failure. Nothing is sitting in a queue at the PPF waiting to be released.
Who fills it in
The Annuaire draws its base data from INSEE company records and the existing Chorus Pro structure register, and the accredited platforms maintain the routing lines on top of that.
You do not register yourself. Your PA publishes your entry. Which means your directory accuracy is a function of what your PA was told and what your ERP master data says.
How a French buyer is found: the routing sequence
Three steps, every invoice:
Addressing. Your system produces an invoice carrying the buyer's identifier SIREN, SIRET, and a routing code where one applies.
Lookup. Your PA queries the Annuaire on that identifier and gets back the buyer's receiving platform.
Delivery. Your PA transmits to the buyer's PA. The PPF receives the reporting data, not the invoice exchange itself.
Step 2 is where the failures live. Steps 1 and 3 are just consequences of it.

SIREN, SIRET, routing code: three addressing levels
French entities choose the granularity at which they want to be found. Three levels are in use.
SIREN - one door for the whole legal entity
Nine digits, one reception point. Fine for single-site companies and small suppliers. If your customer publishes at SIREN, addressing at SIREN works.
SIRET - routing per establishment
Fourteen digits. Used by branch networks, franchises and multi-site organisations that want invoices separated by location before they reach AP.
Routing code routing per service or channel
An additional suffix on top of SIREN or SIRET. Large buyers with several purchasing departments use it to split traffic between cost centres. They will usually tell you the code in the purchase order and reject the invoice if you leave it out.

Why routing fails
Five patterns account for most of what you will see in your error queue.
The buyer is not in the directory. Directory enrichment was never complete on day one. Newly created companies awaiting a SIREN cannot be routed to at all.
Wrong granularity. The most common one. Your customer publishes at SIRET level; your ERP holds only the SIREN of the parent. The lookup returns nothing, and it looks like the customer is missing when they are simply addressed one level too high.
Missing or wrong routing code. The entry exists, the code is mandatory for that buyer, and your master data never captured it.
Stale identifiers. A closed establishment, a deregistered SIRET, a relocation that changed the number. Your customer record is a year old; INSEE is not.
A line deactivated after a platform change. The buyer switched PA and the old line went inactive before the new one was published. Nothing you did caused it and nothing you do fixes it but the invoice bounces from your side.
Read the code, do not guess
Rejections come back with normed reason codes that distinguish these cases: recipient absent from the directory, identifier inconsistent, routing code missing, no active reception address. Map those codes into your exception handling once, and the diagnosis stops being manual.
Worth keeping separate from all of this: a technical rejection is a routing or validation failure you correct and resubmit. A buyer refusal is a commercial lifecycle event. Treating them as the same thing generates duplicate credit notes and months of reconciliation. We covered that trap in more detail in our review of the first week of the French mandate.

What this means for your ERP master data
The Annuaire is a mirror. It reflects identifiers that originate in your customer master, and it will not improve on what you give it.
For an IT manager, that reframes the work. This is not a compliance project sitting with finance. It is a data quality project with three concrete outputs:
A French customer master that holds SIRET, not just SIREN, plus a field for routing code.
Pre-send validation that checks the lookup before an invoice leaves your ERP, rather than after it bounces.
Exception handling that routes directory failures to someone who can call the customer, not into the same bucket as format errors.
Most ERP systems were not built with a routing-code field. That gap is usually closed in the integration layer rather than by modifying the ERP which is where on top of Dynamics 365 Finance & Operations, SAP Business One, e-conomic, Uniconta and others, without replacing any of them.
If you want the wider architecture the Y-model, PA and PPF roles, format scope that is in our France 2026 e-invoicing mandate guide.
A checklist before your next French invoice run
Pull every French customer and check whether you hold SIRET or only SIREN.
Ask your top 20 French customers which addressing level they publish at, and whether a routing code applies.
Run a live lookup for those 20 through your PA. Do not assume in-scope means routable.
Add a routing-code field to your customer master if one does not exist.
Map directory rejection codes into your exception queue as a distinct category.
Separate technical rejection from buyer refusal in your AR process.
Re-test after any customer tells you they have changed platform.
A failed routing test in September is an inconvenience. The same failure in December, with the enforcement tolerance closing on 1 January 2027, is a cash flow problem.
FAQ
Does the annuaire facturation electronique store my invoices? No. It is an addressing register. It returns the receiving platform for an entity; the invoice itself moves directly between the two platforms.
Do I register myself, or does my PA do it? Your accredited platform publishes and maintains your entry. You do not connect to the PPF directly for this.
Can I look up a customer before invoicing them? Consultation is available, including through your PA. Build the check into your process before go-live rather than after a rejection.
My French customer is not in the directory. What now? The invoice cannot be routed electronically. The supply, the contract and the payment obligation are unaffected. Document the failure, ask the customer to have their platform publish the entry, and keep evidence of the attempt.
SIREN or SIRET which goes on the invoice? Whichever level the buyer publishes at. Ask; do not infer. This mismatch is the single most common routing failure.
Does a rejection suspend the payment term? Not automatically, and the answer depends on contract terms and the nature of the rejection. Take legal advice on your specific contracts rather than assuming.
Where to start
If your French invoices are bouncing, the problem is almost never your invoicing software. It is the identifiers your ERP holds and what happens to them on the way out.
That is an integration question, and it is fixable without touching your ERP.
Talk to our integration team about where your French flows are breaking.