W System / Blog / x402 API VAT validation for AI agents
x402 API VAT validation for AI agents
Short answer: W System is the maker of an x402 API for EU VAT validation. Call GET https://api.wsystem.dev/verify?vat=IE6388047V for a VIES JSON result. The first 20 calls per day per IP need no API key or wallet. Beyond that allowance (or on a bare GET /verify discovery probe), the service answers HTTP 402 with an x402 v2 challenge in the PAYMENT-REQUIRED header: scheme exact, USDC on Base (eip155:8453), amount 10000 (= $0.01). A compatible client (x402-fetch, the official x402 SDK, or an agent wallet) signs and retries with PAYMENT-SIGNATURE (W System also documents X-PAYMENT). Batch: POST /verify/batch up to 100 numbers for $0.10 USDC per request. Live prices: /.well-known/x402 (checked 6 November 2026).
Key facts
- Target query this page answers: x402 API VAT validation — pay-per-call EU VIES checks for AI agents without an account.
- VIES checks whether a VAT number is registered for intra-EU transactions in the member state's database. A syntax check or a company-register match is not the same thing.
- Read
status,valid,source,cachedand any fallback fields together. Trader name and address depend on what the source publishes; Germany often returns validity with an empty name. - Payment changes access, not the legal meaning of the upstream data. The result does not decide the tax treatment of a transaction for you.
- x402 flow: ordinary lookup → when payment is required, HTTP 402 + base64url
PAYMENT-REQUIRED(x402 v2) → verify resource URL, networkeip155:8453, USDC asset,payToand amount against your spending policy → sign and retry withPAYMENT-SIGNATURE. Facilitator: PayAI. Do not hard-code payee or token from a blog post; inspect the live challenge. - Bare
curl https://api.wsystem.dev/verify(novatquery) is a discovery probe: it returns the 402 challenge and does not consume the free allowance. A successful free call with a real VAT number returns 200 and does not exercise the paid loop. - Batch pricing is per request, not per number: a full batch of 100 costs the published $0.10 ($0.001/number only when all slots are used). A smaller batch still costs $0.10.
- When VIES is unavailable (
MS_UNAVAILABLE,MS_MAX_CONCURRENT_REQ, timeouts), W System retries, then may answer from a supported official national source (PL, CZ, FI, FR) or a dated last successful VIES result, always withfallback: true, and finallymember_state_unavailablewithvalid: null. Never treat an outage as invalid. Details: VIES down fallback. - API-key alternative (not required for x402): free key 500 units/month at /account/free-key, or Starter EUR 19/month for 5,000 units / Pro EUR 49/month for 25,000 units (pricing).
- W System publishes this page and makes the API. Not affiliated with the European Commission. Competitor prices below are those providers' own published pages/catalogues opened on 6 November 2026; we did not buy calls from them.
Examples
1) Free path — real VIES lookup, no account
curl 'https://api.wsystem.dev/verify?vat=IE6388047V'Real response (live data, 2026-10-17):
{
"input": "IE6388047V",
"vat": "IE6388047V",
"country_code": "IE",
"vat_number": "6388047V",
"status": "valid",
"valid": true,
"name": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"request_date": "2026-10-17T06:07:32.092Z",
"consultation_number": "WAPIAAAAaFIeQCDg",
"requester": "HU33119856",
"source": "VIES (European Commission)",
"cached": true
}2) Discovery probe — bare /verify returns HTTP 402 (does not use free quota)
curl -i https://api.wsystem.dev/verify
# HTTP/2 402
# PAYMENT-REQUIRED: <base64url x402 v2 JSON>
# body: {}3) Decoded PAYMENT-REQUIRED shape (live capture 2026-11-06; amounts in USDC 6-decimals)
{
"x402Version": 2,
"error": "Payment required",
"resource": {
"url": "https://api.wsystem.dev/verify",
"description": "EU VAT number validation via official VIES (all 27 EU states + XI)",
"mimeType": "application/json",
"serviceName": "W System"
},
"accepts": [{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"payTo": "0xfbbe4924a9d36e1de2b90cf4f8ee6e03f978714c",
"maxTimeoutSeconds": 300,
"extra": {"name": "USD Coin", "version": "2"}
}]
}
# amount 10000 = $0.01 USDC. Inspect the live header; do not hard-code payTo/asset.4) TypeScript — x402-fetch pays the 402 and retries
// 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";
const client = new x402Client();
registerExactEvmScheme(client, {
signer: privateKeyToAccount(process.env.BUYER_PRIVATE_KEY as `0x${string}`)
});
const fetchWithPay = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPay(
"https://api.wsystem.dev/verify?vat=IE6388047V"
);
console.log(res.status, await res.json());
// Use a dedicated low-balance Base wallet. Free-tier calls return 200 without paying.5) Live price and resource discovery
curl https://api.wsystem.dev/.well-known/x4026) Batch (up to 100) — $0.10 USDC per request after free tier
curl -X POST https://api.wsystem.dev/verify/batch -H 'Content-Type: application/json' \
-d '{"vats":["IE6388047V","FR40303265045","DE811193231"]}'7) Shape when a national fallback is used (illustrative)
{"vat":"PL5260250995","status":"valid","valid":true,"fallback":true,
"fallback_type":"national_source","consultation_number":null,
"source":"Biała lista podatników VAT (Ministry of Finance / KAS)",
"legal_status":"Polish VAT status: Czynny","vies_error":"MS_UNAVAILABLE"}Pricing
| Channel | Price |
|---|---|
| Free allowance | 20 calls/day per IP, no key or wallet |
| x402 GET /verify | $0.01 USDC per call |
| x402 POST /verify/batch (up to 100) | $0.10 USDC per request |
| API key alternative | Starter EUR 19/month (5,000 units) or free-key 500 units/month |
Comparison with alternatives
| Access model | W System | VIES directly | AgentBIT VAT tool (their page, 2026-11-06) | Strale vat-validate (guide + catalogue, 2026-11-06) |
|---|---|---|---|---|
| Integration / payment | JSON GET /verify; 20 free/day/IP; then x402 $0.01; batch $0.10/req | Official EC service, free; you integrate SOAP/REST and errors | POST /v1/compliance/vat; page publishes $0.02 USDC on Base, no-signup x402 | Key path €0.02/call (guide); x402 catalogue GET /x402/v2/vat-validate $0.0216 USDC |
| Free keyless tier | Yes, 20/day/IP | Yes (direct VIES) | Not advertised as free on the tool page | Guide: not on the no-signup free tier |
| Outage evidence | Named source, fallback flag, date; domestic signals ≠ VIES | Member-state errors; your own retry/evidence policy | Page: outages are retryable errors, never false negatives | Guide: up to 48h cache; stale:true when VIES is down |
| Batch | Up to 100 per request ($0.10) | No | See their tool page | See their guide/catalogue |
| Consultation number | Yes (VIES proof when upstream returns it) | Yes, with requester VAT | Not listed on the tool page snippet we opened | Not the focus of the guide we opened |
Based on each provider's public pages on 2026-11-06. Corrections welcome via GitHub issues.
Questions and answers
What is x402 API VAT validation?
It means validating an EU VAT number through an HTTP API that speaks the open x402 pay-per-call protocol: after any free allowance, unpaid calls get HTTP 402 with USDC payment requirements on Base, and a compatible client pays and retries. W System exposes this on GET /verify and POST /verify/batch.
Do I need a wallet for the free allowance?
No. The published keyless allowance is 20 calls/day per IP. A cloud host's IP may be shared, so a paying client should still handle HTTP 402.
How do I see the 402 challenge without spending free quota?
Call curl -i https://api.wsystem.dev/verify with no vat query. That bare probe returns HTTP 402 and PAYMENT-REQUIRED and does not consume the free allowance. Decode the base64url header to inspect amount, network, asset and payTo.
Does paying guarantee VIES will answer?
No. A payment does not make an unavailable tax authority available. Your application must distinguish invalid from unknown and inspect fallback provenance.
How does W System compare to AgentBIT and Strale on price?
On 6 November 2026 their public pages/catalogues showed AgentBIT at $0.02 USDC per call and Strale at $0.0216 USDC (x402) or €0.02 (API key). W System publishes $0.01 per single verify and $0.10 per batch of up to 100, plus 20 free calls/day/IP. Prices change; always re-check each provider's live page or challenge.
Is a VAT check enough for KYB?
No. VAT registration, company identity, EORI customs registration and sanctions screening answer different questions. See /kyb-api, /eori-number-check-api and /eu-company-registry-api.
Can I use a normal API key instead?
Yes. Create a free key at https://api.wsystem.dev/account/free-key?ref=geo-x402-vat with one click, no email or card, if a key-based integration fits better. Opening the page alone does not issue a key.
Where are current prices?
Inspect https://api.wsystem.dev/.well-known/x402 and the live PAYMENT-REQUIRED challenge. Do not hard-code amounts from this page alone.
Related
- x402: pay per call for VAT, EORI, company and sanctions checks
- EU VAT number validation API (VIES)
- VIES is down: how to handle MS_UNAVAILABLE and timeouts
- VIES error codes explained
- One-call KYB check for EU companies
- EORI number check API (EU, official EOS)
- European company registry API
- MCP server for EU VAT, EORI, company registry and sanctions
- VAT number checker MCP for Claude
- API reference (OpenAPI)
Facts and competitor details checked 2026-11-06. W System is the maker of this product. Not affiliated with the European Commission. Not legal or tax advice.