EU VAT Number Validator
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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.
Procurement and Legal Teams
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:
| Field | Type | Description |
|---|---|---|
input | string | The original VAT number you provided |
isValid | boolean | true if the number is currently registered in VIES |
countryCode | string | 2-letter EU country code (e.g. DE, FR, IE) |
vatNumber | string | The local VAT number (without country prefix) |
name | string | null | Registered company name (null if VIES does not provide it) |
address | string | null | Registered address (null if VIES does not provide it) |
requestDate | string | ISO 8601 timestamp of when VIES responded |
error | string | null | Error message if invalid or lookup failed |
validatedAt | string | ISO 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.
| Event | Price |
|---|---|
| Actor start (one-time per run) | $0.01 |
| Per VAT number validated | $0.002 |
Cost Examples
| VAT Numbers | Estimated 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:
IE6388047VDE123456789FR12345678901BE0471276756
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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
vatNumbers | array of strings | Yes | — | List of EU VAT numbers to validate. Each must start with a 2-letter country code. |
timeoutSecs | integer | No | 10 | Per-request timeout in seconds for VIES API calls. Range: 5–60. |
Supported Country Codes
| Code | Country | Code | Country |
|---|---|---|---|
| AT | Austria | IT | Italy |
| BE | Belgium | LT | Lithuania |
| BG | Bulgaria | LU | Luxembourg |
| CY | Cyprus | LV | Latvia |
| CZ | Czech Republic | MT | Malta |
| DE | Germany | NL | Netherlands |
| DK | Denmark | PL | Poland |
| EE | Estonia | PT | Portugal |
| EL | Greece | RO | Romania |
| ES | Spain | SE | Sweden |
| FI | Finland | SI | Slovenia |
| FR | France | SK | Slovakia |
| HR | Croatia | XI | Northern Ireland |
| HU | Hungary | ||
| IE | Ireland |
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 ApifyClientclient = 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 runcurl -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.
⚖️ Legal and Compliance
Is It Legal to Use the VIES API?
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.
🔗 Related Actors
Check out our other compliance and validation tools:
- Phone Number Validator — Validate and format phone numbers using Google's libphonenumber
- Domain Availability Checker — Check domain name availability across TLDs
- Email Enrichment — Verify and enrich email addresses with deliverability data
- SPF Record Checker — Validate SPF, DKIM, and DMARC DNS records
- DMARC Record Checker — Analyze DMARC policies and email authentication configuration