Skip to main content
Acasă Calculator Hartă
REST API · No Auth Required · Free

EU VAT Validation API

Validate EU VAT numbers programmatically against the official VIES database. Free to use, no API key, CORS enabled.

Free
No API key or account needed
10 / batch
Validate up to 10 numbers at once
27 Countries
All EU member states supported

Base URL

https://vat.businesspress.io

All endpoints are relative to this base URL. Use HTTPS in production.

Endpoints

POST /api/vat/validation/validate

Validate a single EU VAT number in real-time against the VIES database. Results are cached for 7 days for performance.

Request Body

Parameter Type Required Description
country_code string required 2-letter ISO code (e.g. LT, DE). Greece uses EL.
vat_number string required VAT number without the country prefix (e.g. 100019070512 not LT100019070512).
company_name string optional Expected company name for fuzzy matching verification.
address string optional Expected address for additional verification.

Example Request

curl -X POST https://vat.businesspress.io/api/vat/validation/validate \

-H "Content-Type: application/json" \

-d '

{

"country_code": "LT",

"vat_number": "100019070512"

}'

Example Response

{
  "success": true,
  "data": {
    "valid": true,
    "country_code": "LT",
    "vat_number": "100019070512",
    "name": "UAB Company Name",
    "address": "Vilnius, Lithuania",
    "source": "vies",
    "request_identifier": "..."
  }
}
POST /api/vat/validation/batch max 10

Validate up to 10 VAT numbers in a single request. Each number is validated independently against VIES.

Example Request

{
  "validations": [
    {
      "country_code": "LT",
      "vat_number": "100019070512"
    },
    {
      "country_code": "DE",
      "vat_number": "129274202"
    }
  ]
}

Example Response

{
  "success": true,
  "total": 2,
  "data": [
    {
      "valid": true,
      "country_code": "LT",
      "vat_number": "100019070512",
      "name": "UAB ...",
      ...
    },
    { ... }
  ]
}
GET /api/vat/validation/health

Check the operational status of the VAT validation service.

{
  "status": "operational",
  "service": "VAT VIES Validation API",
  "timestamp": "2026-04-07T10:00:00+00:00"
}

Interactive Playground

Batch demo will validate the above number + a static DE example to show the multi-result response format.

POST

                            
// Response will appear here after you click Send Request
Sending request to VIES…
200 OK

                                
Error

                                

Response Fields

Field Type Description
success boolean Always true for 200 responses.
data.valid boolean Whether the VAT number is currently active in VIES.
data.country_code string ISO 2-letter country code echoed back.
data.vat_number string The VAT number as validated (without prefix).
data.name string|null Company name returned by VIES. May be N/A if withheld by country.
data.address string|null Registered address. May be withheld by some countries.
data.source string vies (live lookup), cache, or database (cached result).
data.request_identifier string|null VIES consultation reference number for audit purposes.

Error Responses

HTTP Status When
422 Validation failed — missing or invalid country_code or vat_number. Check the errors field in the response.
429 Too many requests — fair-use rate limit reached. Retry after a brief pause.
503 The upstream VIES system is temporarily unavailable. Check ec.europa.eu/taxation_customs/vies for status.

Code Examples

curl -X POST https://vat.businesspress.io/api/vat/validation/validate \
  -H "Content-Type: application/json" \
  -d '{"country_code":"LT","vat_number":"100019070512"}'
const response = await fetch('https://vat.businesspress.io/api/vat/validation/validate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    country_code: 'LT',
    vat_number: '100019070512'
  })
});
const data = await response.json();
console.log(data.data.valid); // true
$response = Http::post('https://vat.businesspress.io/api/vat/validation/validate', [
    'country_code' => 'LT',
    'vat_number'  => '100019070512',
]);

$data = $response->json('data');
$isValid = $data['valid']; // true
import requests

res = requests.post(
    "https://vat.businesspress.io/api/vat/validation/validate",
    json={"country_code": "LT", "vat_number": "100019070512"}
)
data = res.json()["data"]
print(data["valid"])  # True

Quick Reference

POST /api/vat/validation/validate
POST /api/vat/validation/batch
GET /api/vat/validation/health

VAT Rates JSON API

Need VAT rates (not validation)? Use our rates API.

GET /api/countries
Open API