Docs Pricing Blog Get API Key
VAT Validation API

EU VAT Validation API — Faster and More Reliable than VIES

VIES averages 70% uptime and requires SOAP. EuroValidate gives you a REST API with sub-100ms cached responses, per-country circuit breakers, and confidence scoring across all 27 EU member states.

Response — 47ms
{
  "valid": true,
  "vat_number": "NL820646660B01",
  "country_code": "NL",
  "company_name": "COOLBLUE B.V.",
  "company_address": "Weena 664\n3012CN ROTTERDAM",
  "confidence": "HIGH",
  "source": "vies_live",
  "cached": false,
  "response_time_ms": 47
}

VIES Is Unreliable. Your Business Suffers.

The EU VIES system depends on 27 independent national backends. Each country manages its own infrastructure with wildly different uptime. Germany alone generates 95% of all VIES errors. When VIES goes down, your checkout breaks, your invoicing stalls, and your customers leave.

Frequent Downtime

VIES member state backends go offline regularly. Germany, Italy, and Spain are the worst offenders. There is no SLA, no status page, no warning.

📄

Legacy SOAP Protocol

VIES uses SOAP/XML with verbose WSDL contracts. No REST, no JSON, no developer-friendly tooling. Parsing responses requires specialized libraries like zeep.

🚫

Missing Company Data

Germany and Spain never return company names or addresses due to data protection laws. You get a "valid/invalid" boolean and nothing else.

🌐

Country Code Inconsistencies

Greece uses "EL" in VIES but "GR" in ISO 3166. Northern Ireland has dual status (XI for customs, GB for VAT). Monaco routes through France. None of this is documented well.

Everything You Need for EU VAT Validation

EuroValidate wraps the VIES SOAP API in a modern REST interface with intelligent caching, per-country health monitoring, and automatic enrichment from GLEIF when VIES data is incomplete.

Sub-100ms Responses

Dual-layer cache (Redis + PostgreSQL) serves previously validated numbers in under 100ms. Cache TTL is 24 hours per GDPR requirements.

🛡

27 Independent Circuit Breakers

Each EU country gets its own circuit breaker. When Germany goes down, France keeps working. No single point of failure across the entire EU.

📊

Confidence Scoring

Every response includes a confidence level: HIGH (live verification), MEDIUM (cached, recent), LOW (cached, stale), or UNKNOWN. Your application decides how to proceed.

🇪🇺

All 27 EU Countries + UK

Full coverage of all EU member states plus UK VAT validation via HMRC. Automatic GR/EL mapping for Greece, XI routing for Northern Ireland.

🔄

Graceful Degradation

When VIES is down, EuroValidate returns the last known valid result with reduced confidence and an upstream_status field. Your checkout never breaks.

🔍

GLEIF Enrichment

For countries like Germany and Spain that suppress company data, EuroValidate cross-references the GLEIF LEI database to fill in company names and addresses.

Integrate in Under 5 Minutes

A single GET request validates any EU VAT number. No WSDL, no SOAP envelopes, no XML parsing. Just clean JSON over HTTPS.

# Validate a Dutch VAT number
curl "https://api.eurovalidate.com/v1/vat/NL820646660B01" \
  -H "X-API-Key: your_api_key"

# Response
{
  "success": true,
  "data": {
    "valid": true,
    "vat_number": "NL820646660B01",
    "country_code": "NL",
    "company_name": "COOLBLUE B.V.",
    "company_address": "Weena 664, 3012CN ROTTERDAM"
  },
  "meta": {
    "confidence": "HIGH",
    "source": "vies_live",
    "response_time_ms": 47
  }
}
import httpx

response = httpx.get(
    "https://api.eurovalidate.com/v1/vat/NL820646660B01",
    headers={"X-API-Key": "your_api_key"}
)

data = response.json()

if data["data"]["valid"]:
    print(f"Valid: {data['data']['company_name']}")
    print(f"Confidence: {data['meta']['confidence']}")
else:
    print("Invalid VAT number")
const response = await fetch(
  "https://api.eurovalidate.com/v1/vat/NL820646660B01",
  { headers: { "X-API-Key": "your_api_key" } }
);

const { data, meta } = await response.json();

if (data.valid) {
  console.log(`Valid: ${data.company_name}`);
  console.log(`Confidence: ${meta.confidence}`);
} else {
  console.log("Invalid VAT number");
}

Simple, Usage-Based Pricing

Start free. Scale as you grow. No credit card required for the free tier. All plans include VAT validation, IBAN, EORI, and company lookup.

Free
€0 /mo
100 requests/month
  • All endpoints
  • JSON responses
  • Community support
Get Started Free
Starter
€19 /mo
5,000 requests/month included. Then €0.005/req.
  • 5,000 included, €0.005 above
  • All endpoints
  • Batch validation
  • Email support
Start Free Trial
Scale
€149 /mo
100,000 requests/month included. Then €0.002/req.
  • 100,000 included, €0.002 above
  • All endpoints
  • Monitoring webhooks
  • Dedicated support
  • 99.95% SLA
Start Free Trial

Frequently Asked Questions

Common questions about the EuroValidate VAT Validation API.

VIES depends on 27 national tax authority backends. Each country manages its own server independently, leading to frequent downtime — especially Germany, which generates 95% of all VIES errors. EuroValidate adds a caching layer and per-country circuit breakers to shield you from these outages.
EuroValidate uses a dual-layer cache (Redis + PostgreSQL) and per-country circuit breakers. When a country's VIES backend is down, we return the last known valid result with a reduced confidence score and an upstream_status field so your application can decide how to proceed.
Yes. Greece uses EL in the VIES system but GR in ISO 3166. EuroValidate automatically maps between the two — you can send either EL or GR and get correct results. The response always includes both codes for clarity.
Germany and Spain do not return company name or address data through VIES due to data protection laws. EuroValidate automatically enriches these results by cross-referencing the GLEIF LEI database, so you still get company details when available.
Yes. Use the POST /v1/batch endpoint to validate up to 1,000 VAT numbers in a single request. Results are processed asynchronously and you can poll for status or receive a webhook when complete.

Stop Fighting VIES. Start Validating.

Get your free API key and validate your first VAT number in under 60 seconds.