getregdata
Free agent skillvies-vat-validation

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).

Install the skill
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 the API returns

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.
Authentication

Getting an API key

  1. None. VIES is keyless and needs no registration.
  2. There is no published hard limit, but a fair-use policy applies - heavy concurrency returns MS_MAX_CONCURRENT_REQ or GLOBAL_MAX_CONCURRENT_REQ.
  3. 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.

Reference

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
Workflow

Running a KYB check end to end

  1. 1
    Validate the VAT

    Call the member-state endpoint and read isValid, capturing name and address where they are returned.

  2. 2
    Capture audit proof

    If your compliance file needs evidence, POST with your own requester VAT and record the requestIdentifier and requestDate.

  3. 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.

Failure modes

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.

Where the free API stops

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.

Poland · Beneficial owners and board membersGermany · Company, officers and capitalSpain · Company directory, NIF and officersItaly · Full profile, P.IVA and certified PECBelgium · Enterprise record and directorsFrance · Directors, financials, shareholders
FAQ

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.

All agent skills Paid registry coverage