Finanças

Como Funciona a Validação de IBAN (e Como Encontrar um Erro Antes de Transferir)

8 min de leitura

Um IBAN é validado através de um cálculo matemático chamado checksum MOD-97: o banco (ou qualquer validador) reorganiza os caracteres do número, converte as letras em dígitos e verifica se o resultado dividido por 97 deixa resto exatamente 1. Se der qualquer outro resto, o IBAN tem pelo menos um caractere errado e a transferência não deveria seguir adiante.

No Brasil não usamos IBAN. Aqui a conta é identificada por banco, agência e número de conta, e para pagamentos entre pessoas existe o PIX. Mas isso muda no momento em que você precisa mandar dinheiro para alguém na Europa, receber um pagamento de um cliente freelancer em euros, ou fechar uma remessa internacional via SEPA. Nessas horas o IBAN aparece e, se você digitar ou copiar um número errado, o mais comum é a transferência simplesmente falhar ou ser devolvida, o que pode levar dias e, dependendo do banco, gerar tarifa. Saber como esse número é verificado ajuda a pegar o erro antes de confirmar o envio, não depois.

O que tem dentro de um IBAN

Um IBAN (International Bank Account Number) é dividido em três blocos:

  • Código do país: duas letras, o padrão ISO 3166-1 (DE para Alemanha, PT para Portugal, FR para França, e assim por diante).
  • Dígitos de verificação: dois números logo depois do código do país. É justamente esse par que o checksum MOD-97 confere.
  • BBAN (Basic Bank Account Number): o restante do número, que traz o código do banco e o número da conta propriamente dito. O formato interno do BBAN varia de país para país (quantidade de dígitos, se tem letras, ordem dos campos), por isso o comprimento total do IBAN também varia.

Vale separar uma confusão comum: IBAN não é a mesma coisa que código BIC/SWIFT. O BIC identifica o banco (é como um endereço da instituição financeira). O IBAN identifica a conta dentro daquele banco. Uma transferência internacional às vezes pede os dois números juntos, e eles têm papéis diferentes: um aponta para o banco, o outro aponta para a conta dentro dele.

E um ponto importante antes de seguir: um IBAN com checksum válido prova apenas que o número está matematicamente bem formado. Isso não é prova de que a conta existe, nem de que pertence à pessoa ou empresa que você imagina. Essa confirmação só o banco receptor consegue dar, geralmente no momento em que processa (ou rejeita) a transferência.

O checksum MOD-97, passo a passo

Vamos usar o IBAN alemão DE89 3704 0044 0532 0130 00, o exemplo canônico usado quase universalmente para explicar esse cálculo.

Passo 1: reorganizar a string. Remove os espaços e move os quatro primeiros caracteres (o código do país + os dois dígitos de verificação) para o final do número:

Original:      DE893704004405320130 00
Reorganizado:  370400440532013000 + DE89
             = 370400440532013000DE89

Passo 2: converter letras em números. Cada letra vira um número usando A=10, B=11, C=12 e assim sucessivamente até Z=35. Então D=13 e E=14:

370400440532013000DE89
370400440532013000131489

Essa é a string final: um número de 24 dígitos.

Passo 3: calcular o módulo 97. A norma ISO 13616 exige que esse número, dividido por 97, deixe resto igual a 1. Dá para fazer o cálculo dígito a dígito, sem precisar de uma calculadora que aguente 24 dígitos de uma vez, guardando o resto a cada passo (resto = (resto × 10 + dígito) mod 97):

EtapaO que acontece
String reorganizada370400440532013000131489
Resto acumulado, processado dígito a dígitovai variando a cada dígito
Resto final1
ResultadoVálido (norma exige resto = 1)

Deu 1. Esse IBAN passa no checksum.

Agora um teste prático: e se alguém digitasse o último dígito errado? Muda o IBAN de DE89 3704 0044 0532 0130 00 para DE89 3704 0044 0532 0130 01 (o último 0 virou 1). Repetindo exatamente os mesmos três passos:

Reorganizado:  370400440532013001DE89
Convertido:    370400440532013001131489
IBANÚltimo dígitoResto do MOD-97Resultado
DE89 3704 0044 0532 0130 00correto1válido
DE89 3704 0044 0532 0130 01trocado28inválido

O resto sai 28, não 1, e o checksum falha na hora, antes mesmo de qualquer contato com o banco. Foi um único dígito trocado no fim do número, e o cálculo já pegou. É por isso que esse checksum é tão usado: praticamente qualquer dígito errado ou dois dígitos invertidos por engano muda o resto da divisão e derruba a validação.

Confira o seu próprio IBAN

Cole o número abaixo e o validador roda esse mesmo cálculo MOD-97 na hora, mostrando se o IBAN é válido antes de você confirmar a transferência.

País -
Comprimento -
Checksum (MOD-97) -
Validador de Número IBAN
Grátis, sem cadastro, funciona em qualquer dispositivo.
Abrir a ferramenta completa

Erros comuns

Achar que qualquer string de 15 a 34 caracteres começando com duas letras é um IBAN válido. Não é. Cada país tem um comprimento fixo e exato. A Alemanha usa sempre 22 caracteres, a França 27, Portugal 25, e a Noruega tem o IBAN mais curto de todos, com apenas 15. Um número com o tamanho errado para aquele país já reprova antes mesmo de chegar no checksum.

PaísCódigoComprimento do IBAN
NoruegaNO15
BélgicaBE16
HolandaNL18
AlemanhaDE22
EspanhaES24
PortugalPT25
FrançaFR27
ItáliaIT27

Confundir IBAN com código BIC/SWIFT. Alguns formulários de transferência internacional pedem os dois campos na mesma tela, o que reforça essa confusão. São informações diferentes e nenhuma substitui a outra: o BIC leva a transferência até o banco certo, o IBAN leva até a conta certa dentro dele.

Achar que um checksum aprovado significa que a conta existe ou pertence à pessoa certa. O MOD-97 só verifica a estrutura matemática do número. Ele não consulta nenhum banco, não confirma titularidade e não garante que aquela conta esteja ativa. A validação de titular, quando existe, é feita pelo banco no momento do processamento da transferência.

Trocar O por 0, ou I e l por 1, ao copiar o número à mão. Isso é menos automático do que parece, porque letras são parte legítima do BBAN em vários países (não é erro ter letras no meio de um IBAN). O problema real acontece quando alguém transcreve o número de uma tela ou de um papel e troca visualmente um caractere parecido por outro. Copiar e colar direto, em vez de digitar, evita a maior parte desses deslizes.

Perguntas frequentes

O que é o MOD-97 exatamente? É o nome do algoritmo de checksum definido pela norma ISO 13616 para IBAN. Ele pega o número inteiro (com letras convertidas em dígitos e os quatro primeiros caracteres movidos para o fim), calcula o resto dessa divisão por 97 e exige que esse resto seja igual a 1 para o IBAN ser considerado bem formado.

Um checksum válido significa que a conta é real e existe? Não. Significa apenas que o número está matematicamente correto, seguindo a estrutura que aquele país define para seus IBANs. Se a conta existe, está ativa ou pertence a quem você espera, isso só o banco receptor confirma, normalmente no momento de processar a transferência.

Por que os países têm comprimentos de IBAN diferentes? Porque o BBAN (a parte que vem depois do código do país e dos dígitos de verificação) reflete o próprio sistema bancário nacional: quantos dígitos o código do banco tem, se existe um campo separado para agência, quantos dígitos o número da conta usa. Cada banco central define esse formato para seu país, e por isso o comprimento final varia, de 15 caracteres na Noruega até 27 em países como França e Itália.

Esse checksum pega qualquer tipo de erro de digitação? Pega a grande maioria, mas não é uma garantia absoluta. Um erro de digitação isolado quase sempre muda o resto da divisão por 97 e é detectado na hora, como mostrado no exemplo acima. Só existe uma exceção teórica: alguns erros muito específicos, como certas trocas de posição entre dois dígitos, podem por coincidência resultar num número que ainda dá resto 1. Isso é raro na prática, mas é o motivo pelo qual conferir o IBAN visualmente (nome do banco, país esperado) continua sendo uma boa ideia, mesmo depois do checksum passar.

IBANTransferência BancáriaSEPAPagamentos Internacionais
Validador de Número IBAN
Agora experimente você mesmo na ferramenta completa.
Experimentar agora