eurc402API docs

EURC-priced EU compliance APIs, payable per call

Two machine-payable endpoints on the x402 protocol. No account, no API key — a request returns HTTP 402 with a payment challenge; an x402 client pays in EURC (or USDC) on Base and gets normalized JSON back.

EURC primary · USDC fallback Base · eip155:8453 non-custodial no signup

Paying for a call (x402)

Every /api/v1/* endpoint is paywalled with x402. The flow:

  1. Request the endpoint. It returns 402 Payment Required with a base64 x402 challenge in the PAYMENT-REQUIRED header — the accepts list is EURC first, USDC second.
  2. Your x402 client signs an EIP-3009 stablecoin authorization for the quoted amount and retries with the payment header.
  3. The facilitator verifies + settles on Base (it pays the gas), the handler runs, and you get 200 + the data. You're charged only on a successful answer.

Use an x402-capable client (e.g. the @x402/fetch wrapper, or the x402 CLI) and a Base wallet holding a little EURC/USDC. Machine discovery lives at /.well-known/x402; the full schema is at /openapi.json.

Endpoints

GET /api/v1/vat-validationFree

Validate any EU VAT number against the official VIES registry (cached, with stale-fallback during outages). All 27 EU member states. Free — no payment. Also the validate_eu_vat MCP tool.

ParamReqDescription
vatyesEU VAT number: 2-letter country + number, e.g. IT08714440016.

Try it:

$ curl https://eurc402.com/api/v1/vat-validation?vat=IT08714440016
# 200 OK — no payment:
{ "valid": true, "countryCode": "IT", "vatNumber": "08714440016",
  "name": "…", "address": "…", "source": "vies", "checkedAt": "…" }
GET /api/v1/eu-companyEUR 0.05 / call

Official company data across 10 European registers, normalized to one JSON schema — name, status, legal form, address, incorporation date, officers. The country is auto-detected from the id.

Coverage: Norway (no) · France (fr) · Finland (fi) · Slovakia (sk) · United Kingdom (gb) · Latvia (lv) · Romania (ro) · EE (ee) · CZ (cz) · PL (pl).

ParamReqDescription
idyesRegistration number — SIREN (FR), org.nr (NO), Y-tunnus (FI), IČO (SK), company number (UK), regcode (LV), CUI or J-number (RO).
countrynoISO code (no, fr, fi, sk, gb, lv, ro, ee, cz, pl) to disambiguate; otherwise auto-detected.

Try it:

$ curl https://eurc402.com/api/v1/eu-company?id=552032534  # FR auto-detected
# After payment → normalized company JSON:
{ "jurisdiction": "fr", "company_number": "552032534", "name": "DANONE",
  "status": { "code": "active", … }, "officers": [ … ],
  "provenance": { "licence": "…", "attribution": "…" }, "raw": { … } }

Each record carries a provenance block (source, licence, attribution) and the untouched raw source payload. Fields, enums, and error codes are fully specified in /openapi.json.

Machine reference