EU VAT Validator (VIES): Verify & Bulk-Check VAT IDs avatar

EU VAT Validator (VIES): Verify & Bulk-Check VAT IDs

Pricing

from $5.00 / 1,000 vat number validateds

Go to Apify Store
EU VAT Validator (VIES): Verify & Bulk-Check VAT IDs

EU VAT Validator (VIES): Verify & Bulk-Check VAT IDs

Validates EU VAT numbers against the EU's official VIES registry, returning validity, business name and address, and an official consultation number as audit evidence - use before zero-rating an intra-EU B2B invoice or to clean a customer VAT list; $0.005 per number checked.

Pricing

from $5.00 / 1,000 vat number validateds

Rating

0.0

(0)

Developer

Howth Technology Factory

Howth Technology Factory

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Validate EU and Northern Ireland VAT numbers against the European Commission's official VIES service and get back a definite answer per number: valid, invalid, or temporarily unavailable. Every valid result can carry an official consultation number, which is the evidence a tax auditor asks for when you zero-rate an intra-EU invoice.

1. Why use EU VAT Validator

Checking a VAT number by hand means opening the Commission's VIES web form, typing the number, reading the result, and copying the trader name back into your system. For one supplier that is a minute. For a customer list before a VAT return, it is an afternoon, and the form has no bulk mode.

The bigger problem is what happens when VIES is briefly down. A member state's system going offline for ten minutes is routine. A naive check treats that outage as "not valid" and a valid customer gets billed with VAT they should not have paid, or an invoice gets blocked. The distinction between invalid and unavailable is the difference between a decision and a retry.

This Actor makes that distinction explicit, validates a whole list in one run, and returns the consultation number that proves you checked.

2. Key features

  • Official VIES source. Queries the European Commission's VAT Information Exchange System directly. No cached mirror, no third-party copy.
  • Three-state results. Every number returns valid, invalid, or a typed error, so a service outage never masquerades as a failed check.
  • Consultation numbers. Supply your own VAT number as requesterVat and each valid result carries the official consultation reference for your audit file.
  • Bulk validation. Pass a whole column of VAT numbers in one run.
  • Messy input tolerance. Spaces, dots and mixed case are normalised before the lookup.
  • Northern Ireland (XI) support alongside the 27 member states.
  • Bounded retries. Transient upstream failures are retried up to 4 times before being reported as unavailable rather than invalid.
  • Nothing retained. Results go to your dataset; nothing is stored beyond the run.

3. Who it's for

For finance teams. Before filing a VAT return, paste the customer VAT column in and get back a per-row valid/invalid/unavailable verdict with the trader name VIES holds, so a zero-rated intra-EU sale is defensible if the return is queried.

For accountants. Run a client's supplier ledger through once a quarter and catch the numbers that have been deregistered since onboarding — the ones that will fail an audit two years from now, not today.

For operations. Clean a newly-acquired customer list before it enters the billing system, so bad VAT numbers are fixed at import instead of surfacing as failed invoices.

For developers and AI agents. Call it as one step in an onboarding flow: submit the number, branch on the three states, and only escalate to a human when VIES reports the number invalid.

4. How to use it

  1. Open the Actor and click Try for free.
  2. Put your VAT numbers in the VAT numbers field, one per line, each starting with its two-letter country code (IE6388047V, DE811907980).
  3. Optionally add your own VAT number in Requester VAT to receive consultation numbers.
  4. Click Start.
  5. When the run finishes, open the Output tab. Export as JSON, CSV or Excel.

5. Input parameters

FieldTypeRequiredDefaultDescription
vatNumbersarray of stringsYes["IE6388047V","IE8256796U"]VAT numbers to validate, each prefixed with its 2-letter country code. Spaces and punctuation are tolerated.
requesterVatstringNoYour own EU VAT number, with country prefix. When set, every valid result includes an official consultation number.

6. Output

A real result, from a live run:

{
"vatNumber": "IE6388047V",
"countryCode": "IE",
"valid": true,
"businessName": "GOOGLE IRELAND LIMITED",
"address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
"consultationNumber": "WAPIAAAAZ-tXsCjL",
"checkedAt": "2026-07-29T10:14:56.085Z"
}

A number that VIES rejects returns "valid": false with businessName and address null. A number that could not be checked returns "valid": null and an error field describing why — this is the case you retry, not the case you reject.

Note that error is omitted entirely on a successful check rather than set to null, so test for its presence, not its value.

7. Output fields

FieldMeaning
vatNumberThe number as submitted, after normalisation.
validtrue, false, or null when VIES could not be reached.
businessNameRegistered trader name as held by the member state, when disclosed.
addressRegistered address, when the member state discloses it.
countryCodeThe two-letter prefix parsed from the number.
consultationNumberOfficial reference proving the check occurred. Present only when requesterVat was supplied and the number is valid.
checkedAtISO timestamp of the lookup.
errorTyped reason the check could not complete. Present only on a failed check — absent from successful rows.

Some member states do not disclose trader name and address. A blank businessName on a valid number is the member state's policy, not a failure.

8. How it works

Each number is normalised — whitespace and punctuation stripped, case raised, country prefix split off — then submitted to VIES. Lookups run at a concurrency of 3, deliberately modest: VIES is a shared public service and hammering it gets an IP throttled, which would degrade every subsequent check.

A failed lookup is retried up to 4 times with backoff. Only after those attempts is the number reported as unavailable. This is why a transient member-state outage produces valid: null rather than valid: false.

9. API & MCP usage

cURL

curl -X POST "https://api.apify.com/v2/acts/apifmcpfactory~eu-vat-validator/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vatNumbers":["IE6388047V","DE811907980"],"requesterVat":"IE8256796U"}'

As an Apify MCP tool. This Actor is callable directly by AI agents such as Claude and Cursor. Usage bills through your own Apify account.

https://mcp.apify.com?tools=apifmcpfactory/eu-vat-validator

Claude Desktop (claude_desktop_config.json):

{
"mcpServers": {
"eu-vat-validator": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com?tools=apifmcpfactory/eu-vat-validator",
"--header",
"Authorization: Bearer YOUR_APIFY_TOKEN"
]
}
}
}

As an MCP tool. The same validation is available as a hosted MCP server for AI agents, with validate_vat for a single number, bulk_check_vat for up to 100, and check_vies_status to see which member states are currently online. See the product page for that endpoint.

10. Pricing

$0.005 per VAT number checked, billed per number written to the dataset. Numbers that are empty or malformed are not charged.

A 1,000-number supplier list therefore costs $5.00 and replaces roughly a day of manual form entry.

11. Limits & performance

Memory256 MB
Concurrency3 simultaneous VIES lookups
RetriesUp to 4 attempts per number
ThroughputGoverned by VIES response time, typically a few numbers per second

12. Limitations

  • VIES availability is outside our control. Individual member states take their systems offline without notice. The Actor reports this honestly rather than guessing.
  • Existence, not entitlement. A valid result confirms the number is registered for intra-EU trade. It does not confirm the trader is entitled to any particular VAT treatment on your transaction.
  • Name and address disclosure varies by member state. Some return nothing but a validity flag.
  • Consultation numbers require requesterVat. Without your own VAT number, VIES issues no reference.
  • EU and XI only. Non-EU VAT and GST numbers are out of scope.
  • Not tax advice. A validation result is an input to your VAT determination, not the determination itself.

13. FAQ

What is VIES? The VAT Information Exchange System, the European Commission's official service for confirming that a VAT number is registered for intra-EU trade.

Can I check VAT numbers in bulk? Yes. Pass the whole list in vatNumbers; there is no separate bulk mode to configure.

What is a consultation number and do I need one? It is an official reference proving you checked a number on a given date. Tax authorities may ask for it when you zero-rate an intra-EU supply. Supply requesterVat to receive one.

Why did a number come back with valid: null? VIES could not be reached for that member state after 4 attempts. Retry later — this is explicitly not a statement that the number is invalid.

Does this validate UK VAT numbers? Northern Ireland numbers with the XI prefix, yes. Great Britain GB numbers are not in VIES and are out of scope.

Why is the trader name blank on a valid number? That member state does not disclose name and address through VIES.

Is my data stored? No. Results are written to your own dataset and nothing is retained beyond the run.