How to Validate International Tax IDs on Shopify: EU, UK, US, AU, NZ, CA
A wholesale customer fills out your registration form. They type in a VAT number. You glance at it, it looks like a VAT number, and you approve the account.
Three months later, your accountant asks why you've been applying reverse charge exemptions to a company with an invalid tax ID. You have no good answer.
TL;DR: Tax ID validation works differently in every region. EU VAT numbers can be verified in real time via VIES. UK, US, Australian, New Zealand, and Canadian tax IDs rely on format validation. Shopify only validates EU VAT natively, and only after company creation, not during registration.
This is a common problem for Shopify merchants who sell B2B internationally. Tax IDs look different in every country, validation works differently in every region, and most Shopify setups don't verify any of it until it's too late.
Why Tax ID Validation Matters for B2B
It's not just about compliance, although that's reason enough. In the EU, if you zero-rate a cross-border B2B sale because the buyer claimed to be VAT-registered, and the buyer's VAT number turns out to be invalid, your business is liable for the uncollected VAT. Not theirs. Yours.
In practice, tax ID validation does three things. It confirms the business is real and registered. It enables automatic tax exemptions (like reverse charge in the EU). And it reduces fraud. Fake tax IDs on wholesale applications are more common than you'd think, especially on open registration forms.
How It Works, Region by Region
Every region handles business tax identification differently. Here's what you're actually dealing with.
European Union: VIES
The EU uses the VAT Information Exchange System, run by the European Commission. Every EU member state's tax authority feeds VAT registration data into VIES, and you can query it to check if a number is currently valid.
The format varies by country. A German VAT number starts with DE followed by 9 digits. A French one starts with FR followed by 2 characters and 9 digits. There are 27 different formats across the EU. Format validation alone catches typos, but it doesn't tell you if the number is actually registered. You need a live VIES query for that.
VIES returns the validity status plus the registered company name and address. This is useful for cross-checking. If someone claims to be "ABC Wholesale GmbH" but VIES returns "XYZ Trading GmbH" for that VAT number, something is off.
One important note: VIES has downtime. Individual country databases go offline regularly for maintenance. Your validation system needs to handle "service unavailable" responses gracefully, not just fail silently.
United Kingdom: Format Validation Only
Since Brexit, UK VAT numbers are no longer in the VIES system. The UK has its own validation service through HMRC's API, but HMRC recently moved from an open-access API to an application-restricted model that requires registering your application, going through an approval process, and maintaining compliance with their developer guidelines. For most Shopify app developers and merchants, that's a disproportionate amount of overhead.
UK VAT numbers start with GB followed by 9 digits (or 12 for government entities). The format is predictable enough that format validation catches the obvious errors: wrong prefix, wrong digit count, typos. It won't confirm the number is actually registered with HMRC, but it filters out the noise.
If you need live UK VAT validation, it's possible, but the HMRC integration complexity means most apps and merchants settle for format validation and manual verification for high-value UK accounts. It's a pragmatic trade-off.
United States: EIN
The US doesn't have a simple public API for verifying Employer Identification Numbers. The IRS TIN Matching Program exists, but it requires an IRS e-Services account and doesn't offer direct API access for most businesses. You need to be a specific type of authorized payer or processor.
Third-party services like Middesk and Signzy offer EIN verification APIs that source from official records. They check formatting, match the EIN to the business name, and flag discrepancies. But they're not free, and they add another vendor to your stack.
For most Shopify merchants, US EIN validation comes down to format validation (2 digits, a dash, 7 digits) plus manual verification for high-value accounts. It's not ideal, but it's the reality of the US system.
Australia: ABN
Australia's system is actually the most developer-friendly. The Australian Business Register provides a free ABN Lookup API. You register for an authentication GUID and get access to SOAP and HTTP endpoints that return registration status, business name, GST registration status, and more.
ABN format is straightforward: 11 digits with a built-in checksum algorithm. You can validate the format locally before hitting the API.
New Zealand: GST
New Zealand's IRD provides a GST number validation service. The GST number is 8 or 9 digits. Validation is simpler than the EU system but still requires a live check to confirm current registration status.
Canada: BN
Canadian Business Numbers are 9 digits issued by the CRA. Like the US, Canada doesn't offer a free public API for real-time validation. The CRA's GST/HST Registry allows manual lookups, and some third-party services offer API access. Format validation is your first line of defense.
What Shopify Handles Natively
Shopify added VAT number validation to Shopify Tax in late 2024. If you're on Shopify Plus with B2B company profiles, you can enter a VAT number on a company location, and Shopify will validate it against VIES for EU numbers. If valid, the reverse charge exemption is automatically applied.
This is good. But it only covers EU. And it only works after you've already created the company profile in your admin. There's no validation at the point of registration. A potential B2B customer fills out a form, you manually review it, manually create the company, and then Shopify validates the VAT number.
For US EIN, Australian ABN, New Zealand GST, and Canadian BN, Shopify has no built-in validation at all. The tax ID field is a plain text input. Whatever the customer types goes in as-is.
The Registration Gap
This is where the process breaks down for most merchants. Shopify validates tax IDs after account creation, not during registration. If you're reviewing 20 wholesale applications a week, you're either manually checking every tax ID before approving (slow) or approving first and validating later (risky).
The practical approach is to validate at the point of registration. When someone fills out your B2B application form, the tax ID should be checked in real time. Invalid format? Immediate feedback. Valid format but not found in the registry? Flag it. Valid and confirmed? Auto-populate the company name from the registry data so the applicant doesn't have to type it.
This turns tax ID validation from a manual step into an automated gate. It also reduces junk applications. If your form catches invalid tax IDs before submission, you spend less time reviewing applications that were never legitimate. For a more detailed look at how this data needs to be handled under GDPR, see GDPR Compliance for Shopify B2B Apps.
What to Look For in a Validation Setup
If you're setting this up for your store, here's what matters.
Real-time validation, not batch. Checking tax IDs hours or days after submission defeats the purpose. Validate on the form, as the customer types it.
Multi-region support. If you sell to the EU, UK, and Australia, you need VIES and ABR integration plus format validation for UK and other regions. An app that only covers EU VAT isn't enough for international B2B.
Graceful degradation. VIES goes down. External APIs go down. Your validation needs to handle "service unavailable" without blocking the registration entirely. Flag it for manual review instead of rejecting outright.
Format validation as a first pass. Before hitting any external API, validate the format locally. A German VAT number that doesn't start with DE and contain 9 digits is wrong regardless of what VIES says. This catches typos instantly and reduces unnecessary API calls.
Cross-referencing. The best validation doesn't just check if the number exists. It checks if the registered business name matches what the applicant entered. Mismatches aren't always fraud, sometimes it's a trading name vs legal name, but they're worth flagging.
Building It vs Buying It
You could build tax ID validation into your registration flow using the free government APIs (VIES, ABR) plus format validation for UK, US, Canada, and New Zealand. It's technically possible. But you'd be maintaining integrations with multiple API systems, handling their individual quirks, downtime patterns, and authentication models.
For most Shopify merchants, using an app that handles this is more practical. The key is finding one that does real-time validation across the regions you sell to, not just EU VAT.
B2B Onboard validates tax IDs in real time during registration. EU VAT via VIES, plus format validation for UK VAT, US EIN, Australian ABN, New Zealand GST, and Canadian BN. Valid tax IDs can trigger auto-approval, so verified businesses skip the manual review queue. See how it works.
Peer Jakobsen is the founder of Mentilead. He builds Shopify B2B apps from Denmark with a focus on clean architecture and EU compliance.