Desenvolvimento de Software

Como funciona a numeração do cartão de crédito e o algoritmo de Luhn

Entenda o que cada parte do número de um cartão representa, o que é o BIN e como o algoritmo de Luhn valida o número antes de qualquer cobrança.

VLPor Vitor Luz
7 min de leitura

O número impresso num cartão de crédito não é aleatório: ele segue o padrão ISO/IEC 7812 e carrega informações sobre a bandeira, o banco emissor e um dígito verificador. Entender essa estrutura é essencial para quem desenvolve checkouts, gateways de pagamento ou qualquer sistema que toque em dados de cartão.

O que cada parte representa

  • Primeiro dígito (MII) — indica o setor: 4 é Visa, 5 normalmente Mastercard, 3 American Express, e assim por diante.
  • Primeiros 6 a 8 dígitos (BIN/IIN) — identificam a instituição emissora. É pelo BIN que o checkout descobre a bandeira e o banco do cartão.
  • Dígitos do meio — o número da conta do portador.
  • Último dígito — o verificador, calculado pelo algoritmo de Luhn.

O algoritmo de Luhn

O Luhn (criado nos anos 1950 por Hans Peter Luhn, da IBM) é um checksum simples: percorrendo o número da direita para a esquerda, você dobra cada segundo dígito (e, se o resultado passar de 9, subtrai 9), soma tudo, e o total precisa ser múltiplo de 10. É o que permite a um formulário de checkout detectar um número digitado errado instantaneamente, antes de qualquer comunicação com a operadora.

Por que o Luhn não é segurança

Um equívoco comum é achar que passar no Luhn significa que o cartão é 'bom'. Não significa. O Luhn só detecta erros de digitação — ele não verifica se o cartão existe, tem saldo ou está ativo. Isso só a autorização junto à operadora confirma. O Luhn é a primeira peneira, não a aprovação.

Cartões de teste e PCI-DSS

Para testar um checkout, jamais use números de cartões reais — além de inútil (não há autorização real em teste), isso pode violar o PCI-DSS, o padrão de segurança da indústria de cartões. Os gateways fornecem números de teste oficiais (como os famosos 4111 1111 1111 1111). Geradores que respeitam o Luhn produzem números estruturalmente válidos para testar máscaras, detecção de bandeira por BIN e validação de formulário, sem corresponder a nenhum cartão real.

Perguntas frequentes

Um número que passa no Luhn pode ser cobrado?

Não. Sem a autorização da operadora (que valida existência, saldo e CVV/validade), nenhum valor é cobrado. O Luhn não tem qualquer relação com a aprovação de uma compra.

Posso guardar número de cartão no meu banco de dados?

Apenas se você for compatível com PCI-DSS, o que envolve criptografia forte e auditoria. Na prática, a recomendação é nunca armazenar — use a tokenização fornecida pelo gateway de pagamento.