Skip to main content
CheckTown
Validadores

Validador de cartão de crédito: Como o algoritmo de Luhn detecta números inválidos

Publicado 6 min de leitura
Neste artigo

O que é a validação de cartão de crédito?

A validação de cartão de crédito é o processo de verificar se um número de cartão é estruturalmente válido antes de tentar uma transação. Isso inclui verificar o formato do número, aplicar o algoritmo de checksum de Luhn e detectar a bandeira do cartão (Visa, Mastercard, Amex, etc.) com base nos primeiros dígitos.

A validação não é o mesmo que autorização. Um número de cartão válido significa que o formato e o checksum estão corretos — não confirma que o cartão exista, tenha fundos ou pertença à pessoa que o está usando. A autorização real requer contato com o emissor do cartão através da rede de pagamento.

Como funciona o algoritmo de Luhn

O algoritmo de Luhn (também chamado de algoritmo módulo 10) é uma fórmula simples de checksum inventada por Hans Peter Luhn em 1954. Ele detecta erros acidentais em números de cartão — dígitos transpostos, erros de um único dígito e a maioria dos erros de digitação comuns. Veja como funciona passo a passo.

  • Começando pelo dígito mais à direita (dígito de verificação), duplique cada segundo dígito movendo-se para a esquerda
  • Se a duplicação produzir um número maior que 9, subtraia 9 do resultado (por exemplo, 8 x 2 = 16, depois 16 - 9 = 7)
  • Some todos os dígitos — tanto os duplicados/ajustados quanto os inalterados
  • Se o total for divisível por 10 (módulo 10 igual a 0), o número é válido segundo Luhn

Por exemplo, o número 4532015112830366: após aplicar o algoritmo, a soma dos dígitos é 40, que é divisível por 10, então passa na verificação de Luhn. Este algoritmo detecta aproximadamente 95% dos erros de um único dígito e todos os erros de transposição de dígitos adjacentes.

Experimente gratuitamente — sem cadastro

Validar um número de cartão de crédito →

Detecção do tipo de cartão por BIN

O Número de Identificação Bancária (BIN) — os primeiros 6 a 8 dígitos de um número de cartão — identifica a bandeira do cartão e o banco emissor. Cada rede tem prefixos distintos e requisitos de comprimento.

  • Visa — começa com 4, normalmente 16 dígitos (alguns cartões mais antigos têm 13)
  • Mastercard — começa com 51-55 ou 2221-2720, sempre 16 dígitos
  • American Express — começa com 34 ou 37, sempre 15 dígitos
  • Discover — começa com 6011, 65 ou 644-649, sempre 16 dígitos

Casos de uso comuns

A validação de cartão de crédito do lado do cliente serve a vários propósitos práticos em aplicações web e processos empresariais.

  • Checkout de e-commerce — validar o formato do cartão antes de enviar ao processador de pagamento para reduzir transações falhadas e chamadas de API
  • UX do formulário de pagamento — mostrar o ícone do tipo de cartão (Visa, Mastercard, etc.) em tempo real enquanto o usuário digita e destacar erros imediatamente
  • Prevenção de fraude — interceptar números claramente inválidos antes que cheguem ao gateway de pagamento, reduzindo taxas de processamento para transações recusadas
  • Geração de cartões de teste — desenvolvedores usam números de teste válidos segundo Luhn (como 4111 1111 1111 1111 para Visa) para testar fluxos de pagamento sem cartões reais

Considerações de segurança

A validação de cartão de crédito é uma verificação de formato, não uma medida de segurança. Compreender suas limitações é fundamental para construir sistemas de pagamento seguros.

  • A validação do lado do cliente detecta erros de digitação, mas não pode detectar cartões roubados ou cancelados — sempre processe através de um gateway de pagamento compatível com PCI DSS
  • Nunca armazene números de cartão completos — use serviços de tokenização do seu provedor de pagamento (Stripe, Braintree, Adyen) para substituir dados do cartão por tokens seguros
  • A conformidade com PCI DSS exige que os dados do titular do cartão nunca toquem seus servidores — use campos de pagamento hospedados ou fluxos de checkout baseados em redirecionamento

Perguntas frequentes

O algoritmo de Luhn pode produzir falsos positivos?

Sim. O algoritmo de Luhn valida apenas o checksum — confirma que o número é matematicamente consistente, não que um cartão real com esse número exista. Você pode gerar infinitos números válidos segundo Luhn que não correspondem a nenhum cartão emitido. É por isso que a validação de Luhn deve sempre ser seguida de autorização real com a rede do cartão.

Os números de cartões virtuais seguem as mesmas regras?

Sim. Os números de cartões virtuais gerados por bancos e serviços como Apple Pay, Google Pay ou Privacy.com seguem as mesmas regras de prefixo BIN e checksum de Luhn que os cartões físicos. São números de cartão válidos emitidos pelas mesmas redes — a única diferença é que podem ser temporários, de uso único ou limitados a comerciantes específicos.

Quais números de cartão de teste posso usar para desenvolvimento?

Os processadores de pagamento fornecem números de teste específicos: Visa 4111 1111 1111 1111, Mastercard 5500 0000 0000 0004, Amex 3782 822463 10005, Discover 6011 1111 1111 1117. Estes passam na validação de Luhn e são reconhecidos por ambientes de teste/sandbox. Nunca use números de cartão reais para testes — mesmo em desenvolvimento, use apenas números de teste oficiais do seu provedor de pagamento.

Ferramentas relacionadas