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.

Guides: Node.js · Python

Try it

Query Parameters

ParameterTypeRequiredDescription
valuestringYesThe VAT number to validate (with or without country prefix)
countryCodestringNoISO 3166-1 alpha-2 country code (e.g. DE, PL, FR). If omitted, the code is inferred from the first two characters of value.
checkViesbooleanNoWhen 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

CodeCountryFormat (without prefix)
ALAlbanialetter (J/K/L/M) + 8 digits + letter
ARArgentina11 digits (CUIT)
ATAustriaU + 8 digits
AUAustralia11 digits (ABN)
BABosnia and Herzegovina12–13 digits
BEBelgium10 digits
BGBulgaria9–10 digits
BOBolivia7 digits (NIT)
BRBrazil11 digits (CPF) or 14 digits (CNPJ)
BYBelarus9 digits
BZBelize6 digits
CACanada9 digits (BN)
CHSwitzerland6 digits (old) or E + 9 digits + optional suffix
CLChile8 digits + check char (0–9 or K)
CNChina18 alphanumeric chars (USCI)
COColombia10 digits (NIT + check)
CRCosta Rica9–12 digits
CYCyprus8 digits + 1 letter
CZCzech Republic8–10 digits
DEGermany9 digits; or 9 digits + EX (small companies)
DKDenmark8 digits
DODominican Republic9 digits (companies) or 11 digits (individuals)
ECEcuador13 digits (RUC)
EEEstonia9 digits
ELGreece9 digits
ESSpainletter/digit + 7 digits + letter/digit
FIFinland8 digits
FRFrance2 alphanum chars + 9 digits
GBUnited Kingdom9 or 12 digits; GD000–GD499; HA500–HA999
GTGuatemala8 digits (NIT + check)
HNHonduras14 digits (RTN)
HRCroatia11 digits
HUHungary8 digits
IDIndonesia16 digits (NPWP)
IEIreland7 digits + 1–2 letters
ILIsrael1–9 digits
INIndia15 chars (GSTIN)
ISIceland5–6 digits
ITItaly11 digits
JPJapan13 digits (Corporate Number)
KZKazakhstan12 digits (BIN/PIN)
LTLithuania9 or 12 digits
LULuxembourg8 digits
LVLatvia11 digits
MKNorth Macedonia13 digits
MTMalta8 digits
MXMexico12–13 chars (RFC)
NGNigeria12 digits (TIN)
NINicaragua13 digits + 1 letter (RUC)
NLNetherlands9 digits + B + 2 digits
NONorway9 digits + optional MVA
NZNew Zealand9 digits (IRD)
PAPanamavariable (RUC)
PEPeru11 digits (RUC)
PHPhilippines12 digits (TIN)
PLPoland10 digits
PTPortugal9 digits
PYParaguay7–9 digits (RUC)
RORomania2–10 digits
RSSerbia9 digits (PIB)
RURussia10 or 12 digits (INN)
SASaudi Arabia15 digits
SESweden12 digits
SISlovenia8 digits
SKSlovakia10 digits
SMSan Marino5 digits
SVEl Salvador14 digits (NIT)
TRTurkey10 digits (VKN)
TWTaiwan8 digits
UAUkraine12 digits
UYUruguay12 digits (RUT)
UZUzbekistan9 digits (INN)
VEVenezuelaletter (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

FieldTypeDescription
validbooleanWhether the VAT number matches the expected format and checksum
normalizedstringThe VAT number after normalisation (uppercase, spaces/hyphens/dots removed) and country prefix stripped
countryCodestringThe 2-letter country code used for validation
countryNamestringFull name of the country
isEUbooleanWhether the country is an EU member state (relevant for VIES lookup)
viesobjectOnly present when checkVies=true. See The vies object below.

The vies object

When the VIES check was skipped or failed (checked: false):

FieldTypeDescription
checkedbooleanfalse
reasonstringnot_eu — country is not an EU member state; unavailable — VIES API could not be reached

When the VIES check succeeded (checked: true):

FieldTypeDescription
checkedbooleantrue
validbooleanWhether the number is actively registered in the VIES database
namestring | nullRegistered business name as returned by VIES, or null if not available
addressstring | nullRegistered 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"
  }
}