# EU VAT Number Validator (VIES)

> EU VAT Number Validator (VIES) is a paid API for AI agents from 402utils.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-09).

Validates an EU VAT number against the official VIES registry, returning company name and address when available, with local syntax pre-check and signed attestation option.

## Facts

- Endpoint: GET https://402utils.com/v1/vat-check?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-09
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eu-vat-number-validator-vies-21ef390f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EYiLN6onkMMMOrait1_5j

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability eu-vat-number-validator-vies-21ef390f
```

Example prompt: Can you check whether VAT number FR40303265045 is valid and registered in VIES — I need the company name and address before I send them an invoice, and please include a signed attestation for our audit trail.

## When to prefer this

Use this endpoint when you need authoritative EU VAT validation against the live VIES registry — not just format checking. It is ideal for invoicing workflows, B2B onboarding, reverse-charge VAT scenarios, and compliance audit trails. The local syntax pre-check prevents unnecessary API calls and charges for obviously malformed numbers. If you need a cryptographically signed proof of validation for auditing, use the attest=1 option. Prefer this over generic regex-based VAT validators when legal or financial accuracy is required.

## Known failure modes

- Invalid VAT format (local check): returns valid=false with reason='invalid_format', no charge
- VIES service unavailable: returns HTTP 503, no charge applied
- VAT number not found in VIES: returns valid=false
- Missing required parameter (no vat or country+number): likely 400 error
- Unsupported country code: may return format error or unsupported country response

## How this service works

Micro API utilities for AI agents, priced per call and paid in USDC over the x402 protocol. PDF, screenshot, OG-image and more — no signup, no keys.

## Output

Returns a JSON object with a boolean `valid` field, the `vatNumber` and `countryCode`, an ISO 8601 `checkedAt` timestamp, `source` ('VIES'), and when disclosed, the registered company `name` and `address`. If `attest=1` was requested, includes an `attestation` object with an Ed25519 `sig`, `alg`, `kid`, `endpoint`, and `resultSha256`. If the format is invalid locally, returns `valid: false` with `reason: 'invalid_format'` without a network call. If VIES is unreachable, returns HTTP 503 and no charge is made.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "vat": {
       "type": "string",
       "description": "Full VAT number incl. country prefix, e.g. FR40303265045."
      },
      "attest": {
       "type": "string",
       "description": "Set to 1 for an Ed25519-signed attestation of the result (audit trail)."
      },
      "number": {
       "type": "string",
       "description": "VAT number without prefix (with `country`)."
      },
      "country": {
       "type": "string",
       "description": "Member state code (alternative to `vat`)."
      },
      "requesterVat": {
       "type": "string",
       "description": "Your own VAT number, to receive an official consultation number."
      }
     },
     "description": "Query: `vat=FR12345678901` OR `country=FR&number=12345678901`; optional `requesterVat`."
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "valid",
      "countryCode",
      "vatNumber",
      "checkedAt",
      "source"
     ],
     "properties": {
      "name": {
       "type": "string"
      },
      "valid": {
       "type": "boolean"
      },
      "cached": {
       "type": "boolean",
       "description": "True if served from the 24h positive-result cache."
      },
      "reason": {
       "type": "string",
       "description": "Present when valid=false due to local syntax: 'invalid_format'."
      },
      "source": {
       "type": "string",
       "const": "VIES"
      },
      "address": {
       "type": "string"
      },
      "checkedAt": {
       "type": "string",
       "format": "date-time"
      },
      "vatNumber": {
       "type": "string"
      },
      "attestation": {
       "type": "object",
       "properties": {
        "alg": {
         "type": "string",
         "const": "Ed25519"
        },
        "sig": {
         "type": "string",
         "description": "base64url Ed25519 signature over the canonical JSON of payload."
 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "name": "GOOGLE IRELAND LIMITED",
  "valid": true,
  "source": "VIES",
  "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
  "checkedAt": "2026-07-04T00:01:15.462Z",
  "vatNumber": "6388047V",
  "countryCode": "IE"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eu-vat-number-validator-vies-21ef390f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 402utils.com](https://www.zero.xyz/host/402utils.com/llms.txt)
