- Home
- API
- Verification API
- HMRC VAT API v1 is dead — he ...

On 17 February 2025, HMRC removed the open-access version of the UK VAT number check API. If you were calling
https://api.service.hmrc.gov.uk/organisations/vat/check-vat-number/lookup/{VRN}without an Authorization header, your requests now return 401 Unauthorized.
You now have three migration paths:
This guide explains all three — with working code.
👉 If your production system is broken today, skip ahead to the fastest solution below.
| Path | Best for | Time to go live | Complexity | Cost |
|---|---|---|---|---|
| HMRC v2 (direct) | Audit/compliance workflows | 2–4 weeks | High | Free |
| Third-party VAT API | Faster integration | 1–2 hours | Low | Paid |
| APITier VAT API | All-in-one validation | Minutes | Very low | Free tier |
client_id and client_secretimport requests
CLIENT_ID = "your_client_id"
CLIENT_SECRET = "your_client_secret"
def get_token():
response = requests.post(
"https://api.service.hmrc.gov.uk/oauth/token",
data={
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
},
)
return response.json()["access_token"]def check_vat(vrn, token):
response = requests.get(
f"https://api.service.hmrc.gov.uk/organisations/vat/check-vat-number/lookup/{vrn}",
headers={
"Accept": "application/vnd.hmrc.2.0+json",
"Authorization": f"Bearer {token}",
},
)
return response.json()Accept headerIf you need a working solution today, use
👉 APITier
import requests
API_KEY = "your_api_key"
response = requests.get(
"https://vat.apitier.com/v1/vat/check",
params={
"vatNumber": "GB553557881",
"x-api-key": API_KEY,
},
)
print(response.json())const axios = require("axios");
axios.get("https://vat.apitier.com/v1/vat/check", {
params: {
vatNumber: "GB553557881",
"x-api-key": "your_api_key",
},
}).then(res => console.log(res.data));👉 Skip the 2-week wait. Go live in minutes.
👉Explore Validate VAT APIs
👉Start free VAT validation now
| Feature | HMRC v2 | APITier |
|---|---|---|
| GB VAT | Yes | Yes |
| EU VAT | No | Yes |
| XI VAT | No | Yes |
| OAuth handling | Manual | Automatic |
| Setup time | Weeks | Minutes |
| Downtime handling | No | Yes |
| Free tier | Limited | 500/month |
Common formats:
GB123456789123456789GB123456789012GBGD123GBHA123import re
pattern = re.compile(r"^(GB)?(\d{9}|\d{12}|GD[0-4]\d{2}|HA[5-9]\d{2})$")
def is_valid(vat):
return bool(pattern.match(vat))No. It was removed on 17 February 2025. All calls return 401.
Typically 2 weeks, sometimes longer.
No. Only GB numbers. Use VIES separately.
Yes — APITier offers 500 free API calls/month.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can I still use HMRC VAT API v1?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. HMRC removed VAT API v1 on 17 February 2025."
}
},
{
"@type": "Question",
"name": "What is the alternative to HMRC VAT API v1?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can use HMRC v2, third-party APIs, or APITier VAT API."
}
}
]
}The removal of HMRC VAT API v1 is not temporary — it’s a permanent shift to authenticated access.
For most teams, the fastest and most practical solution is:
Use APITier
Go live in minutes instead of weeks
🚀 Start Using APITier APIs Today
👉 Start free VAT validation now
https://docs.apitier.com/vat
👉 Explore full API suite
https://www.apitier.com/