Menu

Estrutura IBAN e verificação mod-97: partes e limites

A estrutura IBAN tem código de país, dois dígitos verificadores ISO e o BBAN, cujo formato cada país define. Veja como a verificação mod-97 funciona e o que ela não prova.

Publicado em

  • IBAN
  • dígito verificador
  • validação

A estrutura IBAN é fácil de descrever em três partes: duas letras de país, dois dígitos verificadores e uma sequência final cujo formato cada país decide. Essa divisão explica por que um mesmo padrão internacional convive com números de comprimentos tão diferentes — e por que uma regra fixa de formato, escrita para um país, reprova os demais. Neste texto, mostramos como as partes se organizam, qual é o raciocínio da verificação mod-97 e onde ficam os limites dessa conferência.

Quais são as partes de um IBAN?

O padrão internacional de numeração de contas define a ordem dos elementos, mas deixa uma parte considerável em aberto. A leitura é sempre da esquerda para a direita, e cada trecho tem um papel distinto.

Parte O que é Quem define
Código de país Duas letras, no início da sequência Padrão internacional de códigos de país
Dígitos verificadores ISO Dois algarismos logo após as letras Regra do próprio padrão de numeração de contas
BBAN Todo o restante da sequência Cada país fixa comprimento e estrutura interna

A consequência prática dessa divisão é que só as duas primeiras partes são realmente padronizadas. O tamanho total muda de país para país, e a composição do trecho final muda junto. Por isso, quando alguém pergunta qual é o formato de um IBAN, a única resposta correta começa com outra pergunta: de qual país?

Código de país e os dois dígitos verificadores ISO

As duas letras iniciais situam o número em um país e, com isso, apontam para o conjunto de regras que será aplicado dali para frente. Elas não indicam banco, agência, tipo de conta nem qualquer característica do titular: são um endereço de regras, não um endereço de dinheiro.

Os dois algarismos que vêm em seguida são o coração da conferência internacional. Eles não fazem parte da numeração da conta e não identificam nada além de si mesmos: são calculados a partir de todo o restante da sequência. Se qualquer caractere posterior for alterado, a conta deixa de fechar e a inconsistência aparece na hora.

É por isso que uma alteração de um único caractere no meio da sequência é detectada sem que seja preciso consultar banco nenhum. O trabalho dos dois dígitos é exatamente esse: transformar erro de transcrição em sinal visível.

Por que o BBAN costuma trazer um dígito do próprio país

Vários países embutem, dentro do bloco final, um dígito verificador próprio, calculado por uma regra nacional que nada tem a ver com a regra internacional. O resultado é que a mesma sequência pode estar sujeita a duas contas independentes, com pesos e módulos diferentes.

Isso muda a forma de relatar o resultado. Quando a verificação falha, não basta dizer que o número está errado: é preciso indicar qual das duas camadas não fechou, porque as causas e as correções são diferentes. Falhar no dígito internacional sugere erro em qualquer posição da sequência; falhar no dígito nacional concentra a suspeita dentro do bloco que aquele país regula.

A leitura correta de um resultado, portanto, tem dois níveis: a sequência é aceitável segundo o padrão internacional e, além disso, é coerente segundo a regra nacional do país indicado. As duas respostas podem divergir, e essa divergência é informativa.

Trocar letras por números: a ideia por trás do mod-97

A verificação internacional não trabalha com letras diretamente. Antes de qualquer conta, a sequência é reorganizada segundo a regra do padrão, e cada letra é convertida em algarismos por um mapa fixo. Só então o conjunto é dividido por 97, e o que importa é o resto dessa divisão.

O raciocínio é o mesmo de qualquer dígito verificador: produzir um resultado que dependa de todas as posições, de modo que uma alteração isolada mude o resto. A escolha do 97 não é arbitrária — é um número primo grande o suficiente para que sequências longas tenham muitos restos distintos, o que dá poder de detecção mesmo em números com dezenas de caracteres.

Detalhar a reordenação passo a passo não ajudaria aqui, e há um motivo prático: quem implementa precisa seguir o texto do padrão, não um resumo. O que vale guardar é a forma da ideia — reordenar, converter, dividir, comparar o resto — porque é ela que explica por que a verificação funciona e por que ela não diz nada sobre a existência da conta.

Passar na verificação prova que a conta existe?

Não. A verificação mod-97 confirma apenas que a sequência foi montada de acordo com a regra publicada. Ela não consulta cadastro, não pergunta a banco nenhum e não sabe se aquela conta foi aberta, se está ativa ou se aceita receber transferências.

A distinção entre consistência e existência é a mesma que vale para qualquer outro tipo de número. Uma sequência inventada, com a estrutura correta, pode fechar a conta sem nunca ter existido. Do ponto de vista aritmético, ela é indistinguível de uma conta real, porque a conta só olha para os caracteres.

Confirmar existência exige uma consulta a quem mantém o cadastro — operação de outra natureza, mais lenta, sujeita a limites e que pode falhar. Enquanto essa consulta não acontece, a única afirmação honesta é: o formato corresponde e o dígito verificador se confirma.

Para quem desenvolve: comprimentos diferentes e desvio por país

A armadilha mais comum ao implementar verificação de IBAN é escrever uma regra de formato única. Como o comprimento total e a composição do bloco final variam por país, qualquer regra fixa vai aceitar o que não deveria e, pior, reprovar números legítimos de outros países.

Um caminho que funciona na prática:

  • Normalizar a entrada antes de tudo, removendo espaços e hífen e igualando maiúsculas e minúsculas.
  • Identificar o país pelas duas letras iniciais e buscar as regras daquele país em uma tabela de dados, não em condicionais espalhadas pelo código.
  • Aplicar primeiro a verificação internacional e depois a nacional, guardando o resultado das duas separadamente.
  • Tratar país desconhecido como ausência de regra, e não como número inválido.
  • Versionar a tabela de regras, para que decisões antigas possam ser reproduzidas quando o formato de um país mudar.

Um detalhe de interface merece atenção: exibir a versão normalizada da sequência conferida. Sem isso, quem digitou o número não consegue saber se o erro estava no valor ou na forma de escrevê-lo.

Nenhuma das sequências usadas para explicar este assunto é uma conta bancária real — são montagens didáticas. Passar na verificação mod-97 não indica que uma conta exista, pertença a alguém ou possa receber transferências.

Próximos passos

Se a dúvida é como o mod-97 se compara a outros módulos, o texto sobre algoritmos de dígito verificador coloca as três famílias lado a lado. Se o seu caso envolve um número que talvez não tenha algoritmo publicado, vale ler sobre números sem dígito verificador. E para conferir uma sequência específica, use a ferramenta de validação de número, que mostra o resultado separado por camada.

Continue lendo

Artigos sobre Validador de CPF