HMRC + VIES
EU & GB Coverage
Format Validation
Company Details

VAT Number Validation
for UK & EU

Validate VAT numbers against HMRC and VIES registries in a single API call. Check local format rules, confirm registry status, and return company name, address, and country metadata in structured JSON.

EU + GB

Coverage

HMRC

UK registry

VIES

EU registry

Live Validation Demo


IE6388047V
GB123922040
DE136695976
FR40303265045

Awaiting response

NOT CHECKED
{
  "status": 200,
  "message": "Success"
}

CAPABILITIES

Everything You Need for VAT Validation

Built for tax validation in onboarding, invoicing, checkout, supplier verification, and cross-border B2B workflows.

UK and EU Coverage

Validate VAT numbers for the UK and EU member states through one consistent endpoint. No need to maintain separate validation flows for each region.

Registry-Backed Validation

Checks UK VAT numbers against HMRC and EU VAT numbers against VIES, returning whether the number is registered as valid and whether the upstream registry was successfully checked.

Local Format Validation

Applies country-specific VAT format rules before the registry lookup. Invalid local format is identified early, helping you catch bad input before it reaches your core systems.

Company Name and Address

When available, the API returns the registered company name and address so you can prefill records, verify supplier data, and reduce manual review effort.

Structured Status Signals

Returns registryStatus, format validation details, checkedAt timestamp, source information, and normalised input fields so your application can respond intelligently to each case.

Simple JSON Integration

A single GET request returns a predictable JSON response that fits easily into sign-up forms, ERP integrations, invoicing systems, and compliance workflows.

USE CASES

VAT Validation for Real Business Workflows

From B2B checkout to finance controls and marketplace onboarding, the API is designed for production workflows where VAT data quality matters.

B2B Checkout

Validate VAT Numbers Before the Order Is Accepted

For cross-border B2B commerce, an invalid VAT number creates downstream tax, invoicing, and refund issues. Validate the number at checkout and return registry-backed proof immediately.

Is this customer VAT number valid before we apply reverse charge?
Return the company name and address so the buyer record is consistent with the registry
Block invalid or malformed VAT numbers before the quote becomes an order
Why teams use it

Reduce tax errors at the moment of purchase

Avoid manual back-office correction of invalid buyer records

Pre-fill registered business details when available

Support reverse-charge and zero-rated B2B flows with stronger validation

Why this beats a basic format checker

A regex can only tell you whether the input looks plausible. This API checks local format rules and then validates against HMRC or VIES when available.

Registry Status
Company Lookup
Structured JSON
Compliance Workflows

HOW TO START

Go Live in 3 Steps

01

Create Your APITier Account

Sign up with your email and get access to the developer portal, API keys, usage tracking, and documentation. No complex onboarding flow required.

Get Started
02

Call the /validate Endpoint

Send a GET request with x-api-key and vat_number. The API checks country-specific format rules first, then validates against HMRC or VIES when the upstream registry is available.

03

Use the Result in Production

Route valid VAT numbers through your sign-up, checkout, invoicing, CRM, or compliance workflow. Use registryStatus, company details, and format signals to decide what happens next.

View Pricing

INTEGRATION

Integrate in Minutes

A single GET request returns format checks, registry status, company details, and normalised VAT input. No SDK required.

curl -X GET \
  "https://vat.apitier.com/v1/validate?x-api-key=YOUR_API_KEY&vat_number=IE6388047V"

# Response
{
  "status": 200,
  "message": "Success",
  "result": {
    "vatNumber": "IE6388047V",
    "isValid": true,
    "message": "VAT number is valid.",
    "registryChecked": true,
    "registryStatus": "valid",
    "checkedAt": "2026-04-22T10:00:00.000Z",
    "source": "vies",
    "format": {
      "isValid": true,
      "checked": true,
      "message": "VAT number format is valid for IE."
    },
    "company": {
      "name": "GOOGLE IRELAND LIMITED",
      "address": "GORDON HOUSE, BARROW STREET, DUBLIN 4"
    },
    "country": {
      "code": "IE",
      "name": "Ireland"
    },
    "input": {
      "raw": "IE6388047V",
      "normalized": "IE6388047V",
      "vatNumber": "6388047V"
    },
    "reason": null
  }
}

FAQ

Frequently Asked Questions

The API supports UK VAT numbers and VAT numbers from EU member states. It normalises the supplied VAT number, identifies the country code, validates local format rules, and then checks the relevant upstream registry when available.

Format validation checks whether the VAT number structure is valid for the supplied country. Registry validation checks whether that VAT number is actually registered as valid in the upstream source, such as HMRC for GB or VIES for EU countries. A VAT number can pass format validation and still fail registry validation.

registryStatus tells you what happened when the API tried to check the upstream registry. Common values are valid, invalid, not_checked, error, and unavailable. This lets your application distinguish between a confirmed invalid number and a temporary upstream issue.

Yes, when the upstream registry returns that information. The response includes company.name and company.address fields so you can compare user-supplied data against the registered business record or prefill your internal systems.

Yes. The API is designed for real-time use in B2B onboarding, checkout, invoicing, supplier setup, and CRM lead qualification. The response is lightweight and structured for direct application logic.

If the upstream registry times out or is unavailable, the API returns a structured response explaining the issue. In some cases the HTTP status will reflect a temporary service problem, and the result object will include registryStatus of unavailable plus a reason field.

Yes. The response contains an input object with raw, normalized, and vatNumber fields. This is useful when users type spaces, lowercase prefixes, or other formatting variations that your application still wants to store consistently.

If the country code is not supported or the VAT number cannot be parsed correctly, the API returns a structured error that includes a supportedCountries list. This makes it easier to guide the user toward valid country prefixes.

Yes. Although each request validates one VAT number, the endpoint is straightforward to use in batch jobs, data migration scripts, ETL processes, and admin tools that revalidate stored VAT data at scale.

Yes. The API uses a simple GET request with x-api-key and vat_number query parameters, and it returns a predictable JSON response. That makes it easy to integrate from frontend applications, backend services, low-code tools, and scripts in any language.