VIESHMRCBFSBrønnøysundABRin one API

VAT number validation API for developers

One API for validating VAT and GST numbers across 32 countries. VIES goes down, your app stays up. Real-time lookups, automatic retries, typed SDKs, and built-in caching.

Free 500 validations/month · No credit card required

curl https://api.vatly.dev/v1/validate?vat_number=NL123456789B01 \
  -H "Authorization: Bearer vtly_live_..."

Enter a VAT number to see the live API response

Everything you need

Validate, look up rates, and process in bulk.

VAT Validation

Validate any EU, UK, Swiss, Norwegian, or Australian VAT/GST number against VIES, HMRC, BFS, Bronnysund, and ABR. Every response includes company details, validity status, and consultation numbers you can store as proof of verification for tax audits.

VAT Rates

Current standard, reduced, and zero rates for all 32 countries. Free and unlimited, no quota impact.

Batch Validation

Validate up to 50 VAT numbers in a single request. Deduplicated counting, per-item error handling. Pro and Business plans.

Developer-first experience

Built by developers, for developers.

Structured Errors

Every error returns a machine-readable code, a human-readable message, and a link to the relevant docs page.

Test Mode

Ship with confidence. Test keys return deterministic responses with no rate limits and no quota usage.

Complete Docs

OpenAPI spec, per-error-code documentation, and typed SDKs for Node.js (@vatly/node) and Python (vatly) with copy-paste examples.

Reliable at scale

Your integration stays up, even when upstream services don't.

Caching & Automatic Retries

Repeat lookups resolve in milliseconds. When VIES, HMRC, BFS, or ABR is flaky, Vatly retries automatically with backoff, so no retry logic is needed in your code.

Predictable Rate Limits

Clear rate limit headers on every response. Burst-friendly defaults with transparent 429 behavior.

Edge Infrastructure

Deployed globally on Vercel's edge network. Automatic TLS, DDoS protection, and sub-100ms routing worldwide.

Simple, transparent pricing

Start free with a production-ready VAT validation API. Validate VAT and GST numbers across 32 countries via VIES, HMRC, and more. Upgrade when you need higher limits, batch processing, or webhooks.

Free

Start here
€0forever

Includes

  • 500 validations/month
  • 20 req/min burst rate
  • 2 API keys
  • EU, UK, CH, LI, NO + AU VAT/GST validation
  • Consultation numbers
  • Test mode
  • VAT rates (unlimited)
  • Cached responses on outages
  • Email support

Pro

When you scale
€29/month€39

Billed annually as €348

Everything in Free, plus

  • 10,000 validations/month
  • 60 req/min burst rate
  • 10 API keys
  • Batch validation
  • Webhook support
  • Async validation (up to 200/batch)
  • Priority email support

Business

High volume + Slack support
€99/month€129

Billed annually as €1,188

Everything in Pro, plus

  • 50,000 validations/month
  • 120 req/min burst rate
  • Unlimited API keys
  • Async validation (up to 1,000/batch)
  • Priority email support + Slack support

Supported Regions

One API, one endpoint. Vatly routes each request to the correct government source automatically.

European Union

27 member states. Real-time VIES (VAT Information Exchange System) lookups for EU VAT validation. Validate any European VAT number and get company name, address, and consultation numbers. Handles VIES downtime with 25-day response caching.

United Kingdom

HMRC VAT validation. Verify GB VAT numbers against HMRC's official database for reliable UK VAT number lookup. Supports consultation numbers when a valid EU requester VAT number is provided. Full GB VAT verification in one call.

Switzerland & Liechtenstein

BFS UID Register validation. Validate Swiss VAT numbers (CHE format) and check MWST/TVA/IVA registration status. Covers both Swiss and Liechtenstein businesses through the official UID Register.

Norway

Bronnysund Register Centre. Validate Norwegian VAT numbers (MVA format) and confirm VAT registration status for Norwegian businesses. Direct lookups against the official Bronnysund Register.

Australia

Australian Business Register (ABR). ABN validation and GST registration lookup. Send an 11-digit ABN to the same /v1/validate endpoint and get business name, status, and GST registration. Full ABN lookup API in one request.

Why not just use VIES directly?

VIES works, but building a production integration around it is a different story.

VIES is a SOAP API from 2005

XML request/response, inconsistent schemas across member states, no typed responses. Vatly gives you a modern REST API with JSON, structured errors, and typed SDKs for TypeScript and Python.

VIES only covers EU

Need UK VAT validation? Swiss VAT validation? Australian GST validation? You would need to integrate HMRC, BFS UID Register, Bronnysund Register, and ABR separately. Vatly wraps all 5 government sources in one endpoint for tax ID validation across 32 countries.

VIES has no caching or retry logic

Member state services go down regularly. When a country's tax office is offline, VIES returns an error. Vatly caches responses for 25 days and retries automatically with backoff, so VIES downtime does not break your application.

No test mode, no rate limiting, no SDKs

VIES has no sandbox environment, no predictable rate limits, and no official SDKs. Vatly provides test mode with magic numbers, clear rate limit headers, and a typed TypeScript SDK. Build and test your VIES VAT number validation without hitting production services.

Frequently asked questions

Vatly includes a built-in 25-day response cache. If VIES is temporarily unavailable for a specific country, cached results are returned with meta.cached: true so your application stays functional. If no cached data exists, you'll receive a clear 503 error with a machine-readable error code. Never a silent failure. See our live VIES uptime data for current reliability metrics.

Cached responses return in under 50ms. Fresh VIES lookups typically take 1-3 seconds depending on the member state. UK (HMRC) lookups are consistently fast. Every response includes timing metadata so you can monitor performance in your own systems.

All 27 EU member states (via VIES), the United Kingdom (via HMRC), Switzerland and Liechtenstein (via the BFS UID Register), Norway (via the Bronnysund Register), and Australia (via ABR). 32 countries total. One endpoint, one response format.

Yes. The /v1/rates endpoint returns current standard, reduced, and zero rates for all 32 supported countries. It's free and unlimited on all tiers, including Free. Rates don't count against your monthly validation quota.

Yes, 500 validations per month, no credit card required. The free tier uses the same API, same response format, and same caching as paid plans. Upgrade when you need higher volume.

Use a test-mode API key (prefixed vtly_test_) and magic VAT numbers to simulate valid, invalid, and error responses. Test mode never hits VIES, HMRC, BFS, Bronnysund, or ABR, so your integration tests are fast and deterministic. See the docs for the full list of magic numbers.

VIES is a SOAP service with inconsistent availability across member states, no UK support, no caching, and XML responses. Vatly wraps VIES, HMRC, the Swiss UID Register, the Norwegian Bronnysund Register, and the Australian ABR in a modern REST API with JSON responses, built-in caching, rate limiting, error handling, typed SDKs for TypeScript and Python, and test mode. You don't have to build and maintain that infrastructure yourself.

No. One API key, one endpoint. Vatly detects the country from the VAT/GST number prefix and routes to VIES, HMRC, BFS, Bronnysund, or ABR automatically.

Yes. Since January 1, 2020, a valid VAT number is a material requirement for applying the 0% VAT rate on intra-Community supplies within the EU. If you sell B2B cross-border and apply the reverse charge mechanism, you must verify your customer's VAT number. If the number is invalid and you zero-rated the transaction, you are liable for the VAT. Reverse charge VAT validation should be part of every B2B checkout flow. VAT numbers can be deactivated or revoked at any time, so regular revalidation is recommended. Vatly returns consultation numbers on every EU validation, giving you timestamped proof of verification that tax authorities accept as evidence of due diligence.

A consultation number is a unique reference returned by VIES when you validate an EU VAT number. It proves that you checked the number on a specific date and received a specific result. If a tax authority questions a zero-rated intra-Community supply, the consultation number is your evidence that you verified the buyer's VAT status. Vatly returns consultation numbers automatically on every EU validation. Store them alongside each transaction for audit readiness.

VATlayer only supports EU VAT validation and has not been actively maintained. VATsense covers more regions but lacks typed SDKs and test mode. Vatly validates across EU, UK, Switzerland, Norway, and Australia with a single API. Every plan includes a typed TypeScript SDK, deterministic test mode, structured error codes, and built-in caching.

Yes. Vatly is a standalone API, independent of your payment provider. Stripe only validates EU, UK, and Australian tax IDs and only within their billing flow. Mollie and Adyen do not offer VAT validation at all. Vatly works with any payment setup and can be used at signup, in CRM flows, for compliance checks, or anywhere you need to verify a VAT/GST number.

An ABN (Australian Business Number) is an 11-digit identifier for Australian businesses. Vatly validates ABNs against the Australian Business Register (ABR) and returns the business name, status, and whether the business is registered for GST. Send the 11-digit ABN to the same /v1/validate endpoint you use for EU VAT numbers. ABN validation and GST validation work the same way as any other country.

Yes. The async validation endpoint accepts a VAT number or a batch of up to 200 (Pro) or 1,000 (Business) numbers, returns immediately, and delivers the result to your webhook URL when validation completes. This is useful for large batch processing, checkout flows where you want to avoid latency, and resilience against VIES downtime. If a country's service is temporarily unavailable, Vatly queues the request and retries automatically. Webhooks and async validation are available on Pro and Business plans.

Yes. The /v1/validate/batch endpoint accepts up to 50 VAT/GST numbers in a single request. Each item is validated independently with per-item error handling. Batch validation is available on Pro and Business plans. Each number in a batch counts as one validation against your monthly quota.