VAT validation API
for developers
Real checksum algorithms, live registry lookups, 30-day caching, and a tax-rules engine that decides charge VAT or not for every order you touch.
curl "https://api.vatverify.dev/v1/validate?vat_number=IE6388047V" \ -H "Authorization: Bearer $VATVERIFY_API_KEY"{ "data": { "valid": true, "vat_number": "IE6388047V", "country": { "code": "IE", "name": "Ireland" }, "company": { "name": "GOOGLE IRELAND LIMITED" } }, "meta": { "latency_ms": 96, "cached": true, "source": "vies" } }
Wired directly to official registries, no middlemen
Every EU member state, and the ones that aren't.
VIES wraps the 27 EU states. We extend it with HMRC for the UK, Swiss BFS for Switzerland and Liechtenstein, and Brønnøysund for Norway. German sellers add BZSt on top for §18e qualified confirmation. One API call, no matter where your customer is.
Real checksums.
Real tax rules.
Every competitor wraps VIES and hopes for the best. We added the ninety percent that makes VAT validation actually useful in production.
Real checksum algorithms
Not regex pretending. HMRC 97-55, Dutch BSN, Belgian MOD-97, Italian Luhn, implemented against the specification and covered by 54 dedicated checksum tests.
Cached by default
Valid lookups cached for 30 days, invalid ones for 24 hours. Cache hits don't count toward your quota. Pass cache=false to force a live registry lookup.
Tax-rules engine
Answers "should I charge VAT?" with legal basis, mechanism, invoice note, and the Directive article. A feature no competitor ships.
Webhooks, not polling
Register an HTTPS endpoint and receive validation and batch events the moment they complete. HMAC-SHA256 signatures and a durable queue with three automatic retries.
First-class TypeScript
Strict TypeScript types for every response shape, including registry-specific fields. Works in the Node and Edge runtimes. Python and Rust clients on the roadmap.
Magic VAT numbers
vtv_test_* keys route to deterministic fixtures: unlimited requests, no plan gate. Your CI never hits the live registry.
Validate, decide, ship.
In three lines.
The @vatverify/node SDK wraps validation and the tax-rules engine behind one typed client. Automatic retry, timeout handling, and test-mode fixtures built in. Python on the roadmap.
- Strict types for every registry response shape
- Automatic retry with exponential backoff
- Test-mode fixtures for deterministic CI runs
- Works in the Edge runtime and the Node runtime
curl "https://api.vatverify.dev/v1/decide" \ -H "Authorization: Bearer ${VATVERIFY_API_KEY}" \ -H "content-type: application/json" \ -d '{"seller_vat":"IE6388047V","buyer_vat":"DE811569869"}'# charge_vat: false# mechanism: "reverse_charge"# legal_basis: "EU VAT Directive Article 196"Plans that don't punish success.
Start free forever. Upgrade when your traffic demands it. Cancel from the dashboard, no lock-in.
Free
ExploreForever free
- 500 live validations / month
- Unlimited test-mode calls (free, unmetered)
- 32 countries · 5 registries
- Real checksum algorithms
- 30 req / min
No credit card required
Starter
LaunchBilled annually as €144
Includes Free, plus:
- 2,000 live validations / month
- 5 API keys
- 45 req / min
- Email support
Pro
GrowthBilled annually as €348
Includes Starter, plus:
- 10,000 live validations / month
- Batch endpoint (up to 50)
- Webhooks (signed, 3 retries)
- 90 req / min
- Priority email support (24h)
Business
ScaleBilled annually as €1,188
Includes Pro, plus:
- 50,000 live validations / month
- /v1/decide tax-rules engine
- 180 req / min
- Slack + priority support
Start with 500 free
requests per month.
No credit card. Paste your key, validate in three lines of code, forget VAT for the rest of your life.