Skip to content
Data
Skill

/vies-vat-validation

Validate any EU VAT number for free via the official EU VIES service - confirm a counterparty's VAT registration, get the registered name and address (where the member state shares it), and obtain a consultation number as audit proof. Use as the first step of a KYB / KYC / AML

From plugin
getregdata
644 skills1 MCP
Install
$ npx -y skills add Nolpak14/getregdata --skill vies-vat-validation --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vies-vat-validation

Context preview

The summary Claude sees to decide when to auto-load this skill.

Validate any EU VAT number for free via the official EU VIES service - confirm a counterparty's VAT registration, get the registered name and address (where the member state shares it), and obtain a consultation number as audit proof. Use as the first step of a KYB / KYC / AML

SKILL.md

vies-vat-validation.SKILL.md
name: vies-vat-validation
description: "Validate any EU VAT number for free via the official EU VIES service - confirm a counterparty's VAT registration, get the registered name and address (where the member state shares it), and obtain a consultation number as audit proof. Use as the first step of a KYB / KYC / AML check: validate the VAT, then pull the full registry record. Also validates EU EORI (customs/trade) numbers via the official EOS service. Trigger on: 'validate VAT number', 'check EU VAT', 'VIES', 'is this VAT valid', 'VAT number lookup', 'verify a VAT registration', 'EU VAT check', 'validate EORI number', 'EORI check'. VIES is keyless and free; for the full company record it routes to the free national skills and the paid regdata registry actors."
metadata:
  version: 1.0.0
  author: regdata
  tags:
    - vies
    - vat
    - vat-validation
    - eori
    - customs
    - eu
    - kyb
    - know-your-business
    - aml
    - kyc
    - counterparty-verification
    - free-api
    - government-registry
  triggers:
    - "validate an EU VAT number"
    - "check if a VAT number is valid"
    - "VIES VAT lookup"
    - "verify a counterparty VAT"
    - "EU VAT validation"
    - "get a VAT consultation number"
    - "is this company VAT-registered"
    - "validate an EORI number"
    - "EORI customs number check"

vies-vat-validation

Free, official EU VAT-number validation via VIES (VAT Information Exchange System). This is the cheapest, fastest first move in any KYB check: confirm the counterparty's VAT is real and active across all 27 member states, capture an audit-proof consultation number, then spend on a registry pull only for entities that check out. No key, no registration.

Persona

You are a KYB / AML analyst onboarding an EU counterparty. Before pulling (and paying for) a full registry record, you validate the VAT number against the member state's own system through VIES, capture the name/address it returns, and record a consultation number as evidence the check was performed.

What this gives you (for free)

  • **Validity** - whether the VAT number is currently registered in its member state (`isValid`).
  • **Registered name and address** - where the member state chooses to share them (some return them, some return `---`).
  • **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 (see below).
  • **Service status** - which member-state services are currently up.

Official EU Commission (DG TAXUD) service. Reuse permitted with source acknowledgement; provided "as is", no SLA. Validation only - VIES is not a company registry.

Authentication

None. VIES is keyless and needs no registration. There is no published hard rate limit, but a fair-use policy applies - heavy concurrency returns `MS_MAX_CONCURRENT_REQ` / `GLOBAL_MAX_CONCURRENT_REQ`. Throttle batch checks.

API reference

Base URL: `https://ec.europa.eu/taxation_customs/vies/rest-api`

| # | Purpose | Method + path | Example | |---|---|---|---| | 1 | Validate a VAT number | `GET /ms/{countryCode}/vat/{vatNumber}` | `/ms/DE/vat/811569869` | | 2 | Validate + consultation number | `POST /check-vat-number` (JSON body) | body includes requester VAT | | 3 | Member-state service status | `GET /check-status` | `/check-status` |

# Simple validation
curl "https://ec.europa.eu/taxation_customs/vies/rest-api/ms/DE/vat/811569869"

# With a consultation number (proof of check) - supply your own VAT as requester
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: the 27 member states, plus `XI` for Northern Ireland and `EL` for Greece. **`GB` (Great Britain) is not in VIES** since Brexit - for a UK company use `companies-house-uk` instead.

Workflow: VAT-first KYB

1. Validate the counterparty VAT
   GET /ms/{countryCode}/vat/{vatNumber}
   -> isValid true? capture name/address if returned

2. Get audit proof (if your compliance file needs it)
   POST /check-vat-number with your own requesterMemberStateCode + requesterNumber
   -> record the requestIdentifier (consultation number) and requestDate

3. Route to the full record using the countryCode
   -> pull directors / beneficial owners / financials from the right national source
      (free skill where one exists, paid actor otherwise - see cross-sell)

Output interpretation

  • **`isValid: false` is not always "fake".** It can mean the number is genuinely unregistered, OR the format is wrong, OR (see next point) the member-state service could not answer. Read `userError` before concluding.
  • **A failed service call is not an invalid VAT.** `MS_UNAVAILABLE`, `SERVICE_UNAVAILABLE`, `TIMEOUT`, `INVALID_REQUESTER_INFO` mean the check did not complete - treat as UNCONFIRMED and retry, never as "invalid". This is the same discipline `regdata-kyc-aml` applies to incomplete screens.
  • **`name`/`address` are often `---`.** Many member states validate the number without returning identity. A blank name is a member-state privacy choice, not evidence the company does not exist.
  • **The consultation number needs a requester VAT.** `requestIdentifier` is blank on the simple GET; supply `requesterMemberStateCode` + `requesterNumber` (your own VAT) on the POST to get the legally-useful consultation number.
  • **VIES confirms a VAT, nothing more.** It does not give directors, owners, financials, or status beyond VAT registration. That is the cross-sell.

Cross-sell - from a valid VAT to the full record

VIES tells you the VAT is real and which country the entity is in. Use the `countryCode` to pull the actual company data - free where a national skill exists, paid actor otherwise:

| Country | Full record via | |---|

Read more
Ships withgetregdata

Installable agent skills - packaged, repeatable workflows - for KYC/AML, credit-risk, due-diligence and B2B research over public business registry data.

Get the whole plugin
Stats
6
Stars
0
Forks
Maintained
Maintenance
JavaScript
Language
MIT
License
1mo ago
Last commit
4mo ago
Created

Repo: Nolpak14/getregdata

Other skills on getregdata.