VAT Validation API
FinanceMAINTAINED2 tokens / call

VAT Validation API

Validate EU VAT numbers against VIES with registered name and address where disclosed

Validate EU VAT numbers against the official registry. Every check goes to VIES — the European Commission's VAT Information Exchange System, the same source national tax authorities use — and comes back as clean JSON: valid or not, plus the registered company name and address where the member state discloses them (Ireland does: IE6388047V → GOOGLE IRELAND LIMITED, 3rd Floor, Gordon House, Barrow Street; Germany validates but withholds identity — that's the German authority's policy, not a gap). Malformed numbers fail fast against the published per-country syntax rules WITHOUT burning a registry call, with the expected format and an example in the response. Accepts one combined string ('de 811-907-980' is cleaned up), or country + number separately; Greece's GR/EL quirk and Austria's ATU prefix are handled; GB numbers get a clear post-Brexit pointer to HMRC while Northern Ireland (XI) still works. A countries endpoint lists all 28 supported formats with LIVE per-member-state VIES availability, and registry answers are cached 15 minutes to absorb checkout bursts. B2B invoicing, reverse-charge logic, checkout tax exemption, supplier onboarding — the compliance check every EU-facing SaaS needs.

Every call needs an X-Api-Key header. A free key includes 500 tokens a month, no card required. 2 tokens per call, so the free plan covers about 250 calls a month.

No credit card requiredAccess to 125+ APIsCancel anytime
response.json
{
  "ok": true,
  "country": "IE",
  "country_name": "Ireland",
  "vat_number": "IE6388047V",
  "valid": true,
  "syntax_valid": true,
  "name": "GOOGLE IRELAND LIMITED",
  "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
  "request_date": "2026-09-13T06:12:47.979Z",
  "checked_against": "VIES (EU official registry)"
}
Production Ready
Battle-tested infrastructure with a 99.9% uptime SLA. Rate limits are generous, responses are consistent.
Simple Integration
Standard REST + JSON. Works with any HTTP client. Copy-ready code snippets in 4 languages.
One Key, 125+ APIs
Your DataAndAPIs subscription unlocks every API on the platform — anime, finance, sports, and more.

Use cases for VAT Validation API

  • Confirm a business customer's VAT registration at checkout before applying the reverse charge on a cross-border B2B sale.

  • Verify supplier VAT numbers during vendor onboarding and store the registered name for your records.

  • Catch malformed numbers instantly with the format check, before a registry call is made.

  • Monitor which member states' registries are currently answering, so your checkout can degrade gracefully during outages.

VAT Validation API endpoints

Every endpoint with its parameters and a real example response.

GETCheck Format

https://api-vat.dataandapis.com/v1/vat/format

Query parameters

ParameterExample
vatATU13585627Required

Example request

curl "https://api-vat.dataandapis.com/v1/vat/format?vat=ATU13585627" \
  -H "X-Api-Key: YOUR_API_KEY"
Example response
{
  "ok": true,
  "country": "AT",
  "country_name": "Austria",
  "vat_number": "ATU13585627",
  "syntax_valid": true,
  "expected_format": "ATU + 8 digits",
  "example": "ATU13585627"
}

GETData Sources

https://api-vat.dataandapis.com/v1/sources

This endpoint takes no parameters.

Example request

curl "https://api-vat.dataandapis.com/v1/sources" \
  -H "X-Api-Key: YOUR_API_KEY"
Example response
{
  "ok": true,
  "sources": [
    {
      "slug": "vies",
      "name": "VIES — VAT Information Exchange System",
      "publisher": "European Commission (DG TAXUD)",
      "licence": "official EU validation service",
      "source_url": "https://ec.europa.eu/taxation_customs/vies/",
      "file_url": "https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number",
      "cadence": "live registry lookups; results cached 15 minutes"
    }
  ]
}

GETSupported Countries

https://api-vat.dataandapis.com/v1/vat/countries

This endpoint takes no parameters.

Example request

curl "https://api-vat.dataandapis.com/v1/vat/countries" \
  -H "X-Api-Key: YOUR_API_KEY"
Example response
{
  "ok": true,
  "countries": [
    {
      "country": "AT",
      "name": "Austria",
      "format": "ATU + 8 digits",
      "example": "ATU13585627",
      "vies_availability": "Available"
    },
    {
      "country": "BE",
      "name": "Belgium",
      "format": "BE + 10 digits (leading 0 or 1)",
      "example": "BE0403019261",
      "vies_availability": "Available"
    },
    {
      "country": "BG",
      "name": "Bulgaria",
      "format": "BG + 9 or 10 digits",
      "example": "BG131071587",
      "vies_availability": "Available"
    },
    {
      "country": "CY",
      "name": "Cyprus",
      "format": "CY + 8 digits + 1 letter",
…
Show full response
{
  "ok": true,
  "countries": [
    {
      "country": "AT",
      "name": "Austria",
      "format": "ATU + 8 digits",
      "example": "ATU13585627",
      "vies_availability": "Available"
    },
    {
      "country": "BE",
      "name": "Belgium",
      "format": "BE + 10 digits (leading 0 or 1)",
      "example": "BE0403019261",
      "vies_availability": "Available"
    },
    {
      "country": "BG",
      "name": "Bulgaria",
      "format": "BG + 9 or 10 digits",
      "example": "BG131071587",
      "vies_availability": "Available"
    },
    {
      "country": "CY",
      "name": "Cyprus",
      "format": "CY + 8 digits + 1 letter",
      "example": "CY10259033P",
      "vies_availability": "Available"
    },
    {
      "country": "CZ",
      "name": "Czechia",
      "format": "CZ + 8, 9 or 10 digits",
      "example": "CZ25123891",
      "vies_availability": "Available"
    },
    {
      "country": "DE",
      "name": "Germany",
      "format": "DE + 9 digits",
      "example": "DE811907980",
      "vies_availability": "Available"
    },
    {
      "country": "DK",
      "name": "Denmark",
      "format": "DK + 8 digits",
      "example": "DK13585628",
      "vies_availability": "Available"
    },
    {
      "country": "EE",
      "name": "Estonia",
      "format": "EE + 9 digits",
      "example": "EE100931558",
      "vies_availability": "Available"
    },
    {
      "country": "EL",
      "name": "Greece",
      "format": "EL + 9 digits",
      "example": "EL094014201",
      "vies_availability": "Available"
    },
    {
      "country": "ES",
      "name": "Spain",
      "format": "ES + letter/digit + 7 digits + letter/digit",
      "example": "ESA28015865",
      "vies_availability": "Available"
    },
    {
      "country": "FI",
      "name": "Finland",
      "format": "FI + 8 digits",
      "example": "FI09073468",
      "vies_availability": "Available"
    },
    {
      "country": "FR",
      "name": "France",
      "format": "FR + 2 check chars + 9 digits",
      "example": "FR40303265045",
      "vies_availability": "Available"
    },
    {
      "country": "HR",
      "name": "Croatia",
      "format": "HR + 11 digits",
      "example": "HR24595836665",
      "vies_availability": "Available"
    },
    {
      "country": "HU",
      "name": "Hungary",
      "format": "HU + 8 digits",
      "example": "HU12892312",
      "vies_availability": "Available"
    },
    {
      "country": "IE",
      "name": "Ireland",
      "format": "IE + 7 digits + 1-2 letters (or old style)",
      "example": "IE6388047V",
      "vies_availability": "Available"
    },
    {
      "country": "IT",
      "name": "Italy",
      "format": "IT + 11 digits",
      "example": "IT00743110157",
      "vies_availability": "Available"
    },
    {
      "country": "LT",
      "name": "Lithuania",
      "format": "LT + 9 or 12 digits",
      "example": "LT119511515",
      "vies_availability": "Available"
    },
    {
      "country": "LU",
      "name": "Luxembourg",
      "format": "LU + 8 digits",
      "example": "LU15027442",
      "vies_availability": "Available"
    },
    {
      "country": "LV",
      "name": "Latvia",
      "format": "LV + 11 digits",
      "example": "LV40003032949",
      "vies_availability": "Available"
    },
    {
      "country": "MT",
      "name": "Malta",
      "format": "MT + 8 digits",
      "example": "MT11679112",
      "vies_availability": "Available"
    },
    {
      "country": "NL",
      "name": "Netherlands",
      "format": "NL + 12 chars (usually 9 digits + B + 2 digits)",
      "example": "NL804115217B01",
      "vies_availability": "Available"
    },
    {
      "country": "PL",
      "name": "Poland",
      "format": "PL + 10 digits",
      "example": "PL5260250995",
      "vies_availability": "Available"
    },
    {
      "country": "PT",
      "name": "Portugal",
      "format": "PT + 9 digits",
      "example": "PT500278725",
      "vies_availability": "Available"
    },
    {
      "country": "RO",
      "name": "Romania",
      "format": "RO + 2 to 10 digits",
      "example": "RO11198699",
      "vies_availability": "Available"
    },
    {
      "country": "SE",
      "name": "Sweden",
      "format": "SE + 10 digits + 01",
      "example": "SE556036079301",
      "vies_availability": "Available"
    },
    {
      "country": "SI",
      "name": "Slovenia",
      "format": "SI + 8 digits",
      "example": "SI15012557",
      "vies_availability": "Available"
    },
    {
      "country": "SK",
      "name": "Slovakia",
      "format": "SK + 10 digits",
      "example": "SK2020317068",
      "vies_availability": "Available"
    },
    {
      "country": "XI",
      "name": "Northern Ireland",
      "format": "XI + 9 or 12 digits (goods only, post-Brexit)",
      "example": "XI110305878",
      "vies_availability": "Available"
    }
  ]
}

GETValidate VAT Number

https://api-vat.dataandapis.com/v1/vat/validate

Query parameters

ParameterExample
countryIEOptional
number6388047VOptional
vatIE6388047VOptional

Example request

curl "https://api-vat.dataandapis.com/v1/vat/validate?country=IE&number=6388047V&vat=IE6388047V" \
  -H "X-Api-Key: YOUR_API_KEY"
Example response
{
  "ok": true,
  "country": "IE",
  "country_name": "Ireland",
  "vat_number": "IE6388047V",
  "valid": true,
  "syntax_valid": true,
  "name": "GOOGLE IRELAND LIMITED",
  "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
  "request_date": "2026-09-13T06:12:47.979Z",
  "checked_against": "VIES (EU official registry)"
}

Where the data comes from

Source
The European Commission's VIES service, queried live, plus the published VAT number formats of the 27 EU member states and Northern Ireland.
Freshness
Validated live against VIES on each call, with results cached for 15 minutes.

One install. Every endpoint.

No proprietary SDKs needed. Any HTTP client works. Pick your language and paste.

3languages
4endpoints
RESTarchitecture
1key for all APIs
  • Fully typed responses — auto-completion in your IDE
  • Tracks the API in lockstep — new endpoints land same day
  • One key works across 125+ APIs on the platform
import axios from 'axios';

const { data } = await axios.get(
  'https://api-vat.dataandapis.com/v1/vat/format',
  { headers: { 'X-Api-Key': process.env.API_KEY } }
);

VAT Validation API · X-Api-Key

Explore the endpoints

Browse request parameters and inspect live example responses.

Available Endpoints

Request Parameters

API URL

Headers

X-Api-Key

Query Parameters

vat(Required)
import axios from 'axios';

const url = 'https://api-vat.dataandapis.com/v1/vat/format';
const { data } = await axios.get(url, {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' }
});

One subscription. Every API.

Tokens unlock this API and 125+ others on DataAndAPIs. Switch APIs any time — we promote.

FREE

$0/mo

500 tokens / month

  • Access to all APIs
  • Tokens reset monthly
  • Community support
Start free
Most Popular

STARTER

$6.99/mo

25,000 tokens / month

  • Access to all APIs
  • Tokens reset monthly
  • Email support
Subscribe

PRO

$24.99/mo

100,000 tokens / month

  • Access to all APIs
  • Tokens reset monthly
  • Priority email support
Subscribe

ULTRA

$99.99/mo

1,000,000 tokens / month

  • Access to all APIs
  • Tokens reset monthly
  • Priority support
Subscribe

Need higher volume, dedicated infra, or a custom contract? Talk to sales →

Questions about VAT Validation API

Ship VAT Validation API this afternoon.

500 free tokens. No card. Plus 125+ other APIs on the same key.