GET /vat/{number}

VAT validation API

Checksum a VAT number. Deep asks the live EU registry.

Try it

Example response/vat/DE136695976
{
  "vat": "DE136695976",
  "valid": true,
  "country": "DE",
  example
}

1M requests · $20/mo. Get started

What comes back.

vat

Normalized number with country prefix, or null if invalid

valid

Format and checksum match the country

country

ISO 3166-1 alpha-2. GR not EL. XI numbers ship GB

deep.registered

On the live national registry. Null when the registry did not complete

deep.name

Registered legal name, or null

deep.address

street, city, postal, country. null when the registry sent none

deep.consultation

Audit identifier when ?from= is a valid VAT, else null

deep.consulted_at

Registry-provided check time, or null when unavailable

1

Pass a number

Spaces, dots, missing prefix with country. Junk is valid false, never a 404.

2

Deep asks the registry

Registered, legal name, address. One unit from the monthly allowance.

3

Pass your own VAT

from= puts the consultation number on your audit file, not ours.

Coverage

EU VIES. Northern Ireland included. UK HMRC is a follow-up.

27 + NI
live registry states
100
free lookups a month
On demand
see Plans for rates

Pass a VAT number. Core checks format and checksum. Spaces, dots, and a missing prefix with country are fine. A junk value answers valid false as a 200.

Deep asks the live EU registry: registered, legal name, and address. Each deep call on a checksum-valid EU number uses one from your plan's monthly VAT allowance. Free includes 100 a month. Past the allowance, a lookup is half a cent, less on Pro and up. Pass from with your own VAT to get a consultation number for your audit file. UK GB numbers parse on core. Live HMRC is a follow-up. Registry downtime is HTTP 200 with registered null, never registered false. The unit is not billed.

SPEED

How long /vat takes.

Median time to first byte over the last seven days. Warm requests, measured every 30 minutes. Live verification and other request variants can take longer.

US

19ms

EU

19ms

APAC

36ms

LatAm

22ms

ME

91ms

See live status →

Make your first request.

One key works across the APIs. Copy a request in your language and get JSON back.

curl "https://api.parseapi.com/vat/DE136695976" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Parse-Version: 2.0.0"
// Example response · 200
{
  "vat": "DE136695976",
  "valid": true,
  "country": "DE"
}

API referenceSDKsKeys and authentication

Every response field

Response fields

vat
Normalized number with country prefix, or null if invalid
valid
Format and checksum match the country
country
ISO 3166-1 alpha-2. GR not EL. XI numbers ship GB
from
Your requester VAT when ?from= parsed, else omitted

Deep fields

deep.registered
On the live national registry. Null when the registry did not complete
deep.name
Registered legal name, or null
deep.address
street, city, postal, country. null when the registry sent none
deep.consultation
Audit identifier when ?from= is a valid VAT, else null
deep.consulted_at
Registry-provided check time, or null when unavailable

QUESTIONS

What is included in a normal request?
Format and checksum. Spaces, dots, and a missing prefix with country are fine. That rides the normal request pool.
What if it is not a VAT number?
valid: false as a 200. vat is null. Same as a typo in a form field.
What does deep check?
Whether the number is on the live national registry, plus legal name and address when the registry sent them. One unit from the monthly VAT allowance. Free includes 100 a month. See Plans for additional lookup rates.
Where do I find VAT rates?
GET /country/DE?deep=true returns the standard national reference rate in deep.tax and deep.tax_rate on paid plans. The Tax page explains the geographic scopes. A number check does not determine what tax an order owes.
What is from?
Your own VAT number. Pass it and the response includes a consultation identifier for your audit file. Missing or junk from still returns registered, name, and address. consultation is null.
What if the registry is down?
HTTP 200 with registered null. The unit is not billed. registered false means the registry answered not listed.
Northern Ireland or UK?
Registry verification covers EU VAT numbers and Northern Ireland XI numbers. XI keeps its prefix and ships country GB. UK GB numbers support format and checksum validation. GB deep returns registered null and uses no verification unit.
Greece EL or GR?
The public country is GR. The live registry still uses EL on the wire. You can pass either prefix.

Find location reference rates on Tax. VAT number validation is a separate lookup.

Check the number.

Format and checksum on every plan. Registry checks have their own allowance.

Start includes 1M API requests a month for $20/mo.

2,000 VAT registry checks included per month.