---
title: "Validate an EU VAT number (VIES)"
method: GET
path: "/vat/{vatNumber}"
tags: ["Validation"]
---

# Validate an EU VAT number (VIES)

`GET /vat/{vatNumber}`

## Request

- Base URL: `https://api.prometiam.com/functions/v1/risk-api`
- URL: `https://api.prometiam.com/functions/v1/risk-api/vat/{vatNumber}`
- Auth: HTTP bearer

Validate an EU VAT number against VIES (the European Commission's VAT Information Exchange System) and return the registered trader name and address when valid. Covers the 27 EU member states plus XI (Northern Ireland); Greek numbers use the EL prefix, and GB VAT is out of scope post-Brexit. Live official lookup — when a member-state registry is temporarily down it returns 503 (retryable) rather than reporting the VAT as invalid. Costs 1 credit. When VIES says a Spanish or German number is valid but withholds the name, `registry_match` {company_id, company_name, address, register} names the company our register holds under that number: register data, not VIES confirmation.

## Path parameters

- `vatNumber` string, required

## Response `200`

VAT validation result

- object
  - `data` VatValidation
    - `vat_number` string: Normalized VAT number with country prefix.
    - `country_code` string: VIES member-state code (Greece = EL, Northern Ireland = XI).
    - `number` string: VAT number without the country prefix.
    - `is_valid` boolean: Whether VIES confirms the number is currently a valid VAT registration.
    - `name` string, nullable: Registered trader name, when the member state discloses it and the number is valid.
    - `address` string, nullable: Registered address, when disclosed.
    - `request_date` string, nullable: VIES timestamp for this check.
    - `source` string
    - `registry_match` object, nullable: When VIES says the number is valid but withholds the name (Spain and Germany), the company our register holds under that number. Register data, not VIES confirmation. Null when VIES returned a name, the country is not one of ours, or the register holds no such company.
      - `company_id` integer
      - `company_name` string, nullable
      - `address` string, nullable
      - `register` string, nullable

## Other responses

- `400`: Missing or invalid parameters
- `401`: Missing, invalid, or expired API key
- `403`: Key lacks the required scope or country access
- `429`: Rate limit exceeded — see `Retry-After` header for seconds until reset
- `503`: VIES upstream temporarily unavailable (member-state registry down or timeout). Retryable — the VAT was not checked.

---

[API](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api.md) · [All operations](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/prometiam/apis/prometiam-risk-intelligence-api/revisions/3ee0626d5a45?raw)
