La verificación de un número de IVA intracomunitario en el servicio europeo VIES es simple sobre el papel: una llamada, una respuesta válida o inválida. En producción choca con un servicio cuya disponibilidad varía según los Estados miembros, con formatos de números heterogéneos y con un cliente que espera una respuesta mientras la página gira.
Este artículo trata la implementación. Las condiciones fiscales de la exención son otro tema, y la verificación es solo una de las cuatro.
Dónde colocar el campo
Dos ubicaciones posibles, con consecuencias diferentes.
En el registro, en el formulario de creación de cuenta profesional. La verificación se hace una vez, el resultado se guarda en el cliente y el checkout permanece fluido. Es el enfoque recomendado en cuanto validas cuentas profesionales.
En el checkout, en el formulario de dirección de facturación. Más flexible para los clientes que compran sin cuenta, pero la verificación llega en el peor momento: una lentitud o un error en esta etapa cuesta un pedido.
En ambos casos, el campo se vincula a la dirección de facturación, nunca a la de entrega. El número pertenece a la entidad que compra, no al lugar donde llega el paquete.
Los formatos, primera fuente de fallo
Un número de IVA intracomunitario empieza por un código de país de dos letras, seguido de una cadena cuya longitud y composición varían de un Estado a otro. Francia usa dos caracteres de clave y nueve dígitos, Alemania nueve dígitos, España una combinación de letras y dígitos, Irlanda admite varios formatos históricos.
Tres tratamientos a realizar antes de cualquier llamada.
- Normalizar la entrada. Quitar espacios, puntos y guiones y pasar a mayúsculas. Uno de cada tres clientes escribe su número con separadores.
- Separar el código de país del resto. El servicio los espera por separado, y el cliente suele escribirlo todo en un bloque.
- Validar la forma antes de llamar. Un control de formato por país evita consultar el servicio con una entrada manifiestamente errónea y permite un mensaje inmediato.
Atención al caso de Grecia, cuyo código de país de IVA difiere de su código de país ISO, y al de Irlanda del Norte, que dispone de un prefijo distinto desde la retirada del Reino Unido.
Validación IVA Intracomunitario VIES e Inversión del Sujeto Pasivo B2BIVA intracomunitario verificado, inversión del sujeto pasivo automatizada, pruebas de auditoría con marca de tiempo.€79,00
La llamada al servicio
El servicio europeo consulta, para cada petición, la base nacional del Estado en cuestión. Dos consecuencias directas.
La latencia varía mucho según el país consultado. Una verificación alemana suele responder rápido, otras administraciones son claramente más lentas.
La disponibilidad es independiente de un Estado a otro. El servicio puede funcionar para Bélgica y estar caído para Italia en el mismo momento. Una prueba exitosa no garantiza, por tanto, que todas las verificaciones lleguen a buen puerto.
Fija un tiempo máximo de espera, de cinco a diez segundos, más allá del cual consideras el servicio no disponible. Una llamada sin límite de tiempo bloquea la página.
El comportamiento degradado
Es el punto que distingue una implementación utilizable de una frágil. Tres estados a distinguir, y no dos.
Número válido. Registras el resultado, la marca de tiempo, y aplicas tus reglas fiscales.
Número inválido. Mensaje claro al cliente, con posibilidad de corregir. No bloquees el pedido: el cliente puede comprar con IVA y regularizar después.
Servicio no disponible. El caso peor tratado. El pedido debe pasar, con IVA aplicado, y la verificación debe ponerse en cola para un nuevo intento. Tratar la indisponibilidad como invalidez hace perder pedidos; tratarla como validez te expone fiscalmente.
Una cola de reverificación que repasa automáticamente los números no verificados unas horas más tarde resuelve este caso sin intervención.
Los mensajes al cliente
Cuentan tanto como la mecánica. Tres formulaciones a preparar.
Ante un número inválido, explica qué puede explicar el rechazo: número reciente aún no registrado en la base europea, empresa no sujeta al impuesto o error de escritura. Un simple «número inválido» deja al cliente sin salida.
Ante una indisponibilidad, di la verdad: la verificación no pudo completarse, el pedido puede realizarse con IVA y volverás a contactarle. Es más tranquilizador que un mensaje de error técnico.
Ante un éxito, confirma visualmente, con el nombre de la empresa devuelto por el servicio cuando esté disponible. Esta confirmación reduce los errores de escritura con un número perteneciente a otra sociedad.
Conservar la prueba
El servicio europeo proporciona un número de consulta por cada petición. Regístralo, con la fecha, la hora, el número probado y la respuesta completa.
Es esta traza la que te permite demostrar, dos años después, que el número era válido en el momento de la venta. Sin ella, no puedes justificar una exención, aunque la verificación haya tenido lugar.
Vincula esta prueba al pedido, no solo al cliente: un cliente puede cambiar de número, y lo que cuenta es el estado en el momento de la transacción.
Caché y reverificación
Dos ajustes complementarios.
No vuelvas a llamar al servicio en cada página. Una verificación exitosa puede conservarse unos días sin riesgo, lo que evita consultar el servicio en cada recarga del carrito.
Reverifica periódicamente a los clientes recurrentes. Un número retirado a mitad de año sigue siendo válido en tu base si nadie vuelve a comprobarlo. Una reverificación mensual de las cuentas activas basta.
El módulo Validación de IVA Intracomunitario VIES gestiona esta cadena en PrestaShop 8 y 9: normalización y control de formato por país, llamada al servicio con tiempo máximo, comportamiento degradado con cola de reverificación, conservación del número de consulta y reverificación periódica de las cuentas.