Validation

Validate one VAT number

The number may be given with or without its country prefix; sending the prefix twice is the most common cause of a wrong answer, so it is stripped for you. All 27 EU member states are checked against VIES.

get/v1/validate/{country_code}/{vat_number}

Request

  • Base URL: https://www.taxid.dev/api
  • URL: https://www.taxid.dev/api/v1/validate/{country_code}/{vat_number}
  • Auth: HTTP bearer

Path parameters

country_code'AT' | 'BE' | 'BG' | 'CY' | 'CZ' | 'DE' | 'DK' | 'EE' | 'EL' | 'ES' | 'FI' | 'FR' | 'HR' | 'HU' | 'IE' | 'IT' | 'LT' | 'LU' | 'LV' | 'MT' | 'NL' | 'PL' | 'PT' | 'RO' | 'SE' | 'SI' | 'SK' | 'GB' | 'AU' | 'NO' | 'CH' | 'CA' | 'IN' | 'SG' | 'NZ' | 'ZA' | 'AE' | 'MX' | 'JP' | 'IS' | 'MY' | 'KR' | 'HK' | 'BR' | 'TR' | 'TH' | 'ID' required

ISO 3166-1 alpha-2 code. Case-insensitive.

vat_numberstring required
Example:DE123456789

The number, with or without the country prefix. Spaces are ignored.

Response

The registry answered, or explicitly did not.

validboolean required

True only when the registry recognises the number as active.

status'active' | 'invalid' | 'service_unavailable' required

Branch on this, not on valid. service_unavailable means the registry did not answer — it is not a verdict on the number, and treating it as one rejects real customers during someone else's outage.

vat_numberstring required

The number as validated: uppercase, no spaces, no country prefix.

country_codestring required
company_namestring nullable

Null where the member state withholds it — Germany and Spain routinely do. A null name alongside valid:true is a complete answer, not a partial one.

company_addressstring nullable
request_datestring required

When the registry produced the answer.

sourcestring
vat_registeredboolean

Present only for registries that report it separately from validity.

cachedboolean

Served from cache (24h TTL) rather than the registry.

request_idstring

Example response

{
  "source": "VIES",
  "request_id": "req_01j5k8n2p9q4r7s3t6v8"
}

Changes

No recorded changes to this operation across all 1 revision of this API.