Search by task, endpoint, field, or error.
VAT API
Checksum a VAT number. Deep asks the live registry.
Checksum a VAT number before you store it. You get the normalized number and the country. That counts as a normal request. A string that is not a VAT number answers valid: false as a 200, never a 404.
Deep asks the live EU registry for registered, legal name, and address. ?from= your own VAT number to get a consultation identifier for your audit file. Those calls use your plan's monthly VAT lookup allowance. Free includes 100. Each deep request on a checksum-valid EU number uses one lookup. UK GB numbers parse on core. Live HMRC is a follow-up, so GB deep ships registered null and does not use a unit.
For a standard national reference rate, use a country lookup. GET /country/de?deep=true adds deep.tax and deep.tax_rate on paid plans. State and US ZIP lookups use the same fields at their own geographic scopes. See Tax.
Validate
Parameters 4
- numberstring · path · required
VAT number, with or without the country prefix
- countrystring · query · optional
ISO 3166-1 alpha-2 when the number has no prefix
- fromstring · query · optional
Your own VAT number. Returns a consultation identifier for your audit file
- deepboolean · query · optional
When true, include optional detail in deep. Access depends on the endpoint: pooled detail, an included paid-plan profile, or a metered check. Core values stay unchanged.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.vat("DE136695976");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"vat": "DE136695976",
"valid": true,
"country": "DE"
}import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.vat("not-a-vat");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"vat": null,
"valid": false,
"country": null
}Response fields
Deep registry
Live VIES check. Counts toward your plan's monthly VAT lookup allowance. See Plans. Registry downtime is HTTP 200 with registered null, never registered false.
Deep examples run with your own key. Check this API’s included units and pricing before running.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.vat("DE136695976", { deep: true });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"vat": "DE136695976",
"valid": true,
"country": "DE",
"deep": {
"registered": false,
"name": null,
"address": null,
"consultation": null,
"consulted_at": "2026-08-31T04:13:10.436Z"
}
}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? Email