[ validación · fiscal ]● 3 créd. · 20 sol./min

Validación de IVA de la UE API

Valida cualquier número de IVA europeo contra VIES, el registro oficial de la Comisión Europea. Confirmación en tiempo real más la razón social y la dirección registradas cuando el Estado miembro las divulga.

Fuente oficial VIES27 Estados + XIComprobación en tiempo real
auth · x-api-key

¿No tienes una clave API?

Inicia sesión en tu cuenta para crear y gestionar tus claves API.

[ 02 · integrate ]

Guía de integración

Copia un fragmento, sustituye tu clave de API y ejecútalo. Funciona en cualquier cliente HTTP — ejemplos abajo en cURL, JavaScript y Python.

spec
GET/api/validate-vat
base
https://www.apipick.com

Validate an EU VAT number against the official VIES registry

parámetros
vat_numberstringobligatorio

Full VAT number with its two-letter member-state prefix. Spaces, dots, and hyphens are stripped. IE6388047V

countrystringopcional

Member-state code, if the number is supplied without its prefix. Greece is EL, not GR. IE

curl -X GET "https://www.apipick.com/api/validate-vat" \
  -H "x-api-key: YOUR_API_KEY"
● 200 · respuesta
{
  "vat_number": "IE6388047V",
  "country_code": "IE",
  "number": "6388047V",
  "valid": true,
  "name": "GOOGLE IRELAND LIMITED",
  "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
  "name_disclosed": true,
  "request_date": "2026-09-01T11:52:22.440Z",
  "consultation_number": null,
  "source": "European Commission VIES",
  "credits_used": 3,
  "remaining_credits": 97
}

Diseñada para casos de uso reales

🧾

Inversión del sujeto pasivo

Confirma el registro de IVA del comprador antes de aplicar tipo cero a una factura B2B transfronteriza, y deja constancia de la comprobación.

🚪

Alta de clientes B2B

Valida en el registro de alta y rellena automáticamente la razón social y la dirección desde el registro oficial, en lugar de pedir al cliente que las escriba.

🛡️

Prevención del fraude

Detecta números de IVA inventados o caducados antes de que lleguen a tu sistema de facturación o a una declaración fiscal.

🤖

Flujos con agentes

Da a un agente financiero una herramienta de un solo parámetro que pueda invocar al procesar una factura, con una respuesta booleana inequívoca.

Campos de la respuesta

CampoTipoDescripción
validbooleanSi el número está registrado actualmente para comercio transfronterizo
country_codestringCódigo del Estado miembro tal como se declara (EL para Grecia, XI para Irlanda del Norte)
numberstringEl número de IVA sin su prefijo de país
namestring | nullRazón social registrada, cuando el Estado miembro la divulga
addressstring | nullDirección registrada, cuando el Estado miembro la divulga
name_disclosedbooleanFalse cuando el Estado miembro omite los campos de identidad por política (DE, ES)
request_datestring | nullMarca de tiempo que VIES registró para la comprobación
consultation_numberstring | nullIdentificador de consulta de VIES, utilizable como prueba de verificación
credits_usedintegerCréditos descontados por esta solicitud
remaining_creditsintegerCréditos restantes en tu cuenta
[ 03 · limits ]

Límites de tasa

La limitación es por clave de API, ventana deslizante de 60 segundos. Al alcanzar el límite recibes un 429 limpio con una cabecera Retry-After.

tasa de peticiones

20req/min

Por clave de API, por endpoint. Ventana deslizante de 60 segundos.

concurrencia

3concurrent

Máximo de peticiones simultáneas en curso por clave de API.

cabeceras de respuesta
X-RateLimit-LimitMáximo de peticiones permitidas por minuto
X-RateLimit-RemainingPeticiones restantes en la ventana actual
X-RateLimit-ResetSegundos hasta que se reinicia la ventana actual
Retry-AfterSegundos a esperar antes de reintentar (solo en 429)
● 429 · demasiadas peticiones
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 12

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded: 20 requests/minute per API key. Retry after 12s.",
  "retry_after": 12
}

Fuente de datos y licencia

Las comprobaciones se hacen contra VIES, el Sistema de Intercambio de Información sobre el IVA de la Comisión Europea, que reenvía cada consulta a la base de datos fiscal del propio Estado miembro en tiempo real. No guardamos ninguna copia del registro: la respuesta es de la administración tributaria, entregada como JSON limpio y con los casos de caída y de no divulgación explicitados.

Preguntas frecuentes

P: ¿Es la comprobación oficial de la UE?

R: Sí. La petición va a VIES, el Sistema de Intercambio de Información sobre el IVA de la Comisión Europea, que consulta en tiempo real la base de datos fiscal del propio Estado miembro. No hay base de datos intermedia, así que la respuesta coincide con la que obtendrías en el formulario web de la Comisión.

P: ¿Por qué la razón social viene vacía en los números alemanes?

R: Alemania y España no divulgan razón social ni dirección a través de VIES por política. El número se sigue confirmando como registrado o no; solo se omiten los campos de identidad. La respuesta fija name_disclosed: false para que distingas una omisión por política de un campo realmente vacío.

P: ¿Qué ocurre cuando el sistema de un Estado miembro está caído?

R: VIES enruta a la base de datos de cada Estado miembro, y esas se desconectan por mantenimiento. Cuando ocurre, recibes HTTP 503 con un mensaje claro y no se cobran créditos. Reintenta pasados unos minutos: la caída está del lado de la administración tributaria, no del nuestro.

P: ¿Qué códigos de país se admiten?

R: Los 27 Estados miembros más XI para Irlanda del Norte según el Marco de Windsor. Ten en cuenta que Grecia declara el IVA como EL, no con su código ISO GR. Gran Bretaña (GB) salió de VIES tras el Brexit y no está cubierta.

P: ¿Puedo obtener un número de consulta para mi pista de auditoría?

R: El campo consultation_number lleva el identificador de petición de VIES cuando se emite. Ese identificador es lo que una administración tributaria acepta como prueba de que verificaste el estado de IVA de una contraparte en una fecha concreta, algo que importa en la inversión del sujeto pasivo.