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.

Get an API key