VIES API
VIES is the European Commission’s VAT Information Exchange System. Its REST API validates a VAT number against the issuing member state, keyless and free, across all 27 states plus XI for Northern Ireland. Supply your own VAT as requester and it returns a consultation number as proof of check.
Free and keyless. Reuse permitted with source acknowledgement, provided as is with no SLA. Validation only - VIES is not a company registry. Official docs: VIES REST API (European Commission, DG TAXUD).
npx skills add Nolpak14/getregdata -g -y
Teaches your agent the endpoints, the auth pattern and the failure modes below - so it runs the check correctly rather than guessing. Read SKILL.md
What you get, for free
- Validity
- isValid - whether the VAT number is currently registered in its member state.
- Registered name and address
- Where the member state chooses to share them. Several return --- instead, which is a privacy choice rather than a missing company.
- Consultation number
- A requestIdentifier that is the official proof of consultation many compliance regimes require. It is only issued when you supply your own VAT as the requester.
- Service status
- Which member-state services are currently reachable, so you can tell a real negative from an outage.
Getting an API key
- None. VIES is keyless and needs no registration.
- There is no published hard limit, but a fair-use policy applies - heavy concurrency returns MS_MAX_CONCURRENT_REQ or GLOBAL_MAX_CONCURRENT_REQ.
- To obtain a consultation number you must POST and include your own VAT as requesterMemberStateCode plus requesterNumber.
# simple validation
curl "https://ec.europa.eu/taxation_customs/vies/rest-api/ms/DE/vat/811569869"
# with a consultation number (proof of check)
curl -X POST "https://ec.europa.eu/taxation_customs/vies/rest-api/check-vat-number" \
-H "Content-Type: application/json" \
-d '{"countryCode":"DE","vatNumber":"811569869",
"requesterMemberStateCode":"PL","requesterNumber":"5260250274"}' Coverage is the 27 member states plus XI for Northern Ireland and EL for Greece. GB is not in VIES post-Brexit - use Companies House for a UK company.
Endpoints
| Purpose | Call |
|---|---|
| Validate a VAT number | GET /vies/rest-api/ms/{countryCode}/vat/{vatNumber} |
| Validate with consultation number | POST /vies/rest-api/check-vat-number |
| Member-state service status | GET /vies/rest-api/check-status |
Running a KYB check end to end
- 1 Validate the VAT
Call the member-state endpoint and read isValid, capturing name and address where they are returned.
- 2 Capture audit proof
If your compliance file needs evidence, POST with your own requester VAT and record the requestIdentifier and requestDate.
- 3 Route to the full record
Use the country code to pull directors, owners or financials from the right national source - free where one exists, paid where the register publishes no API.
What bites people
A failed service call is not an invalid VAT
MS_UNAVAILABLE, SERVICE_UNAVAILABLE, TIMEOUT and INVALID_REQUESTER_INFO all mean the check did not complete. Treat them as UNCONFIRMED and retry. Recording them as "invalid" puts a wrong conclusion in a compliance file.
isValid false has several causes
It can mean genuinely unregistered, or a malformed number, or a member-state service that could not answer. Read userError before concluding anything.
A blank name is a privacy choice
Many member states validate the number without returning identity, so name and address come back as ---. That is not evidence the company does not exist.
The consultation number needs a requester VAT
requestIdentifier is blank on the simple GET. You only get the legally useful consultation number by POSTing with your own member state code and VAT number.
GB is not in VIES
Great Britain left the system after Brexit. Northern Ireland remains under the XI prefix. For a UK company, validate through Companies House instead.
VIES confirms a VAT and nothing more
No directors, no owners, no financials, no status beyond VAT registration. It is the cheapest first step in a KYB check, not the check itself.
The jurisdictions with no free equivalent
The UK is the outlier. Most European registers publish through portals built for people, not a general-purpose API - so the next jurisdiction you need probably has no free option. These read the official source live and return the same shape of structured record.
Is the VIES API free?
Yes, free and keyless, with no registration. A fair-use policy applies rather than a published rate limit, so throttle batch checks to avoid concurrency errors.
How do I get a VIES consultation number?
POST to check-vat-number and include your own VAT as requesterMemberStateCode and requesterNumber. The response then carries a requestIdentifier, which is the proof-of-consultation many compliance regimes require. The simple GET does not return one.
Why does VIES return no company name?
Because several member states validate the number without sharing identity, returning --- instead. It is a member-state privacy decision, not a sign the VAT or the company is fake.
Can I check a UK VAT number in VIES?
Not a GB one - Great Britain left VIES after Brexit. Northern Ireland numbers remain, under the XI prefix. For a UK company use the free Companies House API instead.