One request. Clean JSON.
# Validate a VAT number
GET https://apivat.eu/v1/vat/LU12345678
Authorization: Bearer vat_…
{
"vat_id": "LU12345678",
"valid": true,
"name": "Example S.A.",
"address": "1 Rue de la Loi, L-1234 Luxembourg",
"source": "cache",
"checked_at": "2026-05-10T09:00:00Z"
}Everything VIES should have been
The EU's VIES portal has no public API contract. It bans naive clients and fails unpredictably under load. We solved that so you don't have to.
No VIES rate-limit headaches
VIES bans naive clients and rate-limits per member state. We handle the per-country queuing, exponential back-off, and retry logic — so you never have to.
Single clean REST endpoint
One GET request returns whether the VAT number is valid, plus the registered company name and address. No SOAP, no XML, no EU portal scraping.
Fast cached responses
Results are cached in Elasticsearch. Repeat lookups return in milliseconds without touching VIES upstream. Cache is refreshed automatically after 30 days.
Batch lookups built in
Validate up to 1,000 VAT numbers in a single API call on paid plans. The queue respects per-country concurrency limits and retries transient failures automatically.
Predictable pricing
Fixed monthly quota. No per-request billing surprises. Start free with 100 lookups — upgrade when you need more.
Developer-friendly
API-key auth. JSON responses. Clear error codes (400 bad format, 402 quota exceeded, 429 rate-limited, 502 VIES upstream error). Built for production from day one.