eu-verifyFor AI agents · pay per call

European company verification API for AI agents

Verify any European company in a single call. Give a country (FR, UK, IE, NO, FI, SK, PL, CZ, CH) and its national registry number and this endpoint checks existence and status in the official registry, insolvency signals (the BODACC gazette for France, registry status flags for the UK and Norway, KRS section 6 for Poland, CRO status for Ireland; not available for Finland, Slovakia, Czechia and Switzerland, where the coverage map marks it not_covered), VAT validity against VIES, the LEI record at GLEIF, the legal name against the EU, US OFAC, UN, UK and French sanctions lists, the EORI customs number and the company domain's age and mail setup.

It returns one verdict - pass, review or fail - with a confidence level, the reasons, and a per-check source and timestamp, plus an explicit coverage map that says what was checked, what is structurally not covered for that country and what was temporarily unavailable. This is factual verification of official public records, not a credit score: no payment-behavior data, no probability of default, and a sanctions match always says review, never an automated fail. $0.10 per call in USDC, no account, no API key, never billed on failure.

Endpoint

GET /v1/eu/company-check$0.10 per call (USDC on Base, x402). Also available as the MCP tool verify_company_eu on https://data.greeneris.io/mcp.

Parameters

ParamDescription
countryOne of FR, UK, IE, NO, FI, SK, PL, CZ, CH (required)
idNational registry number: SIREN/SIRET, company number, orgnr, y-tunnus, ICO, NIP or Swiss UID CHE-... (required)
vatVAT number to check when not derivable from the id (IE, SK)
leiKnown 20-character LEI to verify instead of searching
eoriEORI customs number to validate
domainCompany website domain for age and MX signals
legal_entities_onlytrue by default: an individual entrepreneur (natural person) gets a minimized 'review' answer with details withheld (GDPR). Set false to receive the minimized company-level facts

Example

curl -i "https://data.greeneris.io/v1/eu/company-check?country=FR&id=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/eu/company-check?country=FR&id=552032534")
        print(r.status_code, (await r.aread()).decode())

asyncio.run(main())

Response after payment:

{"ok": true, "data": {"subject": {"country": "FR", "id": "552032534", "legal_name": "DANONE", "natural_person": false}, "verdict": "pass", "confidence": "high", "reasons": ["Registered and active; no insolvency, sanctions, VAT or domain flag on any checked component."], "checks": {"registry": {"status": "checked", "exists": true, "company_status": "active"}, "vat": {"status": "checked", "is_valid": true}, "sanctions": {"status": "checked", "verdict": "no_match"}}, "coverage": {"country": "FR", "checked": ["registry", "insolvency", "vat", "lei", "sanctions", "eori"], "not_covered": [], "never_covered": [{"check": "ubo"}, {"check": "adverse_media"}, {"check": "payment_behavior"}], "degraded": []}, "flags": [], "disclaimer": "Factual verification of official public records. Not a credit rating, credit score or probability of default; sanctions matches require human review."}}

What agents use it for

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.

Related