EU VAT Validation API — Integrations
Connect the TaxID VAT validation API to your existing stack. Choose your platform or language for a step-by-step guide with ready-to-run code examples.
Validate EU VAT numbers before applying Stripe reverse-charge
EU VAT validation for Shopify B2B storefronts
EU VAT validation in Node.js with a single HTTP call
Validate EU VAT numbers from Python with requests or httpx
PHP EU VAT number validation via REST API — cURL or Guzzle
EU VAT validation for WooCommerce B2B checkout
EU VAT validation in Go using net/http — no external dependencies
Validate EU VAT numbers in Laravel with a Form Request rule or service class
Validate EU VAT numbers in Django with a model validator or DRF serializer
Validate EU VAT numbers in Java and Spring Boot with the built-in HttpClient
Validate EU VAT numbers in Rails with a service object and ActiveModel validator
Validate EU VAT numbers in ASP.NET Core with HttpClient and IHttpClientFactory
Validate EU VAT numbers in Next.js from a Route Handler or Server Action
Validate EU VAT numbers at the edge with Cloudflare Workers
Validate EU VAT numbers in Deno and Deno Deploy with native fetch
How the TaxID API works
One HTTP call
GET /api/v1/validate/:country/:vat with your API key in the Authorization header.
VIES-backed response
The API checks the EU VIES registry (plus HMRC and Brønnøysund for UK and Norway) and returns valid, status, company_name, and address.
Sub-100ms cached
Valid results are cached for 24h, invalid for 1h. The cached field in the response tells you the source.
Quick start
CURL
curl -H "Authorization: Bearer YOUR_API_KEY" \ https://www.taxid.dev/api/v1/validate/DE/DE123456789
Why integrate VAT validation
For any business that sells across borders in Europe, a customer's VAT number is not just a field on an invoice — it decides how the sale is taxed. Get it wrong and the reverse-charge relief you applied can be disallowed, leaving your company liable for the VAT plus interest. Wiring validation directly into your product moves that check from a manual, after-the-fact task to an automatic control that runs every time a number is entered or an order is placed.
The integration guides above cover the two ways teams usually connect it. Platform integrations — Stripe, Shopify, and WooCommerce — hook into the events those systems already emit, so validation runs when a customer is created or an order is placed without you building the flow from scratch. Language integrations — Node.js, Python, PHP, and Go — show the raw request and response handling so you can drop validation into a custom onboarding form, an internal admin tool, or a batch job that cleans up VAT numbers you already store. Whichever you pick, the endpoint, authentication, and response shape are identical, so it is straightforward to start with one surface and add others later.
Integration FAQ
Where in my app should VAT validation run?
The two highest-value moments are onboarding and checkout. Validating when a business customer first enters their VAT number keeps invalid or mistyped IDs out of your records, and validating at checkout lets you decide in real time whether to apply the reverse charge and zero-rate the sale. Many teams also run a periodic re-check of stored VAT numbers, because a registration that was valid last year can be deregistered.
Do I need a different integration for each country?
No. The endpoint is the same for every supported country — you pass the two-letter country code and the number, and the API routes the request to VIES for EU states or to the national authority for the UK, Norway, Australia, and Switzerland. Your integration code does not change from one country to the next.
How should I handle the VIES registry being temporarily down?
VIES occasionally returns a service-unavailable state for an individual member state's database. The API surfaces this distinctly from an invalid result so you never treat a temporary outage as a failed validation. The recommended pattern is to accept the order, flag the VAT number for a background re-check, and retry once the registry recovers — the integration guides show this flow for each stack.
Will validation slow down my checkout?
Rarely. Results are cached — 24 hours for valid numbers and 1 hour for invalid ones — so a repeat check returns in single-digit milliseconds. A fresh, uncached VIES lookup typically completes in 100–400ms, which you can run asynchronously so it never blocks the customer's checkout.
Get your free API key
100 validations/month free. No credit card required.