VAT Number Validation API - Real-time VAT Validations across EU & UK
Validate any VAT number against the authority that issued it, in real time, through one REST endpoint. Send a VAT registration number and get back the registered business name and address, a clear valid-or-invalid result, and a consultation reference that serves as proof the check was performed. Routing is automatic from the country prefix: EU numbers go to VIES, the European Commission's official cross-border system, and UK numbers go to HMRC - one integration covers all 27 EU member states plus the UK, with more regions to follow. It's built for finance and engineering teams handling B2B onboarding, invoicing, and reverse-charge compliance.
Features
EU validation via VIES
EU-issued numbers are routed automatically to VIES, the European Commission's VAT Information Exchange System, covering all 27 member states. The response setsconsultation_authority to VIES and returns country_code and the normalized vat_number so you always know which system answered. Use it to confirm cross-border B2B customers are genuinely VAT-registered before you apply the reverse charge.UK validation via HMRC
GB-prefixed numbers are sent directly to HMRC, withconsultation_authority returned as HMRC on every UK check. This gives you a clear, post-Brexit-compliant result without maintaining separate UK logic or a second integration. Use it to validate UK suppliers and customers alongside EU ones in the same workflow.Registered company details
Every valid result returnscompany_name and company_address inside the company object, taken straight from the authority's own records. Use these fields to auto-populate invoice and billing details, or to cross-check the company name a customer submitted at signup. (EU member-state servers may omit the address for privacy on some countries.)Audit-ready consultation number
Pass your own number asrequesterVatNumber to trigger a formal consultation check. The response then includes validation.consultation_number alongside a requested_at timestamp - an authority-issued, traceable reference you can store as evidence for reverse-charge and zero-rate B2B transactions during a tax audit.One response shape across regions
Whether the check ran through VIES or HMRC, the response keeps the same structure: avalidation object with is_valid, and a company object with name and address. One parser handles every region, so adding new authorities later won't change your integration.Built for These Use Cases
Verify B2B customers at onboarding
Before you treat a sale as a zero-rated cross-border B2B supply, confirm the customer's business is actually VAT-registered with the issuing authority - not just that the number is formatted correctly. A failed check at signup is far cheaper than a correction at audit.
Auto-fill invoices and billing records
Pull the registered legal business name and address straight from the authority and use them to populate invoices and accounts-payable records, instead of trusting whatever a customer typed into a form. Pair it with the VAT Rates API to apply the correct rate once registration is confirmed.Keep reverse-charge evidence for audits
For each qualifying transaction, capture a timestamped consultation reference as proof you validated the counterparty's VAT status on a given date. That record is the evidence a tax office expects when the reverse-charge mechanism is questioned.
Re-validate stored customer records on a schedule
VAT registrations lapse and companies deregister. Re-check the numbers on file periodically so the reverse charge keeps applying correctly. Teams running broader onboarding checks often validate bank details in the same flow with the IBAN Validation API.API Endpoint
$ pip install requestsimport requests
url = "https://api.apifreaks.com/v1.0/vat/validation?vatNumber=GB150848114"
payload = {}
headers = {
'X-apiKey': 'API-KEY'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
How-to Guides
Validate a UK VAT registration number
UK VAT registration numbers use the GB prefix followed by 9 digits. Some older numbers may use a different suffix format, but the GB prefix is always required for the API to route the request to HMRC correctly. Pass the full number in the vatNumber parameter.
Request
curl -X 'GET' \ 'https://api.apifreaks.com/v1.0/vat/validation?apiKey=API-KEY&vatNumber=GB150848114'
Response
{
"country_code": "GB",
"vat_number": "150848114",
"requested_at": "2026-04-21T13:42:37.000Z",
"validation": {
"is_valid": true,
"consultation_authority": "HMRC"
},
"company": {
"company_name": "PADDLE.COM MARKET LIMITED",
"company_address": "JUDD HOUSE, 18-29 MORA STRE, LONDON, EC1V 8BT, GB"
}
}
To get a formal consultation number, pass your own VAT registration number in the requesterVatNumber parameter. The API will return a unique consultation_number issued by HMRC, which you can store as an audit record against the transaction.
Request with requesterVatNumber
curl -X 'GET' \ 'https://api.apifreaks.com/v1.0/vat/validation?apiKey=API-KEY&vatNumber=GB289111588&requesterVatNumber=GB288305674'
Response
{
"country_code": "GB",
"vat_number": "289111588",
"requester_country_code": "GB",
"requester_vat_number": "288305674",
"requested_at": "2026-04-21T13:51:32.000Z",
"validation": {
"is_valid": true,
"consultation_number": "KNN-ARL-LTK",
"consultation_authority": "HMRC"
},
"company": {
"company_name": "EVENTURED LTD",
"company_address": "SUITE 10, BEAUFORT COURT, ADMIRALS WAY, LONDON, E14 9XL, GB"
}
}
Validate an EU VAT registration number
EU VAT validation runs through VIES, the European Commission's official exchange system. All 27 member states are supported. Pass the VAT number including its two-letter country prefix in the vatNumber parameter and the API handles routing to VIES automatically.
Request
curl -X 'GET' \ 'https://api.apifreaks.com/v1.0/vat/validation?apiKey=API-KEY&vatNumber=NL803441526B01'
Response
{
"country_code": "NL",
"vat_number": "803441526B01",
"requested_at": "2026-04-21T13:40:09.379Z",
"validation": {
"is_valid": true,
"consultation_authority": "VIES"
},
"company": {
"company_name": "ASML HOLDING N.V.",
"company_address": "DE RUN 06501, 5504DR VELDHOVEN"
}
}
For a formal VIES VAT validation consultation, include your own EU VAT registration number as requesterVatNumber. VIES will issue a unique consultation_number tied to your business, useful for cross-border reverse-charge and zero-rate B2B compliance.
Request with requesterVatNumber
curl -X 'GET' \ 'https://api.apifreaks.com/v1.0/vat/validation?apiKey=API-KEY&vatNumber=NL803441526B01&requesterVatNumber=DE811128135'
Response
{
"country_code": "NL",
"vat_number": "803441526B01",
"requester_country_code": "DE",
"requester_vat_number": "811128135",
"requested_at": "2026-04-21T13:47:35.399Z",
"validation": {
"is_valid": true,
"consultation_number": "WAPIAAAAZ2wS92cF",
"consultation_authority": "VIES"
},
"company": {
"company_name": "ASML HOLDING N.V.",
"company_address": "DE RUN 06501, 5504DR VELDHOVEN"
}
}
Frequently Asked Questions
country_code, the normalized vat_number, a requested_at timestamp, a validation object (is_valid and consultation_authority), and a company object with company_name and company_address from the authority's records.requesterVatNumber to run a formal consultation check. The response then includes validation.consultation_number, an authority-issued reference, timestamped via requested_at, that you can store as proof you validated a counterparty on a specific date.GB150848114 (UK) or NL803441526B01 (EU). The response echoes the country_code and the vat_number without the prefix.validation object returns is_valid: false. The number was reachable and checked against the authority - it simply isn't a registered, active VAT number.Pricing
To use the Web Scraper API, you will need API credits. We only charge for successful queries, defined by a 2xx status code. If your request results in a 4xx or 5xx status code, no credits will be charged, and any deducted credits will be returned.
For Each Successful request 20 credits will be charged.
Utilize the Credits Usage API to efficiently monitor your recent consumption of both one-off and subscription credits. This API provides a streamlined way to track and manage your credit usage, ensuring you stay informed about your remaining balance and can optimize your resource allocation effectively.