Comparison10 min readAlberto García

Choosing the Best VAT API: Comparison of Features and Pricing

Not all VAT APIs are equal. Some collapse service_unavailable into invalid. Some charge per-request even for format errors. Some have no SLA. This comparison covers what actually matters for production use.

vatapicomparisonvatstackvatlayerpricing

The VAT validation API market has grown alongside the SaaS industry's expansion into EU markets. The main options — TaxID (taxid.dev), Vatstack, Vatlayer, and Lookuptax — all call the same underlying VIES registry but differ significantly in how they handle the hard parts: VIES downtime, status code granularity, pricing at scale, and global coverage beyond the EU. Choosing the wrong API for your use case means either building workarounds for missing features or paying for a Rolls-Royce when a simpler tool would do.

Country Coverage

ProviderEU (27)UK (HMRC)Australia (ABR)NorwaySwitzerlandTotal
TaxID (taxid.dev)✓ All 2731+
Vatstack✓ All 27~29
Vatlayer✓ All 2728
Lookuptax✓ All 2750+

For pure EU B2B validation, all four providers cover the same 27 member states via VIES. The differentiation comes at the edges: UK (HMRC) validation post-Brexit, and non-EU markets like Australia and Norway that matter for SaaS companies with global customer bases. TaxID and Lookuptax lead here; Vatlayer is EU-only in practice.

Error Handling and Status Codes

This is where APIs diverge most sharply — and where the choice matters most for production reliability. The critical distinction is between status: 'invalid' (the number does not exist) and status: 'service_unavailable' (VIES could not be reached). APIs that collapse both into a single 'not valid' response force developers to either block legitimate customers during VIES maintenance windows or silently zero-rate unverified numbers. Both outcomes are worse than handling the states correctly.

ProviderDistinguishes service_unavailable?inactive vs invalid distinction?format_invalid without API call?
TaxID✓ Yes — explicit status code✓ Yes✓ Yes — no quota consumed
Vatstack✓ Yes✓ YesPartial
Vatlayer✗ No — returns false for both✗ No✗ No
Lookuptax✓ Yes✓ Yes✓ Yes

Warning

Any API that returns a simple `valid: false` for both invalid numbers and VIES downtime events is unsuitable for production. You will either block real customers during EU maintenance windows or silently zero-rate unverified numbers during those windows. Test this specifically before choosing an API.

Pricing Comparison

VAT API pricing varies significantly at scale. Most providers offer a free tier for development, but the pricing curves diverge sharply from 1,000 requests per month upward. Key factors: whether format validation errors consume quota (they should not — it penalises correct implementation), whether cached results have a different price from live VIES calls, and whether there is a flat monthly plan option for predictable billing.

ProviderFree tier~10k req/mo~100k req/moFormat errors consume quota?
TaxID (taxid.dev)100 req/moFrom $19/moFrom $79/moNo — free
Vatstack20 req/moFrom $29/moFrom $99/moYes
Vatlayer100 req/mo (limited)From $14/moFrom $47/moYes
Lookuptax50 req/moFrom $39/moFrom $149/moNo — free

The pricing comparison should be read alongside the format validation behaviour. If an API charges quota for format errors, your effective cost per successful validation is higher than the headline price suggests, particularly if your users have a high rate of typos or formatting variations. A checkout flow that validates on-blur (as the user types) rather than on-submit can generate 5–10 quota-consuming calls per successful validation if format errors are charged.

Developer Experience

Developer experience is harder to quantify but matters in practice. Key indicators: whether the API has a sandbox mode for testing invalid and service_unavailable states without manipulating production data, whether the documentation includes code examples in your language, and whether the error messages are actionable rather than generic HTTP status codes.

ProviderSandbox/test mode?Code examples (languages)Webhook support?Response time (cached)
TaxID✓ Test numbers includedNode.js, Python, PHP, Go, Ruby, .NET< 10ms
Vatstack✓ YesNode.js, Python, PHP✓ Yes~50ms
Vatlayer✗ NoPHP, Python~200ms
Lookuptax✓ YesNode.js, Python, PHP, Ruby✓ Yes~30ms

Recommendation by Use Case

For **EU-only SaaS checkout** with moderate volume (under 50k validations/month): TaxID or Vatstack. Both have correct error handling, adequate EU coverage, and reasonable pricing at this scale. TaxID edges ahead on status code granularity and format validation behaviour.

For **global SaaS** needing EU + UK + Australia + Norway + more: TaxID or Lookuptax. Vatlayer and Vatstack cover too few non-EU jurisdictions for global SaaS. Lookuptax has broader coverage but is priced at a premium.

For **high-volume marketplace or ERP validation** (100k+ validations/month): Evaluate the batch endpoint performance and pricing tiers specifically. At this volume, per-request pricing matters less than flat-rate plan availability and whether cached results are priced differently from live VIES calls.

For **compliance-critical use cases** (AML, KYC, DAC7): the company_name and address fields matter as much as the valid flag. TaxID and Lookuptax return full company details from VIES. Vatlayer in particular returns minimal company data, which is insufficient for KYC workflows that need to cross-reference the registered company name against the buyer's self-declared company name.

For a deeper comparison of TaxID specifically against Vatstack and Vatlayer, see the Vatstack alternative and Vatlayer alternative pages. For implementation guidance regardless of provider, see How to Integrate a VAT Number Check API into Your Checkout Flow.

What Is Not Worth Comparing

Some criteria that appear in VAT API marketing materials do not meaningfully differentiate providers in practice. Response time for live VIES calls is one: every provider calls the same underlying VIES infrastructure, so a live validation for a German VAT number will take roughly the same 200–800ms regardless of which API you use. The variance comes from each provider's caching layer, not from faster access to VIES. Compare cached response times, not claimed raw VIES times.

Uptime guarantees are another area where marketing claims outrun practical differences. All four providers depend on VIES, which is the weakest link in the chain. A provider can offer 99.9% uptime for their own infrastructure but cannot guarantee VIES availability — when Italy's VIES node goes down for scheduled maintenance, every provider returns service_unavailable for Italian VAT numbers, regardless of SLA. The meaningful comparison is not uptime but how each provider handles and communicates VIES outages: explicit status codes, documented fallback behaviour, and transparency about which member states are currently down.

Schema and data format are occasionally cited as differentiators but rarely matter in practice. All four providers return a validation result and a company name. The field names differ slightly (valid vs is_valid, company_name vs name) but the migration from one schema to another is an afternoon of work at most. The decision should be driven by coverage, pricing model, error handling correctness, and whether you need async webhooks — not by which JSON field names you prefer.

AG
Alberto García

Founder, TaxID

Building EU VAT validation tools for developers. Obsessed with compliance automation and developer experience.