Skip to content
Eden Engine

Validate an EU VAT Number: Registered Status, Trader Name and Address (VIES)

vies/validate-vat

Checks one EU VAT number against the European Commission's VIES service, which asks the member state's own register live. Input is a country code (the 27 member-state VIES prefixes, Greece as EL, plus XI for Northern Ireland) and the number without the country prefix. Returns isValid, a userError status (VALID, or INVALID for a number that is not registered), the registered name and address when the member state discloses them ("---" or an empty string when it does not), and the request date. An unregistered number is a normal answer with isValid false, not an error. A member state whose back end is busy or down fails as a retryable error instead of answering isValid false. Not for GB numbers: VIES no longer serves them. European Commission data, served by Eden Engine; not an official European Commission product.

activeper callv1

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

European Commission VIES

Source: European Commission, VIES VAT number validation service (ec.europa.eu/taxation_customs/vies). Served by Eden Engine; not an official European Commission product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "vies/validate-vat" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "vies/validate-vat" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "vies/validate-vat", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "vies/validate-vat", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "country",
    "number"
  ],
  "properties": {
    "number": {
      "type": "string",
      "pattern": "^[0-9A-Za-z]{2,14}$",
      "description": "The VAT number WITHOUT the country prefix, letters and digits only, for example 6388047V for IE6388047V or 820646660B01 for NL820646660B01. Spaces, dots and dashes must be removed first."
    },
    "country": {
      "enum": [
        "AT",
        "BE",
        "BG",
        "CY",
        "CZ",
        "DE",
        "DK",
        "EE",
        "EL",
        "ES",
        "FI",
        "FR",
        "HR",
        "HU",
        "IE",
        "IT",
        "LT",
        "LU",
        "LV",
        "MT",
        "NL",
        "PL",
        "PT",
        "RO",
        "SE",
        "SI",
        "SK",
        "XI"
      ],
      "type": "string",
      "description": "VIES country prefix: the member-state ISO code, except Greece which is EL, plus XI for Northern Ireland. Lower case is accepted by the service but the enum is upper case."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "isValid",
    "userError"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Registered trader name, or \"---\" or an empty string when the member state does not disclose it or the number is not valid."
    },
    "address": {
      "type": "string",
      "description": "Registered address, possibly with line breaks, or \"---\" or an empty string when not disclosed or not valid."
    },
    "isValid": {
      "type": "boolean",
      "description": "True when the member state's register holds the number as an active VAT registration."
    },
    "userError": {
      "type": "string",
      "description": "VIES status: VALID or INVALID for a finished check. The known busy, unavailable and invalid-input codes are refused before they reach the customer."
    },
    "vatNumber": {
      "type": "string",
      "description": "The number as VIES normalised it (upper case, spaces removed)."
    },
    "requestDate": {
      "type": "string",
      "description": "When VIES answered, an ISO 8601 timestamp in UTC."
    },
    "viesApproximate": {
      "type": "object",
      "description": "Approximate-match results; always placeholders (\"---\" and 3) because the tool sends no trader details to match.",
      "additionalProperties": true
    },
    "originalVatNumber": {
      "type": "string",
      "description": "The number as sent."
    },
    "requestIdentifier": {
      "type": "string",
      "description": "VIES consultation number; empty because the tool sends no requester details."
    }
  },
  "additionalProperties": true
}