VAT validation API
One GET request. JSON back. VIES retries and outages handled.
Validate a number
curl "https://vatcheckly.com/api/v1/check?vat=DE123456789" \ -H "Authorization: Bearer YOUR_LICENSE_KEY"
{
"vat": "DE123456789",
"country": "DE",
"state": "valid", // valid | invalid | unavailable
"name": "…",
"address": "…",
"consultation_number": "WAPIAAAAZ…", // when requester is set
"checked_at": "2026-10-11T10:40:18Z"
}
Optional: &requester=FI12345678 (your own VAT number) returns a VIES consultation number as proof of the check.
unavailable means the member state's system is down. It is not counted against your quota; retry later.
Without a key the endpoint works with the free limit of 25 requests per day per IP.
Bulk
curl -X POST "https://vatcheckly.com/api/v1/bulk" -H "Authorization: Bearer KEY" \
-H "Content-Type: application/json" \
-d '{"vats":["DE123456789","FR12123456789"],"requester":"FI12345678"}'
# → {"id":"abc123"}
curl "https://vatcheckly.com/api/v1/bulk/abc123" -H "Authorization: Bearer KEY" # JSON progress + rows
curl "https://vatcheckly.com/api/v1/bulk/abc123.csv" -H "Authorization: Bearer KEY" # CSV
VIES status (free)
curl "https://vatcheckly.com/api/v1/status"
Returns availability per member state, refreshed every 5 minutes. Free to use; please cache it.