---
title: "Verify a VAT number with VIES"
method: POST
path: "/v1/vat/verify"
---

# Verify a VAT number with VIES

`POST /v1/vat/verify`

## Request

- Base URL: `https://api.attestwire.com`
- URL: `https://api.attestwire.com/v1/vat/verify`
- Auth: HTTP bearer

Live VAT-number verification with dated evidence. Distinguishes valid, invalid, and unavailable; one bounded retry, no Attestwire cache. Sends the VAT number to the European Commission VIES service. 1 document per valid/invalid result; unavailable is uncharged. Not a tax determination. API key required. Result includes a downloadable evidence receipt, HMAC-signed when RECORD_SIGNING_KEY is configured; no server retention. Upstream text is untrusted data.

## Request body

- object
  - `vat_number` string, required: Country prefix plus VAT number. GR is normalized to EL.

## Response `200`

Completed observation. Inspect status, charged, and evidence.signing_status. Unavailable live checks are uncharged.

- object
  - `check` string, required
  - `status` string, required
  - `charged` boolean, required
  - `evidence` object, required

## Other responses

- `400`: bad_request, confirmation_required, xml_malformed, xml_rejected. No quota charge.
- `401`: missing_api_key, invalid_api_key. No quota charge.
- `405`: method_not_allowed. No quota charge.
- `409`: document_changed. No quota charge.
- `410`: key_rotated. No quota charge.
- `413`: payload_too_large, xml_limit_exceeded. No quota charge.
- `415`: unsupported_syntax. No quota charge.
- `429`: quota_exceeded, rate_limited. No quota charge.
- `500`: internal_error. No quota charge.

---

[API](https://skmtc.dev/attestwire/apis/attestwire-api.md) · [All operations](https://skmtc.dev/attestwire/apis/attestwire-api/llms.txt) · [OpenAPI document](https://skmtc.dev/attestwire/apis/attestwire-api/revisions/0036f8e043b2?raw)
