# Cross-check an invoice's identifiers

The textbook case, verified in production: Carrefour's VAT number is valid at VIES; placed on an invoice showing Danone's company number, it returns incoherent. That is precisely what a VIES validation alone cannot see.

## What the route returns

Catalogue description, exactly as agents read it:

**Invoice verification for France — cross-check the identifiers PRINTED ON an invoice in one call: SIREN against the official registry (existence, active status, live), the VAT number on the invoice against the one computed from the SIREN AND live against VIES, the IBAN (ISO form, key digits, bank identified). Deterministic verdict coherent/incoherent/inverifiable, closed-list reasons. Flags a VAT that belongs to another company or a ceased supplier. Not a payee verification.**

## Extract from a genuinely paid response

Dated snapshot from 2026-08-16, 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/), and the schema from the OpenAPI document.

```
{
 "siren": "552032534",
 "etat_administratif": "actif",
 "controles": {
  "tva": {
   "fournie": "FR27552032534",
   "attendue_pour_ce_siren": "FR27552032534",
   "correspond_au_siren": true,
   "vies": {
    "statut": "valide"
   }
  },
  "iban": {
   "valide": true,
   "exemple_de_documentation": true,
   "banque": {
    "identifiee": true
   }
  }
 },
 "verdict": "coherent",
 "raisons": [
  {
   "code": "iban_exemple_documentation",
   "niveau": "information",
   "source": "IBAN publié comme EXEMPLE de documentation — bien formé ; existence du compte non contrôlée."
  }
 ],
 "non_verifie": [
  "existence_du_compte",
  "nom_du_titulaire"
 ],
 "source": "Composition Sirenic : INSEE Sirene (état, live), croisement TVA calculée (clé FR déterministe), VIES (Commission européenne, live), contrôle de forme IBAN + registres bancaires officiels",
 "disclaimer": "Croisement déterministe des identifiants affichés par une facture (raisons en liste fermée, tracées à leur source) — ni un avis de conformité fiscale, ni une Verification of Payee : le volet bancaire contrôle la FORME et identifie la banque, sans vérifier l'existence du compte ni le nom du titulaire — un IBAN valide mais substitué n'est pas détectable ici. / Deterministic cross-check of the identifiers printed on an invoice — neither tax advice nor a Verification of Payee: the bank leg checks FORM and identifies the bank; a valid-but-swapped IBAN cannot be detected here."
}
```

## Price and billing

Price: **$0.02**. 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.

An error response **cancels the payment**: a `400`, `404` or `503` is never billed. An upstream outage closes the route with a `503` rather than serving a degraded response.

## Calling the route

```
# 1. Le devis, sans rien payer : la route répond 402 avec son montant
curl -i https://api.sirenic.eu/v1/facture/verifier

# 2. L'appel réglé — le client x402 paie le devis et rejoue la requête
npx x402-fetch https://api.sirenic.eu/v1/facture/verifier

# 3. Ou en MCP, dans Claude Code / Cursor / un agent
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
```

## What this route does not do

The route does **not read the PDF**: it cross-checks the identifiers you pass. Extraction stays on your side, which avoids sending a whole accounting document to a third party. And it is not a payee verification.

## Neighbouring routes

- `/v1/facturation/dossier` — $0.03
- `/v1/tva/verifier/{numero}` — $0.003
- `/v1/iban/verifier/{iban}` — $0.005

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

Would you rather have a euro invoice and prepaid credits? That is **in preparation**, and we will not announce a date until it is open. Write to [contact@sirenic.eu](mailto:contact@sirenic.eu?subject=Euro%20credit%20packs) and we will let you know when it opens.

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

```
# Client x402 (npm) — le devis 402 est réglé et l'appel rejoué automatiquement
npx x402-fetch https://api.sirenic.eu/v1/entreprise/552032534

# Ou en MCP, dans Claude Code / Cursor
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
```

## Routes used and pricing

| Route | Price | What it returns |
| --- | --- | --- |
| `/v1/facture/verifier` | $0.02 | Invoice verification for France — cross-check the identifiers PRINTED ON an invoice in one call: SIREN against the official registry (existence, active status, live), the VAT number on the invoice against the one computed from the SIREN AND live against VIES, the IBAN (ISO form, key digits, bank identified). Deterministic verdict coherent/incoherent/inverifiable, closed-list reasons. Flags a VAT that belongs to another company or a ceased supplier. Not a payee verification. |

> ⚠️ The IBAN check is not a payee verification: neither the account holder's name nor the account's existence is checked (verification_titulaire: non_disponible).

> ⚠️ Sirenic is not an accredited French e-invoicing platform (PDP), never accesses the central directory, and neither issues, transmits nor routes any invoice.

## Take it further

- [See a real response (free)](https://api.sirenic.eu/exemples/facture-verifier.json)
- [Get the quote for /v1/facture/verifier](https://api.sirenic.eu/v1/facture/verifier)
- [Get notified about euro packs](mailto:contact@sirenic.eu?subject=Euro%20credit%20packs)

## Read next

- [Cross-check the identifiers printed on an invoice you received](https://api.sirenic.eu/en/use-cases/check-incoming-invoice-do-its-identifiers-contradict-each)

---

Volume figures on this page were measured in our database on 2026-08-19. They are dated snapshots, not live counters.

Full catalogue : https://api.sirenic.eu/