How to Check if a Customer's VAT Number Is Valid (No Code Needed)
If you sell B2B across borders, validating the customer's VAT number is the gating step that lets you skip charging VAT under the reverse charge rules. Get it wrong and your invoice is treated as B2C, the customer's VAT was missing, and you owe the VAT yourself plus penalties. The good news: checking is free, public, and takes about ten seconds per number.
This is the non-technical version. For developers who want to integrate the same checks into a billing system, see our VIES API guide.
Why validation matters
The reverse charge for cross-border B2B services depends on the buyer being a registered business in the destination country. The supplier's evidence that this is true is the buyer's VAT number. If the number is invalid, fictitious, or belongs to a deregistered business, the supplier has no evidence and the supply is treated as B2C: full VAT applies.
This is not theoretical. Tax authorities run regular post-audit sweeps that match supplier reverse-charge invoices to buyer VAT registrations. Mismatches result in assessments. The supplier is liable; the buyer is generally not pursued. So the burden of validation is on you, not your customer.
The fastest way: use a free validator
Our free Tax ID Validator handles single and batch lookups across:
- EU (all 27 Member States via VIES)
- United Kingdom (HMRC API)
- Norway (Brønnøysund)
- Switzerland (UID register)
- Brazil (BrasilAPI for CNPJ)
- Australia (ABR)
- New Zealand (NZBN)
It returns the registered name and address (where the source provides them), so you can also confirm the number belongs to the entity you are billing. No account or signup needed.
The country-by-country list of official sources
If you prefer to go straight to the official sources, here they are.
European Union: VIES
The VIES portal validates any EU VAT number against the issuing Member State. The number format is the country prefix (DE, FR, IT, etc.) plus the national VAT number. VIES returns valid or invalid; for some Member States it also returns the registered name and address.
VIES has known limitations: each Member State maintains its own back-end database, and some are slow to update or temporarily unavailable. A "no, invalid" can sometimes be a transient outage. If you get a negative result for a number you have reason to believe is real, retry within 24 hours and document both attempts.
United Kingdom: HMRC
HMRC has a public lookup page that returns valid or invalid plus the registered name. UK numbers are nine digits prefixed with GB, sometimes with a three-digit branch suffix (twelve total).
Norway: Brønnøysund
The Brønnøysund Register Centre publishes Norway's company register. The public search lets you look up the organisasjonsnummer and confirm VAT registration status.
Switzerland: UID
The Swiss UID (Unique Enterprise Identifier) register at uid.admin.ch. Switzerland uses the format CHE-XXX.XXX.XXX with the suffix MWST for VAT-registered businesses.
United States: there is no VAT
The US uses sales tax, not VAT. There is no national VAT number. For sales tax compliance, you need state-level resale or exemption certificates, which are validated by inspecting the certificate itself, not by lookup.
Australia: ABR
The Australian Business Register (ABR) lets you search by ABN. Output includes the entity name, GST registration status, and effective dates of any registration changes.
New Zealand: NZBN
The New Zealand Business Number lookup confirms registered businesses; GST registration status is tracked separately by IRD but visible alongside the NZBN.
Canada: GST/HST registry
Canada Revenue Agency runs a GST/HST registry lookup. Numbers are nine digits, RT, plus a four-digit suffix.
Brazil: CNPJ via BrasilAPI
BrasilAPI exposes Receita Federal data on the CNPJ (Cadastro Nacional da Pessoa Jurídica). Format is XX.XXX.XXX/XXXX-XX. Returns the trade name, registered name, and active status.
Other countries
Most VAT or GST jurisdictions publish a public registry. Quality varies: South Africa, India (GSTIN), UAE, Saudi Arabia, Singapore, Japan, and Mexico all have reliable lookups. Some jurisdictions only provide format validation (a check digit calculation) rather than a live registry check.
What "valid" actually means
There are three levels of validation:
- Format check: the number matches the expected pattern (correct length, correct check digit). Cheapest, but a number that passes the format check can still be fake.
- Existence check: the number is registered with the tax authority. This is what VIES, HMRC, and the other registries do.
- Active status check: the number is registered and currently active (not deregistered or struck off). VIES does this implicitly; some registries do not.
For reverse charge purposes, you need at least an existence check. An active status check is better. A deregistered number from six months ago will pass format validation and fail existence validation.
What to do when validation fails
Several causes, several fixes.
Customer typed their number wrong
Most common case. Capture the number with the country prefix, strip whitespace, normalise dots and dashes, then validate. If it still fails, ask the customer for a corrected number. Until you have a valid number, do not apply reverse charge.
Customer is not VAT-registered
They may be small enough to be below the registration threshold. If they have no VAT number, treat them as a consumer (B2C) and charge the destination country's VAT. They can recover it as a final consumer cannot, but only if they later register; you do not get to know.
VIES says "service unavailable" for a Member State
VIES proxies queries to each Member State's back-end. If the back-end is down, VIES returns service unavailable. Retry within 24 hours. Some businesses default to a "graceful unknown" treatment (continue with reverse charge but flag the transaction for re-validation), which is generally acceptable as long as the retry happens.
Customer's number is valid but the name does not match
This is a real risk: someone provides a real VAT number that belongs to another company. If the name on your invoice does not match the registered name returned by the lookup, you may be facilitating VAT fraud. Reject the transaction or escalate.
How often to revalidate
VAT numbers can be deregistered. Best practice for ongoing B2B relationships:
- Validate at the first transaction.
- Revalidate at least annually (HMRC and most EU authorities effectively expect this).
- Revalidate immediately if the customer changes legal name, address, or country.
For high-volume billing systems, automated revalidation per invoice is the safest pattern. The Tax ID Validator handles batch lookups for this.
Documentation: what to keep
For each B2B reverse charge transaction, store:
- The validated VAT number.
- The date of validation.
- The result (valid, invalid, service unavailable).
- The lookup source (VIES request ID, HMRC consultation reference, screenshot).
VIES returns a unique consultation number for each successful lookup. Keep it. It is the single piece of evidence that satisfies most EU tax authorities in audit.
Why this matters more than people think: in an EU VAT audit, the auditor will pull a sample of your reverse-charge invoices and check each VAT number against VIES on the date of audit. Numbers that have since been deregistered look the same as numbers that were never valid. The VIES consultation number from the original transaction is your proof that you validated at the right moment.
Recap
- Validate every B2B customer's VAT number before applying reverse charge.
- Use VIES for the EU, HMRC for the UK, and the relevant national registry for other countries.
- Or use our free validator for a unified interface across all of them.
- Keep the consultation reference. Revalidate at least annually.
- If a number is invalid, treat the customer as B2C: charge VAT.
DeterminedAI validates customer tax IDs at signup and on every invoice, stores the consultation reference automatically, and applies the right reverse charge or VAT treatment downstream. The tax ID validator and exposure dashboard are free to use without an account.