GET /vat/{number}

VAT number API

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

Try it

100 free a month, then half a cent a lookup.

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

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

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.

100 free a month.

Then half a cent a lookup. Checksum stays pooled.

27 + NI
live registry states
100
free lookups a month
$0.005
a lookup after that

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. Member-state downtime is HTTP 503, never registered false.

RESPONSE

$ curl "https://api.parseapi.com/vat/DE136695976" \
  -H "X-API-Key: YOUR_API_KEY"

// 200 · ~32ms US · ~127ms worldwide
{
  "vat": "DE136695976",
  "valid": true,
  "country": "DE"
}

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
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
Registry timestamp of this check

QUESTIONS

What is free on every call?
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. Past the allowance, a lookup is $0.005 on Start and $0.004 on Pro and up.
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.
Why a 503 instead of registered false?
When a member state is down, we cannot answer. Probe failure releases the unit. registered false means the registry answered not listed.
Northern Ireland or UK?
XI numbers keep the XI prefix and ship country GB. UK GB numbers parse on core. Live HMRC is a follow-up, so GB deep ships registered null and does not use a unit.
Greece EL or GR?
The public country is GR. The live registry still uses EL on the wire. You can pass either prefix.

SPEED

How long a lookup takes.

US

32ms

EU

64ms

APAC

146ms

LatAm

18ms

ME

123ms

See live status →

Coverage

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