EU VAT Number Validation & Lookup API
Check any EU or UK VAT number and get the registered company name and address back as JSON. Apply reverse charge with confidence and stop invoicing invalid VAT IDs.
Just one number to check? Use the free VAT checker
Everything you need to automate VAT number checks
One API call checks a VAT number's format, checksum and registration, and returns the company behind it, so your checkout and invoicing can handle B2B sales on their own.
150 free validations a month
Enough to build and test your integration before you pay anything.
Official registry data
Registration details come from the official VAT registries, with the time of each check in the response.
Support from engineers
Your questions go to the people who build the API, and you get an answer within 24 hours.
No rate limits on paid plans
Run as many requests in parallel as you need. Paid plans have no rate limit.
Validate a VAT number now
Enter any EU or UK VAT number to see whether it's valid and which company it belongs to.
Plain REST and JSON, with code examples, a Postman collection and complete documentation.
{
"country_code": "LU",
"vat_number": "26375245",
"format_valid": true,
"checksum_valid": true,
"registration_info": {
"is_registered": true,
"name": "AMAZON EUROPE CORE S.A R.L.",
"address": "38, AVENUE JOHN F. KENNEDY\nL-1855 LUXEMBOURG",
"checked_at": "2026-09-25T17:21:43.000000Z"
}
}
"We had a few special requirements, and the VatcheckAPI team was super responsive & helpful, as they replied to all our questions and helped us get started within just a few hours. With the help of their VAT validation API, we can now easily handle our cross-border B2B sales."
Wernhard Berger Co-CEO, Breatheilo
# validate a VAT number
curl --request GET \
--url "https://api.vatcheckapi.com/v2/check?vat_number=LU26375245" \
--header "apikey: YOUR-APIKEY"
// validate a VAT number
$url = "https://api.vatcheckapi.com/v2/check?vat_number=LU26375245&apikey=YOUR-APIKEY";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
print_r($response);
// validate a VAT number
const request = require('request-promise');
request('https://api.vatcheckapi.com/v2/check?vat_number=LU26375245&apikey=YOUR-APIKEY')
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
// validate a VAT number
try {
String apikey = "YOUR-APIKEY";
String url = "https://api.vatcheckapi.com/v2/check?vat_number=LU26375245&apikey=" + apikey;
URL urlForGetRequest = new URL(url);
String readLine = null;
HttpURLConnection connection = (HttpURLConnection) urlForGetRequest.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
while ((readLine = in.readLine()) != null) {
response.append(readLine);
}
in.close();
System.out.println(response.toString());
} else {
throw new Exception("Error in API Call");
}
} catch (Exception ex) {
ex.printStackTrace();
}
Up and running in minutes
One GET request with your API key returns the validation result and the company details as JSON. The documentation covers every field and error code.