Einvoice Readiness
by Resolve402 in Company & people data
Check whether a European company can receive an electronic invoice today, through which Peppol participants and formats, and which national e-invoicing mandate applies to it from which date. Give a French SIREN or SIRET, an intra-EU VAT number, a national company number with its country (BE KBO, NL KvK, IT P.IVA, DE), or a company name and country. The Peppol Directory is queried by free text AND by exact participant on every scheme plausible for the country (FR 0002, 0009, 0225 SIREN_routing, 9957; BE 0208, 9925; NL 0106, 0190, 9944; DE 0204, 9930; IT 0211, 0210, 9906...), results are merged and unrelated hits dropped; document types are mapped to stable capabilities (Peppol BIS Billing invoice and credit note, CII, Factur-X, PINT, order) with a can_receive_einvoice verdict. Identity from Sirene/RNE (France) or VIES; obligation calendar per country with its official source. Charged only if the company is found (a company found but not on Peppol is a 200, registered:false). 20 free calls/day per IP with header X-Free-Trial: 1.
https://resolve402.dev/api/einvoice-readiness- Price
- $0.005
- per call in USDC
- Uptime
- 100%
- last 30 days
- Response time
- 168 ms
- 781 ms slowest 5%
- Last check
- Passed
- 2 h ago, next any minute now
Reliability
Status and outage history · Atom feed · Watch with other listings
How to call it
GET https://resolve402.dev/api/einvoice-readiness
Each call costs $0.005 in USDC on Base, paid with the request over x402.
Run a free test callOne unpaid request, the way an agent sends it. You see the payment challenge it gets back. Nothing is charged.
Example request
From the listing.
GET https://resolve402.dev/api/einvoice-readiness?siren=552032534Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
company | string | No | Company name, with country (used when no identifier is given; the closest Peppol entity name is kept) |
company_id | string | No | National company number, with country: BE KBO/BCE (0417497106), NL KvK (24330087), IT Partita IVA, DE Leitweg-ID... |
country | string | No | ISO-2 country (EU/EEA), required with company_id and company: FR, BE, NL, DE, IT, ES, PL, LU, AT, DK, SE, FI, NO... |
siren | string | No | French SIREN (9 digits, Luhn-checked) or SIRET (14 digits). Sets country=FR. |
vat | string | No | Intra-EU VAT number with country prefix, e.g. FR27552032534, BE0417497106, NL810433941B01, DE811569869 |
Example response
The provider's example. We can't check it without paying.
Example response, 88 lines
{
"company": {
"category": "GE",
"country": "FR",
"identifiers": {
"siren": "552032534",
"siret": "55203253400703",
"vat": "FR27552032534"
},
"name": "DANONE",
"status": "active",
"vat_check": null
},
"obligation": {
"applied": "Issuing date set from the company's INSEE category GE: 1 September 2026.",
"country": "FR",
"issue": {
"from": "2026-09-01",
"mandatory": true,
"scope": "Large companies (GE) and mid-caps (ETI) issue electronically from 1 September 2026; SMEs and micro-enterprises (PME, TPE, auto-entrepreneurs) from 1 September 2027. E-reporting follows the same calendar."
},
"receive": {
"mandatory": true,
"scope": "All VAT-registered businesses established in France must be able to receive electronic invoices from 1 September 2026, whatever their size.",
"since": "2026-09-01"
},
"source": "https://www.impots.gouv.fr/professionnel/la-facturation-electronique-quest-ce-que-cest"
},
"peppol": {
"accepted_formats": [
"Peppol BIS Billing 3.0 Invoice (UBL)",
"Peppol BIS Billing 3.0 Credit Note (UBL)",
"Factur-X 1.0 (PDF + CII, EN 16931)",
"France CIUS 1.0 Invoice (UBL, EN 16931)",
"UN/CEFACT CII D16B, Peppol BIS Billing 3.0 (EN 16931)"
],
"can_receive_einvoice": true,
"participants": [
{
"accepted_formats": [
"Peppol BIS Billing 3.0 Invoice (UBL)",
"Peppol BIS Billing 3.0 Credit Note (UBL)",
"UN/CEFACT CII D16B, Peppol BIS Billing 3.0 (EN 16931)",
"Factur-X 1.0 (PDF + CII, EN 16931)"
],
"capabilities": {
"cii_cross_industry_invoice": true,
"en16931_invoice": true,
"order": false,
"peppol_bis_billing_credit_note": true,
"peppol_bis_billing_invoice": true,
"pint": false,
"pint_invoice": false
},
"country": "FR",
"found_by": [
"q=552032534&country=FR"
],
"id": "0225:552032534_interco",
"name": "DANONE",
"registration_date": "2026-08-11",
"scheme": "0225",
"scheme_name": "FR:SIREN_ROUTING"
}
],
"registered": true
},
"provenance": {
"directory_queries": [
{
"kind": "free_text",
"matches": 5,
"query": "q=552032534&country=FR"
},
{
"kind": "participant",
"matches": 0,
"query": "participant=iso6523-actorid-upis%3A%3A0002%3A552032534"
},
{
"kind": "participant",
"matches": 0,
"query": "participant=iso6523-actorid-upis%3A%3A0225%3A552032534"
}
],
"participants_dropped": 0
}
}Call it from code
The curl command shows the payment challenge. The JavaScript and Python versions pay and call, and never pay more than $0.005.
curl: see the payment challenge
# bash or zsh: see the payment challenge. Nothing is charged.
curl -sS -g -i 'https://resolve402.dev/api/einvoice-readiness?siren=552032534'
# x402 v2 sends the challenge base64-encoded in the PAYMENT-REQUIRED header (v1 sends it in the body).
# To read the header:
curl -sS -g -o /dev/null -D - 'https://resolve402.dev/api/einvoice-readiness?siren=552032534' \
| grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 --decodeJavaScript: pay and call
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
// Pays at most $0.005 per call.
const client = new x402Client().setSpendControls({ maxAmountPerPayment: "$0.005" });
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
// Not sure it's safe to pay? ToolVet checks it first for $0.005. Pay for that from a separate
// client: this one is capped at $0.005 per payment. GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fresolve402.dev%2Fapi%2Feinvoice-readiness
const res = await pay("https://resolve402.dev/api/einvoice-readiness?siren=552032534");
console.log(res.status, await res.text());Python: pay and call
# pip install "x402[requests,evm]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
# Pays at most $0.005 per call.
client = x402ClientSync().set_spend_controls({"max_amount_per_payment": "$0.005"})
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))
with x402_requests(client) as session:
res = session.get("https://resolve402.dev/api/einvoice-readiness?siren=552032534")
print(res.status_code, res.text)Security scan
No findings
We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 2 h ago | Passed | 402 | 216 ms | $0.005 |
| 7 h ago | Passed | 402 | 163 ms | $0.005 |
| 11 h ago | Passed | 402 | 126 ms | $0.005 |
| 16 h ago | Passed | 402 | 366 ms | $0.005 |
| 20 h ago | Passed | 402 | 114 ms | $0.005 |
Show 7 older checks
| 24 h ago | Passed | 402 | 181 ms | $0.005 |
| 28 h ago | Passed | 402 | 229 ms | $0.005 |
| 32 h ago | Passed | 402 | 168 ms | $0.005 |
| 36 h ago | Passed | 402 | 781 ms | $0.005 |
| 40 h ago | Passed | 402 | 116 ms | $0.005 |
| 44 h ago | Passed | 402 | 132 ms | $0.005 |
| 2 days ago | Passed | 402 | 370 ms | $0.005 |