# Complete and correct a customer file in one call

This is the route for bulk cleaning, before the first e-invoice or a campaign. What sets it apart: it never chooses for you. A name is resolved only when a single candidate exists at that postcode, with every index stage read, and it bears that name (its legal name, usual name or acronym); otherwise the line comes back a_confirmer with its ranked candidates, or introuvable. Each line keeps its rank in your file, duplicates are flagged, and the typed name is never echoed.

## What the route returns

Catalogue description, exactly as agents read it:

**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.**

## Expected identifier

`lignes` parameter: 2 to 300 lines separated by “;”, each a SIREN, a SIRET, a French VAT number or a `name|postcode` couple. With `depuis` (a past day or today), each resolved line also carries its changes since that day: the verdict, the totals per type, the 3 latest facts, the window actually read and `lecture_complete`.

> ⚠️ A wrongly formatted identifier in the **path** returns `400` and is **not billed** — but it costs you a round trip. It is the leading cause of failed calls on the foreign routes. A **search** parameter, by contrast, is cleaned up: unsupported characters are stripped and the usable query is served.

## Extract from a genuinely paid response

Dated snapshot from 2026-10-08, truncated to one item per array. It is not live data. The full extract is served **free of charge** from [the samples surface](https://api.sirenic.eu/exemples/identite-lot.json), and the schema from the OpenAPI document.

```
{
 "nombre_lignes": 2,
 "comptes": {
  "resolution": {
   "resolu": 1,
   "a_confirmer": 1,
   "introuvable": 0,
   "siren_invalide": 0,
   "siren_inconnu": 0,
   "non_diffusible": 0
  },
  "etat": {
   "actif": 1,
   "cesse": 0
  },
  "tva_vies": {
   "valide": 1,
   "invalide": 0,
   "indisponible": 0,
   "non_verifie": 0
  },
  "doublons": 0,
  "lignes_a_etages_abandonnes": 0
 },
 "lignes": [
  {
   "rang": 1,
   "identifiant_lu": "siren",
   "resolution": "resolu",
   "siren": "552032534",
   "siret_siege": "55203253400703",
   "denomination": "DANONE",
   "etat": "actif",
   "adresse": "59 RUE LA FAYETTE 75009 PARIS",
   "tva": {
    "numero": "FR27552032534",
    "vies": "valide"
   }
  },
  {
   "rang": 2,
   "identifiant_lu": "nom_cp",
   "resolution": "a_confirmer",
   "candidats": [
    {
     "siren": "352476329",
     "denomination": "HERMES INTERNATIONAL",
     "etat": "cesse",
     "score_confiance": 1
    },
    {
     "siren": "572076396",
     "denomination": "HERMES INTERNATIONAL",
     "etat": "actif",
     "score_confiance": 1
    },
    {
     "siren": "377788997",
     "denomination": "HERMES CONSULTANTS INTERNATIONAL ASSOCIE",
     "etat": "cesse",
     "score_confiance": 0.98
    }
   ],
   "candidats_non_servis": {},
   "listes_bornees": {
    "candidats": {
     "nombre_total": 3,
     "tronque": false
    }
   }
  }
 ]
}
```

## Price and billing

Price: **$0.003 · $0.01 (with depuis) / entity**. The authoritative amount is the one in the `402` quote returned by the route itself, not this text, which derives from the same grid but is still just a page.

**Batch** billing: the `lignes` parameter accepts 2 to 300 semicolon-separated values, and the amount is the unit price times the number of values. The quote is frozen before settlement: there is no partial settlement.

The unit price additionally depends on whether the `depuis` parameter is present: $0.003 without it, $0.01 with it (the `identite_et_changements` axis), in the same frozen quote.

An error response **cancels the payment**: a `400`, `404` or `503` is never billed. An upstream outage on a line is stated on that line, which is served and billed: a VAT number VIES could not check is `indisponible`, and, with `depuis`, a BODACC that did not answer is named in its `changements`. The batch is refused with a `503`, never billed, only when no line could read BODACC (with `depuis`), when the Sirene stock or the search index cannot be read, when the database does not answer, or when the service is saturated.

## Calling the route

```
# 1. The quote, without paying anything: the route answers 402 with its amount
curl -i "https://api.sirenic.eu/v1/identite/lot?lignes=552032534%3BHERMES%20INTERNATIONAL%7C75008"

# 2. The paid call: the x402 client settles the quote and replays the request
npx x402-fetch "https://api.sirenic.eu/v1/identite/lot?lignes=552032534%3BHERMES%20INTERNATIONAL%7C75008"

# 3. Or over MCP, in Claude Code / Cursor / an agent
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
```

## What this route does not do

It neither creates nor checks any registration in the e-invoicing directory: the route prepares your base, it sends nothing. 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, address or changes. VAT is checked live on VIES, line by line: 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`). With `depuis`, European public contracts and industrial property are not read (the `/v1/entreprise/{siren}/nouveautes` route reads them, one company at a time), nor are officers; a BODACC outage on a line is stated there, and a batch where no line could read it is refused, never billed.

## Neighbouring routes

- `/v1/recherche`: $0.002
- `/v1/tva/verifier/{numero}`: $0.003
- `/v1/entreprise/{siren}/facturation-prep`: $0.02

## How you pay

Every route is paid **per call**, in USDC or EURC on the Base network, over the x402 protocol: no account to create, no API key, no subscription. 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, on 106 of 122 routes (the price list says which), 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](https://api.sirenic.eu/openapi.json) and in [llms.txt](https://api.sirenic.eu/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](https://api.sirenic.eu/exemples/identite-lot.json) | 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. |

## Take it further

- [See a real response (free)](https://api.sirenic.eu/exemples/identite-lot.json)
- [Get the quote for /v1/identite/lot](https://api.sirenic.eu/v1/identite/lot?lignes=552032534%3BHERMES%20INTERNATIONAL%7C75008)
- [Create an account: 150 free calls a month](https://api.sirenic.eu/compte?lang=en&utm_source=recherche&utm_campaign=referencement)


---

[Home](https://api.sirenic.eu/en) · [Pricing](https://api.sirenic.eu/en/offres) · [Guides](https://api.sirenic.eu/en/articles) · [Routes](https://api.sirenic.eu/en/api) · [About](https://api.sirenic.eu/en/about) · [Legal notice](https://api.sirenic.eu/mentions-legales) · [Privacy](https://api.sirenic.eu/en/privacy)
