Prepare your customer base for French e-invoicing
With French e-invoicing, the customer's SIREN becomes a mandatory mention on the invoice. Preparing your base means finding, for each customer, its SIREN, head-office SIRET, status and VAT number with its VIES status, duplicates flagged. Without code: our Google Sheets template or the upload screen.
See a real response (free) Get the quote for /v1/identite/lot
Without code: the Google Sheets template or the upload screen
Two ways to complete your file without writing code, through the same route, /v1/identite/lot. Each reads from your columns the SIREN, the SIRET, the French VAT number, or the name and postcode of each row, sends only that, and adds its own columns on the right, all prefixed sirenic_: the resolution, the SIREN, the head-office SIRET, the status, the VAT number and its VIES status, duplicates over the whole file and rows to review. Each call sends at most the rows a free call admits; beyond the month's free quota, it is paid from your credits. A completed row is never sent again when completing, unless its input changes.
- The Google Sheets template. Open your file in Google Sheets, then Extensions, Apps Script: replace the content of Code.gs with the template's code, save and reload the spreadsheet. In the Sirenic menu: “Enter my key” (the key is kept out of the cells), then “Complete the file”. The instructions give every column and every error. No key yet: create an account.
- The upload screen. In your account, the Customer file tab reads a CSV or an .xlsx workbook in your browser: only the SIREN, SIRET, VAT number, or name and postcode of each row leave it. The plan gives the calls and the cost before the first call, nothing is sent without your click, and the completed file comes back as CSV; the screen itself states the maximum size of a file, in rows and megabytes. No account yet: create one.
- Both then offer “What has changed since my last pass”: resolved rows are sent again with the date of their last read (section “What changed since your last pass” below).
What Claude calls, and what it reads
“Here is my customer export: complete and correct SIREN, SIRET and VAT.” E-invoices are routed by SIREN and SIRET. Are all my customers identified the way the invoice requires? Which ones have a wrong, missing or outdated SIREN, or a VAT number that does not check out? Paste your customer export in Claude, as your software exports it, and ask: every line comes back at its rank, completed and checked, and nothing is chosen for you.
Claude reads the export and takes one line per record: the SIREN, the SIRET, the French VAT number, or the name and postcode when the line has no identifier. It calls the get_french_company_identity_batch tool, which serves the /v1/identite/lot route, 2 to 150 lines per tool call (the route takes 300: a full batch takes 2 tool calls). For each line, the answer gives:
- the line's rank in your file and what was read:
siren,siret,tvaornom_cp; the typed name is never echoed; - the resolution, from a closed list:
resolu,a_confirmer,introuvable,siren_invalide,siren_inconnu,non_diffusible; - for a resolved line: the SIREN, the head-office SIRET, the legal name, the status (
actiforcesse, with the cessation date when it is published) and the head-office address; - VAT: the number computed from the SIREN and its VIES status at the time of the call, or of a check less than an hour old kept in cache (
valide,invalide,indisponibleornon_verifie); a VIES that does not answer givesindisponible, neverinvalide; - an ambiguous name comes back
a_confirmerwith up to 5 candidates ranked by score; a line that points to a company already seen above carriesdoublon_de, the rank of the first one.
A name is resolved only when a single company bears that name (legal name, usual name or acronym) at that postcode, with every index stage read. Otherwise the line comes back to confirm, with its candidates, or not found: never a silent choice.
A five-line export
Five neutral lines, one per input form, taken from our reference set of companies; the last one is an invented name. No customer data.
What comes back was read on 2026-10-09 with our test key, in Claude, on the Sirene stock of 2026-10-01; the VIES status is the one at the time of the call, or of a check less than an hour old kept in cache. These five lines fit in the 100 free lines a month of a verified account; outside them, they cost $0.015.
| Line | What it carries | What comes back |
|---|---|---|
| 1 | 552032534, a SIREN | resolu, actif, head-office SIRET, VAT number valide on VIES |
| 2 | 55203253400711, the SIRET of another site of the same company | resolu, doublon_de 1 |
| 3 | FR48056200454, a VAT number | resolu, cesse (ceased 2012-11-05), VAT non_verifie (entreprise_cessee) |
| 4 | AIR LIQUIDE CO2 EUROPE and 75007, a name and a postcode | resolu to SIREN 662027374, actif, head-office SIRET, VAT number valide on VIES |
| 5 | QXZJW VKPRT and 33000, an invented name | introuvable |
Limits, measured
- VAT is checked live on VIES, line by line, one at a time: in French business hours, VIES serves one verdict every 4 to 5 s and refuses concurrency; before pipelined checks, a full batch had 15 of 262 resolved lines checked; with them, outside business hours (23:51 UTC), 105 of 265; measured 2026-10-08. A line whose check could not start in time says so (
non_verifie,budget_vies_epuise): run those lines again in a smaller batch, or outside business hours. - A batch has 60 s, 40 s of which to find names. A name line whose index stage could not be served (time budget exceeded, or no index to serve it) says so (
etages_abandonnes) and is neverresolu; the batch head counts them. On the full batch of 300 names of 2026-10-08 (23:51 UTC), 9 lines of 300 said so. - The cessation date is read live, for ceased lines only; when it is missing, the line says why:
non_publiee,source_indisponibleorbudget_lot_epuise. - 2 to 300 lines per call; the request line is capped at 11,000 bytes, that is 300 SIRENs or about 148 names of 63 characters; beyond that, a
requete_trop_largerefusal; beyond about 16 KB, an empty 431; neither is billed.
What changed since your last pass
“What has changed at these customers since my last pass?” With depuis (a past day or today), each resolu line also carries changements: what changed for its company since that day, read by the changes engine in BODACC and the local stocks (commercial-court decisions, French public contracts, establishments, cessation, licences, sanctions lists, RGE certifications, lobbying register). The line gives the verdict (nouveautes, rien_de_nouveau or lecture_incomplete), the totals per type, the three latest facts, the window actually read and lecture_complete; an unresolved or non-diffusible line says why it carries none (motif_sans_changements).
- Price: $0.01 per line with
depuisinstead of $0.003, every line at the call's price; the free quota of verified accounts applies with or withoutdepuis. - The
get_french_company_identity_batchtool reads 20 lines per call withdepuis(the route takes 300); the batch then has 90 s. - A BODACC outage on a line is stated there (
lecture_completefalse, the block named inblocs_incomplets); a batch where no line could read BODACC is refused, never billed. - European public contracts and industrial property are not read in the batch: the
/v1/entreprise/{siren}/nouveautesroute reads them, one company at a time. Officers are never served.
What the route does not do
It neither creates nor checks any registration in the e-invoicing directory: Sirenic is not an accredited platform, the route prepares your base, it sends no invoice. It does not check the site a SIRET names: it reads its SIREN, the first nine digits, and returns the company's status and its head-office SIRET. It never chooses between two namesakes. A natural person's name is never resolved: a sole trader is not served as a candidate, and their SIREN line comes back without name or address.
What an export costs
A verified account has 100 free lines a month on the batch, outside its 150 free calls, no credit debited: the five example lines cost nothing there. A batch over what is left of the month is paid in full. Beyond, or outside the free tier, the batch is billed $0.003 per line, duplicates included: $0.015 for the five example lines, $0.90 for a full batch of 300 lines, with prepaid credits (card top-up is not open yet), or over x402 for the same amount in USDC or EURC. A refused or unavailable batch is never billed.
The same batch, without an assistant
The five example lines, encoded the way the MCP tool encodes them; the API key is read from the SIRENIC_KEY variable.
# The five example lines, 2 to 300 per call
curl "https://api.sirenic.eu/v1/identite/lot?lignes=552032534%3B55203253400711%3BFR48056200454%3BAIR+LIQUIDE+CO2+EUROPE%7C75007%3BQXZJW+VKPRT%7C33000" \
-H "X-Api-Key: $SIRENIC_KEY"
# Over MCP, on the connector https://api.sirenic.eu/mcp/connecteur (tools/call method),
# the key in an Authorization: Bearer $SIRENIC_KEY header, or Claude's OAuth connection
{"name": "get_french_company_identity_batch", "arguments": {"lignes": ["552032534", "55203253400711", "FR48056200454", "AIR LIQUIDE CO2 EUROPE|75007", "QXZJW VKPRT|33000"]}}
How you pay
Every route is paid per call, two ways, with no subscription: over x402, in USDC or EURC on the Base network, with no account and no API key; or with the API key of an account, which opens the free quota; /v1/identite/lot has 100 free lines a month, beyond that on its credits. Over x402, the first call returns a 402 quote your client settles, then replays the call. A failed call is never billed.
Open today: 150 free calls a month with an account, up to EUR 2 of value, on 122 of 129 routes (the price list says which), with 100 more free lines a month on batch identity, and pay-per-call over x402 (USDC or EURC), with no account except registry filings. Prepaid credits: card top-up is not open yet.
Paid responses are Ed25519-signed: you can later prove what was served to you, and when. The whole catalogue is free to read in the OpenAPI document and in llms.txt.
One call, end to end
# x402 client (npm): the 402 quote is settled and the call replayed automatically
npx x402-fetch https://api.sirenic.eu/v1/entreprise/552032534
# Or over MCP, in Claude Code / Cursor
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
# Or as a local server (stdio), with your key or an x402 wallet
claude mcp add sirenic -e SIRENIC_API_KEY=srn_live_... -- npx -y sirenic-mcp
Routes used and pricing
| Route | Price | Sample | What it returns |
|---|---|---|---|
/v1/identite/lot | $0.003 · $0.01 (with depuis) / entity | free sample | Batch identity for French customer/CRM lists: 2 to 300 lines (SIREN, SIRET, FR VAT number or name|postcode), in file order. Per line: resolution (resolu, a_confirmer with up to 5 ranked candidates, introuvable, siren_invalide, siren_inconnu, non_diffusible), SIREN, HQ SIRET, status, cessation date, address, VAT checked live on VIES (indisponible or budget_vies_epuise, never a false invalide), duplicates. $0.003 per line, up to $0.90; with depuis (changes since a date) $0.01, up to $3.00. |
/v1/entreprise/{siren}/facturation-prep | $0.02 | free sample | Supplier onboarding: PREPARE a compliant French e-invoice under the e-invoicing mandate France September 2026 (reception obligatory for every VAT-liable company; issuance phased GE/ETI 2026, SME 2027): legal name & form, status, computed intra-EU VAT number (with VIES pointer), establishments (SIRET) with addresses, NAF code, indicative obligation dates. Preparation only - Sirenic is not an accredited platform (PDP), never accesses the central directory and never issues or routes invoices. |
/v1/tva/verifier/{numero} | $0.003 | free sample | EU VAT validation against the official VIES service: validate any intra-community VAT number (all member states) for compliance and due diligence, the tax half of verify supplier before payment and a required check under the e-invoicing mandate France September 2026. Returns valid/invalid with the VIES consultation identifier as proof. Name and address only for a holder that its number's format or its country's register proves a legal person; otherwise left out, counted in ecartes. |
Sirenic is not an accredited French e-invoicing platform (PDP), never accesses the central directory, and neither issues, transmits nor routes any invoice.
Frequently asked questions
My export only has company names: does it work?
Yes, with the head-office postcode: write the line name|postcode. The rule, case by case: a single company found at that postcode, with every index stage read, a legal entity whose register entry is public and whose legal name, usual name or acronym is the typed name, cleaned: resolu; the same single company, under another name: a_confirmer, that company as the only candidate; several companies found, or companies found with an index stage not read in time, or found only by tolerating typos: a_confirmer, with, as candidates, the legal entities found whose register entry is public; a single company found that is not a legal entity whose register entry is public: a_confirmer, with no candidate served; no company found: introuvable, with the index stages not read, if any. Measured on 2026-10-08: two names typed with their postcode came back a_confirmer, each with a single company found under another name, as the only candidate; no SIREN chosen. With often ambiguous names, the tool advises 50 lines per call: each line to confirm carries its candidates.
What about the e-invoicing directory?
The route neither reads it nor registers anything in it: it is reserved to accredited platforms. It gives you the SIREN and head-office SIRET, the identifiers invoices are routed by; to prepare an invoice customer by customer, see invoice preparation in the routes table.
My sales team has the same base in its CRM?
The same route answers it, with the same answer: the page “Clean a customer file by SIRET number” starts from the question asked before a campaign, ceased companies and duplicates.
Take it further
The first step is free and shows you exactly what you would be buying, with no account or key; an account, with its API key, then opens the free quota; /v1/identite/lot has 100 free lines a month, beyond that on its credits.
See a real response (free) Get the quote for /v1/identite/lot Read the route reference Create an account: 150 free calls a month up to EUR 2 of value