A verificação de um número de IVA intracomunitário junto do serviço europeu VIES é simples no papel: uma chamada, uma resposta válida ou inválida. Em produção, esbarra num serviço cuja disponibilidade varia consoante os Estados-membros, em formatos de números heterogéneos, e num cliente que espera uma resposta enquanto a página gira.
Este artigo trata da implementação. As condições fiscais da isenção são outro assunto, e a verificação é apenas uma das quatro.
Onde colocar o campo
Dois lugares possíveis, com consequências diferentes.
No registo, no formulário de criação de conta profissional. A verificação faz-se uma vez, o resultado é guardado no cliente, e o checkout continua fluido. É a abordagem recomendada assim que valida as contas profissionais.
No checkout, no formulário de morada de faturação. Mais flexível para os clientes que encomendam sem conta, mas a verificação intervem no pior momento: uma lentidão ou um erro nesta etapa custa uma encomenda.
Nos dois casos, o campo liga-se à morada de faturação, nunca à morada de entrega. O número pertence à entidade que compra, não ao lugar onde a encomenda chega.
Os formatos, primeira fonte de falha
Um número de IVA intracomunitário começa por um código de país de duas letras, seguido de uma cadeia cuja extensão e composição variam de um Estado para outro. Portugal usa nove dígitos, o NIF precedido de PT; a França dois carateres de controlo seguidos de nove dígitos; a Alemanha nove dígitos; a Espanha uma combinação de letras e dígitos; a Irlanda admite vários formatos históricos.
Três tratamentos a fazer antes de qualquer chamada.
- Normalizar a introdução. Retirar os espaços, pontos, traços e passar a maiúsculas. Um cliente em cada três introduz o seu número com separadores.
- Separar o código de país do resto. O serviço espera os dois em separado, e o cliente introduz muitas vezes tudo num bloco.
- Validar a forma antes de chamar. Um controlo de formato por país evita interrogar o serviço para uma introdução manifestamente errada, e permite uma mensagem imediata.
Atenção ao caso da Grécia, cujo código de país IVA difere do seu código ISO, e ao da Irlanda do Norte, que dispõe de um prefixo distinto desde a saída do Reino Unido.
Validação de IVA Intracomunitário VIES e Autoliquidação B2BIVA intracomunitário verificado, autoliquidação automática e provas de auditoria com data e hora.79,00€
A chamada ao serviço
O serviço europeu interroga, para cada pedido, a base nacional do Estado em causa. Duas consequências diretas.
A latência varia fortemente consoante o país interrogado. Uma verificação alemã responde em geral rapidamente, outras administrações são nitidamente mais lentas.
A disponibilidade é independente de um Estado para outro. O serviço pode funcionar para a Bélgica e estar indisponível para a Itália no mesmo momento. Um teste bem-sucedido não garante portanto que todas as verificações cheguem ao fim.
Fixe um tempo máximo de espera, cinco a dez segundos, para lá do qual considera o serviço indisponível. Uma chamada sem limite de tempo bloqueia a página.
O comportamento degradado
É o ponto que distingue uma implementação utilizável de uma implementação frágil. Três estados a distinguir, e não dois.
Número válido. Regista o resultado, a marca temporal, e aplica as suas regras fiscais.
Número inválido. Mensagem clara ao cliente, com a possibilidade de corrigir. Não bloqueie a encomenda: o cliente pode comprar com o IVA e regularizar depois.
Serviço indisponível. O caso pior tratado. A encomenda deve passar, com IVA aplicado, e a verificação deve ser posta em fila para nova tentativa. Tratar a indisponibilidade como invalidade faz perder encomendas; tratá-la como validade expõe-no fiscalmente.
Uma fila de reverificação que repassa automaticamente os números não verificados algumas horas mais tarde resolve este caso sem intervenção.
As mensagens ao cliente
Contam tanto como a mecânica. Três formulações a preparar.
Num número inválido, explique o que pode explicar a recusa: número recente ainda não registado na base europeia, empresa não sujeita a IVA, ou erro de introdução. Um simples « número inválido » deixa o cliente sem saída.
Numa indisponibilidade, diga a verdade: a verificação não pôde concluir-se, a encomenda pode ser feita com IVA, e voltará ao contacto. É mais tranquilizador do que uma mensagem de erro técnica.
Num sucesso, confirme visualmente, com o nome da empresa devolvido pelo serviço quando disponível. Esta confirmação reduz os erros de introdução num número pertencente a outra sociedade.
Conservar a prova
O serviço europeu fornece um número de consulta para cada pedido. Registe-o, com a data, a hora, o número testado e a resposta completa.
É esse registo que lhe permite demonstrar, dois anos depois, que o número era válido no momento da venda. Sem ele, não pode justificar uma isenção, mesmo que a verificação tenha ocorrido.
Ligue essa prova à encomenda, não apenas ao cliente: um cliente pode mudar de número, e é o estado no momento da transação que conta.
Cache e reverificação
Dois ajustes complementares.
Não volte a chamar o serviço a cada página. Uma verificação bem-sucedida pode ser conservada alguns dias sem risco, o que evita interrogar o serviço a cada recarregamento do carrinho.
Reverifique periodicamente os clientes recorrentes. Um número retirado a meio do ano continua válido na sua base se ninguém repassar. Uma reverificação mensal das contas ativas chega.
O módulo Validação de IVA Intracomunitário VIES gere esta cadeia no PrestaShop 8 e 9: normalização e controlo de formato por país, chamada ao serviço com tempo máximo, comportamento degradado com fila de reverificação, conservação do número de consulta e reverificação periódica das contas.