Como validar um cartão de crédito com o algoritmo de Luhn
O que o algoritmo de Luhn verifica (e o que não verifica), o cálculo passo a passo, a identificação da bandeira pelo BIN e a fronteira ética dos números de teste.
Atualizado em 30 de junho de 2026 · 7 min de leitura
O que o algoritmo de Luhn verifica (e o que não verifica)
O algoritmo de Luhn, também chamado de "fórmula módulo 10", foi criado em 1954 por Hans Peter Luhn, um engenheiro da IBM. Ele é um dígito verificador: uma conta simples que detecta erros de digitação antes que o número saia do seu formulário. Praticamente todas as bandeiras de cartão (Visa, Mastercard, Amex, Elo, Hipercard) seguem essa regra, padronizada pela norma ISO/IEC 7812.
O ponto que mais gera confusão é o que o Luhn não faz. Ele não consulta nenhum banco, não diz se o cartão existe, se está ativo, se tem saldo ou a quem pertence. Um número pode passar perfeitamente no Luhn e ser puro inventado. O que o teste garante é apenas isto: a sequência é internamente consistente.
Pense no Luhn como o corretor ortográfico do número do cartão. Ele pega quase 100% dos erros de um único dígito trocado e a maioria das trocas de dígitos vizinhos (digitar "21" em vez de "12"). Mas "está escrito corretamente" é bem diferente de "esse cartão é real e tem limite" — isso só a operadora confirma.
Por isso o Luhn é a primeira camada de validação, não a última. No checkout, ele descarta de imediato um número digitado errado, poupando uma ida desnecessária ao gateway de pagamento. Quem quer só conferir essa consistência sem escrever código pode colar o número no Validador de Número de Cartão de Crédito e ver o resultado na hora.
O cálculo de Luhn passo a passo
A receita tem quatro passos. Vamos aplicá-la a um número de teste válido: 4539 1488 0343 6467.
- Comece pelo dígito mais à direita (o próprio dígito verificador) e caminhe para a esquerda.
- Dobre o valor de cada segundo dígito — ou seja, o 2º, o 4º, o 6º, contando a partir da direita.
- Se a multiplicação passar de 9, subtraia 9 (o que é o mesmo que somar os dois algarismos: 16 vira 1+6 = 7).
- Some todos os dígitos resultantes. Se o total terminar em zero (total ÷ 10 sem resto), o número é válido.
No nosso número, os dígitos que ocupam as posições pares a partir da direita são 4, 3, 1, 8, 0, 4, 6 e 6. Cada um é dobrado e, se passar de 9, reduzido:
| Dígito original | × 2 | Reduzido (−9 se > 9) |
|---|---|---|
| 4 | 8 | 8 |
| 3 | 6 | 6 |
| 1 | 2 | 2 |
| 8 | 16 | 7 |
| 0 | 0 | 0 |
| 4 | 8 | 8 |
| 6 | 12 | 3 |
| 6 | 12 | 3 |
A soma dos dígitos dobrados é 8 + 6 + 2 + 7 + 0 + 8 + 3 + 3 = 37. Agora some os dígitos que não foram dobrados (as posições ímpares a partir da direita): 7 + 4 + 3 + 3 + 8 + 4 + 9 + 5 = 43.
Total geral: 37 + 43 = 80. Como 80 termina em zero, o número passa no teste de Luhn. Se trocássemos um único dígito — digamos, 4539 1488 0343 6467 → 4539 1488 0343 6567 — a soma viraria 81, não divisível por 10, e o número seria rejeitado na mesma hora.
Um detalhe que confunde: conte sempre da direita
Por que dobrar a partir da direita, e não da esquerda? Porque o comprimento dos cartões varia — Visa e Mastercard têm 16 dígitos, American Express tem 15, Diners tem 14. Ancorar a contagem no dígito verificador (sempre o último) faz a regra valer para qualquer comprimento. Se você dobrasse a partir da esquerda, um número de 15 dígitos dobraria os algarismos errados.
Como identificar a bandeira pelo BIN/IIN
Os primeiros dígitos do cartão não são aleatórios. Eles formam o IIN (Issuer Identification Number), historicamente chamado de BIN (Bank Identification Number). Pela ISO/IEC 7812, o primeiro dígito é o MII (Major Industry Identifier): 4 e 5 são instituições financeiras, 3 é viagem e entretenimento (onde mora a Amex), 6 é varejo e bancos.
Os primeiros 6 a 8 dígitos identificam a bandeira e o emissor. Os intervalos mais comuns:
| Bandeira | Início | Dígitos |
|---|---|---|
| Visa | 4 | 16 (alguns 13 ou 19) |
| Mastercard | 51–55 e 2221–2720 | 16 |
| American Express | 34 e 37 | 15 |
| Elo | 4011, 4312, 5066, 6362… | 16 |
| Hipercard | 606282 | 16 |
| Diners Club | 300–305, 36, 38 | 14 |
É por isso que um formulário de checkout consegue mostrar o logo da bandeira certa enquanto você ainda digita: ele lê os primeiros dígitos e cruza com essas faixas. O dígito verificador de Luhn e a identificação por BIN são checagens independentes — uma confere a consistência, a outra diz quem emitiu.
Números de teste vs números reais: a fronteira legal e ética
Como o Luhn é uma fórmula pública e determinística, é trivial gerar números que passam no teste. Operadoras e gateways de pagamento (Stripe, PagSeguro, Cielo) publicam números de teste exatamente para isso: 4242 4242 4242 4242, por exemplo, é um número Visa de teste clássico que passa no Luhn (a soma dá 80) e nunca corresponde a um cartão real.
Esses números servem para desenvolvimento e QA: validar a lógica do formulário, testar o fluxo de erro, conferir a integração com o gateway no ambiente sandbox. Um Gerador de Número de Cartão de Crédito produz sequências sintéticas e válidas-pelo-Luhn justamente para alimentar esses testes.
A fronteira é clara: gerar números para testar o seu próprio código é normal; usá-los para tentar uma compra, fraudar um cadastro ou burlar um período de teste gratuito é fraude — crime de estelionato no Brasil (art. 171 do Código Penal). O gerador não cria saldo, não corresponde a uma conta e jamais autoriza uma transação real. Estas informações têm caráter educativo.
Onde a validação de Luhn aparece em formulários e checkout
Na prática, o Luhn vive no front-end. Assim que o campo do cartão perde o foco, um trecho de JavaScript roda a fórmula e, se ela falhar, mostra "número inválido" sem nem tocar no servidor. É uma validação barata que melhora a experiência: o cliente corrige o erro de digitação na hora, em vez de esperar a recusa do gateway alguns segundos depois.
O fluxo completo de um checkout costuma ser:
- Formato e Luhn — o número tem o tamanho certo e passa no módulo 10? Se não, erro imediato no navegador.
- BIN — os primeiros dígitos batem com uma bandeira aceita pela loja? Mostra o logo e ajusta a máscara (Amex tem 15 dígitos e CVV de 4).
- Autorização — só então os dados criptografados vão ao gateway, que pergunta ao emissor se a transação é aprovada. É aqui, e só aqui, que se sabe se o cartão é real e tem limite.
Repare como o Luhn ocupa o primeiro degrau e nada além disso. Ele é um filtro de erro de digitação, não uma prova de autenticidade. Para conferir rapidamente se um número está bem formado, o Validador de Número de Cartão de Crédito aplica exatamente esse primeiro degrau e ainda aponta a bandeira pelo BIN.
Perguntas frequentes
Passar no algoritmo de Luhn significa que o cartão é válido?
Não. Significa apenas que a sequência de dígitos é internamente consistente — sem erro de digitação detectável. O cartão pode não existir, estar cancelado ou sem limite. Só a operadora, no momento da autorização, confirma se ele é real e funciona.
Por que o último dígito do cartão parece aleatório?
Porque ele não é escolhido: é calculado. O dígito verificador é definido como o valor que faz a soma de Luhn fechar num múltiplo de 10. Ele existe só para detectar erros de digitação no resto do número.
O Luhn protege contra fraude?
Não. Ele não é um algoritmo de segurança nem de criptografia — é só detecção de erro. Qualquer pessoa pode gerar números que passam no teste. A proteção real vem de tokenização, CVV, 3-D Secure e da autorização do emissor.
Todas as bandeiras usam o algoritmo de Luhn?
Praticamente todas as redes de cartão (Visa, Mastercard, American Express, Elo, Discover, Diners, JCB) emitem números que respeitam o Luhn, conforme a ISO/IEC 7812. Houve raras exceções históricas, mas para os cartões em circulação hoje a regra vale.
Posso usar um número gerado para fazer uma compra?
Não. Um número que passa no Luhn não tem conta, saldo nem autorização por trás. Tentar usá-lo numa compra real é fraude. Os geradores existem para testar código em ambiente sandbox, não para transacionar.
Ferramentas citadas neste guia
Validador de Número de Cartão de Crédito
Valide números de cartão de crédito pelo algoritmo Luhn. Identifica a bandeira e verifica o dígito verificador, sem enviar dados para servidores.
Gerador de Número de Cartão de Crédito
Gere números de cartão de crédito válidos pelo algoritmo Luhn para testes de e-commerce e pagamentos. Suporta Visa, MasterCard e Elo. Apenas para testes.
Continue lendo
Como funciona a validação de CPF e CNPJ (o dígito verificador)
O passo a passo do dígito verificador do CPF e do CNPJ pelo módulo 11, o novo CNPJ alfanumérico e por que validar o formato não confirma que o número existe.
9 min de leitura
Chave Pix: os tipos, como validar e o QR Code Pix por dentro
Os cinco tipos de chave Pix, como cada um é formatado, como validar antes de salvar e o que é o BR Code por trás do Pix copia-e-cola.
8 min de leitura