The TaxID VAT validation API uses a single REST endpoint that works from any language or framework. These guides show you the idiomatic pattern for each major stack — how to make the HTTP call, how to type the response, how to wire it into your framework's request/response lifecycle, and how to test it. All guides use the same API endpoint; only the language-specific wiring differs.
Backend Languages
- →Node.js / TypeScript quick start — built-in fetch, Express route, TypeScript types
- →Node.js full tutorial — service class, Redis cache, Vitest tests
- →Python: Django & Flask — httpx, DRF view, Flask blueprint, pytest
- →Python async guide — asyncio, HTTPX async client, type annotations
- →PHP: Laravel & Symfony — Guzzle, service provider, DI service, PHPUnit
- →Go (Golang) — net/http, sync.Map cache, HTTP handler
- →Java Spring Boot — RestTemplate, WebClient, Spring Cache, JUnit 5
- →Ruby on Rails — Net::HTTP, service object, RSpec tests
- →.NET / C# ASP.NET Core — HttpClient, dependency injection, xUnit tests
Frontend Frameworks
- →React: real-time B2B form validation — useVatValidation hook, debounce, company confirmation UI
- →Vue.js: Composition API — composable, debounced input, server-side proxy
- →Next.js: App Router — API route, Server Components, Server Actions
Platform & Commerce Integrations
- →Stripe subscription billing — tax_exempt flag, webhook re-validation, audit trail
- →Stripe checkout (one-time) — validate before charge, credit note workflow
- →Shopify UK VAT — checkout extension, webhook handler
- →WooCommerce EU VAT — checkout field, PHP integration
Country-Specific Guides
- →UK VAT post-Brexit — HMRC validation, GB/XI prefixes
- →Australian ABN/GST — ABR validation, GST registration
- →Norway MVA — Brønnøysund register, MVA suffix
- →Switzerland UID — Federal Tax Administration, MWST registration
- →Germany, France, Italy, Spain, Netherlands, Poland
The Core API Call (Language-Agnostic)
All guides use the same endpoint. The country code is always the two-letter prefix at the start of the VAT number. The response always has the same four status values. The only thing that changes is how you make an HTTP GET request in your language of choice.
GET https://taxid.dev/api/v1/validate/{country}/{vat_number}
Authorization: Bearer {TAXID_API_KEY}
# Response:
# { valid: bool, status: 'active'|'inactive'|'format_invalid'|'service_unavailable',
# company_name: string|null, address: string|null, request_id: string }Related guides
Start validating EU VAT numbers
Free plan — 100 validations/month. No credit card required.