VAT Number
GET/v0/vat
Validates VAT identification numbers (VATIN) for EU and selected non-EU countries. Checks format compliance per country-specific rules. The value may include the country prefix (e.g. DE123456789) or consist of the number only (e.g. 123456789). Spaces, hyphens, and dots are stripped automatically.
Try it
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| value | string | Yes | The VAT number to validate (with or without country prefix) |
| countryCode | string | No | ISO 3166-1 alpha-2 country code (e.g. DE, PL, FR). If omitted, the code is inferred from the first two characters of value. |
| checkVies | boolean | No | When true, queries the EU VIES system to verify the number is actively registered. Only applicable to EU countries. Adds a vies object to the response. |
Supported Countries
| Code | Country | Format (without prefix) |
|---|---|---|
| AL | Albania | letter (J/K/L/M) + 8 digits + letter |
| AR | Argentina | 11 digits (CUIT) |
| AT | Austria | U + 8 digits |
| AU | Australia | 11 digits (ABN) |
| BA | Bosnia and Herzegovina | 12–13 digits |
| BE | Belgium | 10 digits |
| BG | Bulgaria | 9–10 digits |
| BO | Bolivia | 7 digits (NIT) |
| BR | Brazil | 11 digits (CPF) or 14 digits (CNPJ) |
| BY | Belarus | 9 digits |
| BZ | Belize | 6 digits |
| CA | Canada | 9 digits (BN) |
| CH | Switzerland | 6 digits (old) or E + 9 digits + optional suffix |
| CL | Chile | 8 digits + check char (0–9 or K) |
| CN | China | 18 alphanumeric chars (USCI) |
| CO | Colombia | 10 digits (NIT + check) |
| CR | Costa Rica | 9–12 digits |
| CY | Cyprus | 8 digits + 1 letter |
| CZ | Czech Republic | 8–10 digits |
| DE | Germany | 9 digits; or 9 digits + EX (small companies) |
| DK | Denmark | 8 digits |
| DO | Dominican Republic | 9 digits (companies) or 11 digits (individuals) |
| EC | Ecuador | 13 digits (RUC) |
| EE | Estonia | 9 digits |
| EL | Greece | 9 digits |
| ES | Spain | letter/digit + 7 digits + letter/digit |
| FI | Finland | 8 digits |
| FR | France | 2 alphanum chars + 9 digits |
| GB | United Kingdom | 9 or 12 digits; GD000–GD499; HA500–HA999 |
| GT | Guatemala | 8 digits (NIT + check) |
| HN | Honduras | 14 digits (RTN) |
| HR | Croatia | 11 digits |
| HU | Hungary | 8 digits |
| ID | Indonesia | 16 digits (NPWP) |
| IE | Ireland | 7 digits + 1–2 letters |
| IL | Israel | 1–9 digits |
| IN | India | 15 chars (GSTIN) |
| IS | Iceland | 5–6 digits |
| IT | Italy | 11 digits |
| JP | Japan | 13 digits (Corporate Number) |
| KZ | Kazakhstan | 12 digits (BIN/PIN) |
| LT | Lithuania | 9 or 12 digits |
| LU | Luxembourg | 8 digits |
| LV | Latvia | 11 digits |
| MK | North Macedonia | 13 digits |
| MT | Malta | 8 digits |
| MX | Mexico | 12–13 chars (RFC) |
| NG | Nigeria | 12 digits (TIN) |
| NI | Nicaragua | 13 digits + 1 letter (RUC) |
| NL | Netherlands | 9 digits + B + 2 digits |
| NO | Norway | 9 digits + optional MVA |
| NZ | New Zealand | 9 digits (IRD) |
| PA | Panama | variable (RUC) |
| PE | Peru | 11 digits (RUC) |
| PH | Philippines | 12 digits (TIN) |
| PL | Poland | 10 digits |
| PT | Portugal | 9 digits |
| PY | Paraguay | 7–9 digits (RUC) |
| RO | Romania | 2–10 digits |
| RS | Serbia | 9 digits (PIB) |
| RU | Russia | 10 or 12 digits (INN) |
| SA | Saudi Arabia | 15 digits |
| SE | Sweden | 12 digits |
| SI | Slovenia | 8 digits |
| SK | Slovakia | 10 digits |
| SM | San Marino | 5 digits |
| SV | El Salvador | 14 digits (NIT) |
| TR | Turkey | 10 digits (VKN) |
| TW | Taiwan | 8 digits |
| UA | Ukraine | 12 digits |
| UY | Uruguay | 12 digits (RUT) |
| UZ | Uzbekistan | 9 digits (INN) |
| VE | Venezuela | letter (J/G/V/E) + 9 digits (RIF) |
Example Request
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://api.isvalid.dev/v0/vat?value=DE123456789&countryCode=DE&checkVies=true"
Response Fields
| Field | Type | Description |
|---|---|---|
| valid | boolean | Whether the VAT number matches the expected format and checksum |
| normalized | string | The VAT number after normalisation (uppercase, spaces/hyphens/dots removed) and country prefix stripped |
| countryCode | string | The 2-letter country code used for validation |
| countryName | string | Full name of the country |
| isEU | boolean | Whether the country is an EU member state (relevant for VIES lookup) |
| vies | object | Only present when checkVies=true. See The vies object below. |
The vies object
When the VIES check was skipped or failed (checked: false):
| Field | Type | Description |
|---|---|---|
| checked | boolean | false |
| reason | string | not_eu — country is not an EU member state; unavailable — VIES API could not be reached |
When the VIES check succeeded (checked: true):
| Field | Type | Description |
|---|---|---|
| checked | boolean | true |
| valid | boolean | Whether the number is actively registered in the VIES database |
| name | string | null | Registered business name as returned by VIES, or null if not available |
| address | string | null | Registered business address as returned by VIES, or null if not available |
Example Response
{
"valid": true,
"countryCode": "DE",
"countryName": "Germany",
"isEU": true,
"vies": {
"checked": true,
"valid": true,
"name": "EXAMPLE GMBH",
"address": "MUSTERSTRASSE 1\n10115 BERLIN"
}
}