EU VAT Number Validator avatar

EU VAT Number Validator

Pricing

Pay per event

Go to Apify Store
EU VAT Number Validator

EU VAT Number Validator

Validate EU VAT numbers via the official VIES API. Returns validity, registered company name, address, and country for each number. Supports all EU member states. Ideal for B2B invoicing, compliance workflows, and automating customer onboarding verification at scale.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Validate EU VAT numbers in bulk using the official EU VIES database — the authoritative source trusted by EU tax authorities and businesses across Europe. Returns real-time validity status, registered company name, and official registered address for each VAT number you check.

No third-party services, no outdated databases. Every query goes directly to the European Commission's VIES (VAT Information Exchange System), giving you the same authoritative answer that EU tax authorities use.


🏢 What Does It Do?

This actor accepts a list of EU VAT numbers and validates each one against the EU VIES system in real time. For each VAT number you provide, it returns:

  • Validity status — is the number currently registered and active in VIES?
  • Company name — the official name registered with the national tax authority
  • Registered address — the official address on file (when the member state provides it)
  • Country — the EU member state the VAT number belongs to
  • Error details — clear error messages when a number is invalid, unsupported, or unreachable

The actor handles all 27 EU member states plus Northern Ireland (XI), normalises input formats automatically (strips spaces, dots, hyphens), and retries gracefully on rate-limit responses from VIES.


👥 Who Is It For?

Accounts Payable Teams

You receive invoices from EU suppliers. Before processing payment or reclaiming VAT, you need to confirm that supplier VAT numbers are real and currently registered. Paste the numbers in, get instant validation — no manual VIES lookups.

SaaS and E-commerce Platforms

Your checkout or onboarding form collects EU VAT numbers from business customers. You need to verify these numbers before applying zero-rated B2B VAT treatment. Use this actor in a workflow triggered on new customer signup or order creation.

Finance & Compliance Controllers

You run periodic audits of your vendor database to ensure all stored VAT numbers remain valid. Schedule this actor monthly to catch deregistrations, typos, or fraudulent numbers in your ERP system.

Accountants and Tax Advisors

Your clients need to verify that their suppliers are properly VAT-registered before claiming input tax credits. Batch-validate entire supplier lists in one run.

Supplier onboarding requires confirming legal entity details. Use VIES validation as a lightweight KYB (Know Your Business) step to confirm company name and registration status.


✅ Why Use This Actor?

  • Official source — queries the EU VIES API directly, the same system used by EU tax authorities
  • All 27 EU member states supported plus Northern Ireland (XI)
  • Bulk processing — validate hundreds of VAT numbers in a single run
  • Smart format normalisation — strips spaces, dots, hyphens; handles uppercase/lowercase
  • Local format pre-validation — catches obviously malformed numbers before hitting the API, saving quota
  • Graceful error handling — VIES downtime, rate limits, and timeouts produce clear error messages, not crashes
  • Structured output — one clean dataset row per VAT number with all relevant fields
  • Cost-efficient — simple HTTP calls, no browsers, minimum compute consumption

📊 Output Data

Each VAT number produces one dataset row:

FieldTypeDescription
inputstringThe original VAT number you provided
isValidbooleantrue if the number is currently registered in VIES
countryCodestring2-letter EU country code (e.g. DE, FR, IE)
vatNumberstringThe local VAT number (without country prefix)
namestring | nullRegistered company name (null if VIES does not provide it)
addressstring | nullRegistered address (null if VIES does not provide it)
requestDatestringISO 8601 timestamp of when VIES responded
errorstring | nullError message if invalid or lookup failed
validatedAtstringISO 8601 timestamp of when the actor processed this number

Sample Output

[
{
"input": "IE6388047V",
"isValid": true,
"countryCode": "IE",
"vatNumber": "6388047V",
"name": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"requestDate": "2026-03-24T01:26:59.151Z",
"error": null,
"validatedAt": "2026-03-24T01:26:58.926Z"
},
{
"input": "DE811196763",
"isValid": false,
"countryCode": "DE",
"vatNumber": "811196763",
"name": null,
"address": null,
"requestDate": "2026-03-24T01:26:59.238Z",
"error": "INVALID",
"validatedAt": "2026-03-24T01:26:59.211Z"
}
]

💰 How Much Does It Cost to Validate EU VAT Numbers?

This actor uses pay-per-event (PPE) pricing — you pay only for the VAT numbers you actually validate.

EventPrice
Actor start (one-time per run)$0.01
Per VAT number validated$0.002

Cost Examples

VAT NumbersEstimated Cost
10 numbers~$0.03
100 numbers~$0.21
500 numbers~$1.01
1,000 numbers~$2.01

Free Plan

Apify's free plan includes $5 of monthly platform credits — enough to validate approximately 2,450 VAT numbers per month at no cost.

Pricing automatically scales with tiered discounts for high-volume users. Check the actor page for current tier rates.


🚀 How to Use

Step 1: Open the Actor

Go to apify.com/automation-lab/vat-number-validator and click Try for free.

Step 2: Enter VAT Numbers

In the VAT Numbers field, enter one VAT number per line. Include the 2-letter country code prefix:

IE6388047V
DE123456789
FR12345678901
BE0471276756

Spaces, dots, and hyphens in the number are automatically stripped — DE 123 456 789, DE-123456789, and DE123456789 are all treated identically.

Step 3: Configure Options (Optional)

  • Request timeout — increase from the default 10 seconds if you experience timeout errors on specific countries (Germany and some others can be slow during peak hours).

Step 4: Run and Download Results

Click Start and wait for the run to complete. Download results as JSON, CSV, or Excel from the Dataset tab, or access them via the API.


📥 Input Parameters

ParameterTypeRequiredDefaultDescription
vatNumbersarray of stringsYesList of EU VAT numbers to validate. Each must start with a 2-letter country code.
timeoutSecsintegerNo10Per-request timeout in seconds for VIES API calls. Range: 5–60.

Supported Country Codes

CodeCountryCodeCountry
ATAustriaITItaly
BEBelgiumLTLithuania
BGBulgariaLULuxembourg
CYCyprusLVLatvia
CZCzech RepublicMTMalta
DEGermanyNLNetherlands
DKDenmarkPLPoland
EEEstoniaPTPortugal
ELGreeceRORomania
ESSpainSESweden
FIFinlandSISlovenia
FRFranceSKSlovakia
HRCroatiaXINorthern Ireland
HUHungary
IEIreland

Note: GB (Great Britain) was removed from VIES after Brexit. Only Northern Ireland (XI) remains in the EU VAT system.


💡 Tips and Best Practices

Format Your Input Correctly

Always include the 2-letter country code prefix. 123456789 is not a valid input — use DE123456789. The actor strips formatting characters automatically, so DE 123 456 789, de123456789, and DE-123456789 all work.

Greece Uses EL Not GR

The EU uses the Latin code EL for Greece in the VIES system, not the ISO standard GR. If your database uses GR prefix, you need to convert it to EL before querying.

VIES Can Be Slow or Unavailable

VIES is a publicly operated EU API. During peak hours or for certain member states (especially Germany), responses can be slow or intermittently unavailable. The actor includes automatic retry on rate-limit responses. For production workflows, set timeoutSecs to 20–30 for robustness.

Name and Address May Be Null

Not all EU member states provide company name and address through VIES. Germany (DE) and several others return isValid: true with no name or address — this is expected VIES behaviour, not an actor bug.

Deduplicate Your Input

The actor automatically deduplicates VAT numbers, so sending the same number twice will only query VIES once and produce one result row.

Batch Large Lists

VIES processes one request at a time per session. For lists of hundreds of numbers, the actor runs them sequentially with appropriate error handling. There is no practical limit on list size.


🔗 Integrations

CRM Supplier Onboarding (Make / Zapier)

Trigger: new vendor record created in HubSpot or Salesforce → run this actor with the VAT number from the vendor form → write validation result back to the CRM record. Flag invalid numbers for manual review.

ERP VAT Compliance Audit (Scheduled)

Schedule a monthly Apify run that reads your vendor VAT numbers from a Google Sheet or Airtable, validates them all, and writes a "VALID / INVALID" column back. Catch deregistered suppliers before your VAT reclaim is rejected.

E-commerce B2B Checkout (Webhook)

On B2B order creation in WooCommerce, Shopify, or a custom checkout: call Apify API to run the actor → check isValid in the result → apply zero-rated VAT for valid EU business customers, charge standard rate for invalid ones.

Invoice Processing Automation

Automate accounts-payable workflows: extract VAT numbers from scanned invoices (via OCR actor), validate them here, and flag for human review if the supplier VAT number does not match VIES records.


🔌 API Usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/vat-number-validator').call({
vatNumbers: [
'IE6388047V',
'DE123456789',
'FR12345678901',
],
timeoutSecs: 15,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/vat-number-validator').call(run_input={
'vatNumbers': [
'IE6388047V',
'DE123456789',
'FR12345678901',
],
'timeoutSecs': 15,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

# Start a run
curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~vat-number-validator/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vatNumbers": ["IE6388047V", "DE123456789"],
"timeoutSecs": 15
}'
# Fetch results (replace DATASET_ID with the defaultDatasetId from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_TOKEN"

Use with Claude AI (MCP)

This actor is available as a tool in Claude AI through the Model Context Protocol (MCP). Add it to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

  • "Validate these EU VAT numbers and return the company name and address for each valid one: IE6388047V, DE123456789, FR12345678901."
  • "Check if supplier VAT number BE0471276756 is currently registered in VIES and what company it belongs to."
  • "Validate all the VAT numbers in this list and tell me which ones are invalid and why."

Learn more in the Apify MCP documentation.


Yes. The EU VIES database is a publicly available service operated by the European Commission, designed specifically to allow businesses to verify VAT numbers. Querying it is not only legal but is the standard practice for EU VAT compliance. EU Regulation 904/2010 explicitly mandates this verification system.

Data Privacy

VIES returns only publicly registered business information (company name and address as registered with the national tax authority). No personal data is returned. The data you query is stored in your Apify dataset — review Apify's privacy policy for data retention details.

VAT Compliance Responsibility

This actor provides the same data as querying VIES manually. It is a tool to assist with compliance checks, not a substitute for professional tax advice. For complex VAT positions, consult a qualified tax advisor.


❓ FAQ

Q: The actor returns isValid: false but the VAT number looks correct. Why?

The most common reasons are: (1) The number is not yet registered in VIES even if issued by the national tax authority — there can be a delay of several days. (2) The company has deregistered. (3) The member state's VIES connection is temporarily unavailable. Check the error field — MS_UNAVAILABLE means the country's system is down, not that the number is invalid. Retry after a few minutes.

Q: Why does Germany sometimes return a valid VAT with no company name or address?

Germany (DE) and a few other member states do not provide company name and address through VIES by default. isValid: true with name: null is correct behaviour — the number is valid, but the German tax authority does not share company details via VIES. This is a known limitation of the VIES system.

Q: Does this work for UK VAT numbers after Brexit?

No. Great Britain (GB) left the EU VAT system with Brexit. HMRC (UK tax authority) operates a separate VAT validation service. Only Northern Ireland (XI) remains in the EU VIES system. For UK VAT validation, you need a dedicated UK HMRC API integration.

Q: How fresh is the data?

VIES queries are real-time — every request goes live to the EU VIES system at the time of the run. There is no caching. The requestDate field in the output shows the exact timestamp of the VIES response.

Q: Why is VIES sometimes slow or returning MS_UNAVAILABLE?

VIES is a federated system — it queries each member state's national tax authority individually. Some countries (notably Germany and certain Eastern European member states) have slower systems or scheduled maintenance windows. During these times, VIES returns MS_UNAVAILABLE for that country. The actor records this as an error rather than marking the number invalid. Retry later for accurate results.

Q: Can I validate non-EU VAT numbers?

No. VIES only covers EU member states and Northern Ireland. For UK, Switzerland, Norway, or other non-EU VAT validation, you need country-specific integrations.


Check out our other compliance and validation tools: