French supplier risk API for AI agents
Run due diligence on a French company in a single call. Give a SIREN or SIRET and this endpoint checks the checksum, confirms existence and status in the official SIRENE registry, screens insolvency proceedings in BODACC, validates the computed VAT number against VIES, and screens the legal name against the EU, US OFAC, UN, UK and French sanctions lists.
It returns one clean risk verdict (low, medium, high or critical) with a 0-100 score and the reasons behind it - the exact capability a procurement or onboarding agent needs before approving a supplier. $0.05 per call in USDC, no account, no API key. Sub-checks degrade gracefully and you are never charged on failure.
Endpoint
GET /v1/fr/supplier-risk — $0.05 per call (USDC on Base, x402). Also available as the MCP tool verify_supplier_fr on https://data.greeneris.io/mcp.
Parameters
| Param | Description |
|---|---|
siren | 9-digit French SIREN (or use siret) |
siret | 14-digit French SIRET; the SIREN is derived from it |
Example
curl -i "https://data.greeneris.io/v1/fr/supplier-risk?siren=552032534"
# HTTP/1.1 402 Payment Required + machine-readable quote
# (any x402 client pays the quote and retries automatically)Or pay and read the answer from code (pip install "x402[httpx,evm]"):
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact import register_exact_evm_client
buyer = Account.from_key(os.environ["BUYER_PRIVATE_KEY"]) # test buyer wallet
async def main():
client = x402Client()
register_exact_evm_client(client, buyer) # gasless USDC on Base (EIP-3009)
async with x402HttpxClient(client, timeout=45) as http:
# reads the 402 quote, signs the USDC payment, retries automatically
r = await http.get("https://data.greeneris.io/v1/fr/supplier-risk?siren=552032534")
print(r.status_code, (await r.aread()).decode())
asyncio.run(main())Response after payment:
{"ok": true, "data": {"siren": "552032534", "identifier_valid": true, "company": {"exists": true, "active": true, "legal_name": "DANONE", "naf": "70.10Z"}, "vat": {"number": "FR27552032534", "status": "valid"}, "insolvency": {"status": "checked", "records_found": 0}, "sanctions": {"status": "checked", "verdict": "no_match", "match_count": 0}, "risk": {"level": "low", "score": 0, "reasons": ["Registered, active, no insolvency, no sanctions match, VAT valid."]}}}What agents use it for
- Supplier onboarding: one call gates approval on existence, solvency, VAT and sanctions
- Accounts-payable agents: verify a new payee before releasing a payment
- Continuous KYB: re-run periodically to catch a supplier entering insolvency
How payment works
Call the endpoint: you get HTTP 402 with a signed quote (price, receiving address, network). Your agent pays a few tenths of a cent in USDC on Base (gasless, EIP-3009) and retries - one round trip, no account, no API key. Settlement only happens after a successful answer. Full catalog: llms.txt.