Check United Kingdom VAT numbers
Validate UK VAT numbers (VRN) against HMRC's Making Tax Digital API. Since Brexit, GB numbers no longer appear in VIES, so vatverify handles the OAuth 2.0 flow to HMRC server-side. Both 9-digit standard and 12-digit branch trader formats are supported. Every response includes the company name, address, and current registration status.
Try it
curl -X POST "https://api.vatverify.dev/v1/validate" \ -H "Authorization: Bearer $VATVERIFY_KEY" \ -H "Content-Type: application/json" \ -d '{"vat_number":"GB146295999727"}'Facts
Format
- Prefix
- GB
- Digits
- 9
- Regex
- ^GB(\d{9}|\d{12})$
GB146295999727GB146295999720GB14629599972VAT rates (GBP)
domestic fuel and power, child car seats, mobility aids for the elderly, sanitary products
most food, children's clothing and footwear, books and newspapers, prescription medicines, public transport
What we return for United Kingdom
{
"data": {
"valid": true, // boolean validity at query time
"vat_number": "GB146295999727",
"country": { "code": "GB", "name": "United Kingdom" },
"company": {
"name": "...", // registered business name
"address": "..." // when HMRC provides it
},
"verified_at": "2026-04-25T10:00:00Z"
},
"meta": {
"request_id": "019dc...", // for audit trail correlation
"source": "hmrc",
"source_status": "live" // live | cached | degraded
}
}
Test against production VATs
Real numbers from publicly-documented corporate filings. Click to see the live result.
Watch out for
- After Brexit, GB numbers are no longer in VIES; use HMRC directly. /v1/validate routes GB→HMRC transparently.
- GB VAT has two valid lengths: 9-digit standard and 12-digit branch. Most validators fail on the 12-digit form.
- HMRC production access requires OAuth 2.0 credentials; our API carries the token, customers don't configure anything.
Fraud patterns
- Carousel fraud historically used GB numbers in multi-hop EU→GB→EU chains. Post-Brexit, XI/GB split reduces the pattern but still occurs in services.
Post-Brexit: VIES no longer covers GB
Before 2021, GB numbers lived in VIES like any EU member state's. After Brexit, the EU Commission removed GB from VIES, and HMRC became the authoritative registry for UK VAT. Most VAT validators that existed before Brexit either silently routed GB through their old VIES integration (returning stale or wrong results) or stopped supporting GB entirely.
vatverify hits HMRC directly. The OAuth 2.0 client-credentials flow to
HMRC's Making Tax Digital API is handled server-side, so customers never see
the token dance. /v1/validate with a GB number returns the same shape as
any other country: valid flag, company name, VAT status. HMRC's endpoint
returns slightly different detail levels than VIES (e.g., addresses when
available), normalized into the standard response.
Two valid GB lengths
A GB VAT number can be 9 or 12 digits after the prefix:
- 9 digits: standard form, covers most businesses.
- 12 digits: branch trader number, the 9-digit root plus a 3-digit branch suffix for companies with multiple VAT-registered branches.
Many validators reject the 12-digit form on regex alone. Ours accepts both and returns the same normalized shape.
There is also a legacy "government department" form using a GD prefix
on the third character (e.g., GBGD123) and a "health authority" form
using HA. These are increasingly rare but still appear on historical
invoices. vatverify accepts them and routes them through HMRC's extended
endpoint.
HMRC API behaviour
HMRC's Making Tax Digital VAT lookup is rate-limited per OAuth client. vatverify queues and back-pressures requests internally so callers do not need to manage 429 responses themselves; the lookup either succeeds or returns a normalized error in the same shape as any other country.
Two response fields from HMRC matter for audit purposes:
target: the entity HMRC has on file at the moment of query.processingDate: the timestamp HMRC stamps on the response.
processingDate is the legally-meaningful "as-of" date for the
validation. vatverify normalizes it into meta.fetched_at and stores
the raw HMRC payload alongside the audit log entry on Pro and Business
plans, so you can produce the original gateway response if HMRC asks
during a compliance review.
Edge cases: deregistered, dormant, recently issued
A GB VAT number can be valid: false for three different reasons:
- Never issued: number is malformed or doesn't exist in HMRC.
- Deregistered: the business voluntarily left VAT (revenue dropped below the registration threshold, or the company dissolved).
- Below threshold: many small UK businesses operate without VAT registration entirely.
For invoice flows, treat all three as "do not zero-rate", but the failure reason matters for customer-facing messaging. The current UK VAT registration threshold is published by HMRC; treat it as a configuration value rather than a hard-coded constant, since it has been adjusted several times in recent years.
Northern Ireland is separate
Businesses in Northern Ireland selling goods (not services) get an XI-prefix number in addition to their GB number under the Windsor Framework. XI numbers route through VIES, not HMRC. If you're validating a Northern Ireland entity, check the XI page.
Automate United Kingdom VAT checks in your stack
Replace manual lookups with one API call against HMRC. Drops into invoicing, checkout, and signup flows in any language. 500 free validations per month, no credit card.