O último dígito de um cartão não é aleatório — é um dígito verificador criado para detectar exatamente o tipo de erro que alguém comete ao copiar um número longo à mão, num formulário de pagamento.
Como funciona o algoritmo de Luhn
O algoritmo percorre os dígitos do número da direita para a esquerda, dobra cada segundo dígito e, se o resultado ultrapassar 9, subtrai 9 dele. Se o número foi digitado corretamente, a soma de todos os dígitos resultantes é múltipla de 10.
Uma invenção da IBM nos anos 50, não da Visa ou da Mastercard
O algoritmo tem o nome de Hans Peter Luhn, cientista da IBM que o patenteou em 1954 como um método geral para detectar erros de transcrição em qualquer sequência de dígitos, sem relação direta com cartões bancários. As redes de pagamento o adotaram depois justamente porque é barato de calcular e detecta os dois erros manuais mais comuns: um dígito digitado errado ou dois dígitos vizinhos trocados de lugar.
Elo: uma bandeira própria ao lado de Visa e Mastercard
No Brasil, além das bandeiras internacionais, circula desde 2011 a bandeira Elo, criada por um consórcio de bancos brasileiros (Bradesco, Banco do Brasil e Caixa) como alternativa nacional. Cartões Elo passam pela mesma verificação de Luhn — o algoritmo não é exclusivo de nenhuma bandeira —, mas usam faixas de BIN próprias, diferentes das de Visa e Mastercard.
Por que passar na verificação de Luhn não significa que o cartão existe
A verificação de Luhn confirma apenas a estrutura matemática do número, não que exista uma conta real por trás dele. É trivial gerar milhões de números que passam nesse teste sem que nenhum esteja vinculado a um cartão real — por isso toda transação real ainda precisa passar pelo banco emissor para a verificação que realmente importa.
Para que serve
- Detectar um número de cartão digitado errado antes de enviar um formulário ao servidor.
- Descartar rapidamente um erro de digitação ao inserir manualmente um número longo.
- Entender o que a verificação de Luhn realmente comprova e o que ela não comprova.
Identificar a bandeira pelo número do cartão (BIN)
Os primeiros dígitos do número formam o BIN (Bank Identification Number), que identifica a bandeira antes mesmo da verificação completa de Luhn. Números da Visa começam com 4, da Mastercard com a faixa 51–55 ou a mais recente 2221–2720, e da American Express com 34 ou 37. É por causa desse prefixo que um formulário de pagamento já mostra o ícone certo enquanto o número ainda está sendo digitado.