Home / Validate VAT
Validate EU VAT Numbers by Country
The TaxID API validates VAT numbers for all 27 EU member states through the EU VIES (VAT Information Exchange System). Every request performs two checks: local format validation against each country's regex pattern, then a live VIES query returning registration status and company name.
Cached results return in under 10ms. Active registrations are cached for 24 hours; invalid results for 1 hour. When VIES is unavailable, the API returns an explicit service_unavailable status so you can handle outages without rejecting valid customers.
QUICK START — validate any EU VAT number
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://www.taxid.dev/api/v1/validate/DE/DE123456789
# { "valid": true, "status": "active", "company_name": "...", "cached": false }All 27 EU member states
Select a country for the format specification, code examples in 4 languages, and country-specific FAQs.
Austria
Österreich
ATU + 8 digits
Standard rate: 20%
Belgium
België / Belgique
BE + 0 or 1 + 9 digits (10 digits total)
Standard rate: 21%
Bulgaria
България
BG + 9 or 10 digits
Standard rate: 20%
Cyprus
Κύπρος
CY + 8 digits + 1 letter
Standard rate: 19%
Czech Republic
Česká republika
CZ + 8, 9, or 10 digits
Standard rate: 21%
Germany
Deutschland
DE + 9 digits
Standard rate: 19%
Denmark
Danmark
DK + 8 digits
Standard rate: 25%
Estonia
Eesti
EE + 9 digits
Standard rate: 22%
Greece
Ελλάδα
EL + 9 digits
Standard rate: 24%
Spain
España
ES + letter/digit + 7 digits + letter/digit
Standard rate: 21%
Finland
Suomi
FI + 8 digits
Standard rate: 25.5%
France
France
FR + 2 alphanumeric chars + 9 digits
Standard rate: 20%
Croatia
Hrvatska
HR + 11 digits
Standard rate: 25%
Hungary
Magyarország
HU + 8 digits
Standard rate: 27%
Ireland
Éire / Ireland
IE + digit + alphanumeric + 5 digits + 1-2 letters
Standard rate: 23%
Italy
Italia
IT + 11 digits
Standard rate: 22%
Lithuania
Lietuva
LT + 9 digits (companies) or 12 digits (individuals)
Standard rate: 21%
Luxembourg
Lëtzebuerg
LU + 8 digits
Standard rate: 17%
Latvia
Latvija
LV + 11 digits
Standard rate: 21%
Malta
Malta
MT + 8 digits
Standard rate: 18%
Netherlands
Nederland
NL + 9 digits + B + 2 digits
Standard rate: 21%
Poland
Polska
PL + 10 digits
Standard rate: 23%
Portugal
Portugal
PT + 9 digits
Standard rate: 23%
Romania
România
RO + 2 to 10 digits
Standard rate: 19%
Sweden
Sverige
SE + 12 digits
Standard rate: 25%
Slovenia
Slovenija
SI + 8 digits
Standard rate: 22%
Slovakia
Slovensko
SK + 10 digits
Standard rate: 23%
How EU VAT validation works
Format check
Every EU country has a distinct VAT number pattern — Germany uses DE + 9 digits, France uses FR + 2 chars + 9 digits. TaxID validates the format locally before contacting VIES, saving quota on typos and invalid inputs.
VIES query
If the format is valid, the API forwards the request to the EU VIES SOAP service, which checks the number against the national tax authority's live registration database. This confirms the business is currently registered.
Cached response
Validated results are cached in Upstash Redis — active numbers for 24 hours, invalid numbers for 1 hour. Repeat lookups return in under 10ms without touching VIES, keeping your checkout fast under load.
Integration guides
Step-by-step walkthroughs for common platforms and workflows.
Validate EU VAT numbers in Stripe Checkout
Add EU VAT validation to your Stripe checkout flow. Verify customer VAT numbers server-side before applying B2B zero-rate exemptions, ensuring you only exempt valid registered businesses.
EU VAT compliance for SaaS billing
Handle EU VAT for SaaS subscriptions. Validate customer VAT numbers at signup, determine B2B vs B2C tax treatment, and generate compliant invoices with the correct VAT amount.
EU VAT validation in Node.js
Implement EU VAT number validation in a Node.js or Express application. Includes error handling, caching strategy, and TypeScript types for the API response.
Validate VAT numbers before invoice generation
Automatically validate customer VAT numbers before generating B2B invoices. Prevent invalid numbers from appearing on invoices that could be rejected by tax authorities.