O que o validador confere
Dá para verificar três coisas em um número de cartão sem consultar banco nenhum. O validador checa as três e mostra o resultado de cada uma:
- Faixa do emissor (IIN). Os primeiros dígitos identificam a bandeira: 4 para Visa, 51–55 ou 2221–2720 para Mastercard, 34 ou 37 para American Express, 6011/644–649/65 para Discover, 3528–3589 para JCB, e assim por diante.
- Quantidade de dígitos. Cada bandeira aceita tamanhos específicos: 15 dígitos no Amex, 14 na maioria dos Diners Club, 16 em quase todos os outros e até 19 em alguns cartões Visa, Discover, JCB, UnionPay e Maestro.
- Soma de verificação de Luhn. O último dígito é o dígito verificador. A fórmula de Luhn detecta qualquer erro em um único dígito e a maioria das trocas entre dois dígitos vizinhos.
Se as três verificações passarem, o número está bem formado. Isso é tudo o que um site consegue saber sozinho: se a conta existe, está ativa ou tem limite, só o banco emissor sabe — e ele confere isso quando um pagamento é autorizado.
O algoritmo de Luhn passo a passo
Veja o cálculo para o número de teste 4111 1111 1111 1111. A partir da direita, um dígito sim, outro não é dobrado; quando o dobro passa de 9, subtrai-se 9. Em seguida, todos os valores são somados:
| Dígito | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dobra? | 8 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – | 2 | – |
| Valor somado | 8 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 |
O total é 30. Como 30 é divisível por 10, o número passa. Se você trocar um único dígito, a soma muda e deixa de ser múltipla de 10 — faça o teste no validador acima e veja qual dígito verificador o número alterado precisaria ter.
Estrutura de um número de cartão
| Parte | Dígitos | Significado |
|---|---|---|
| Identificador do setor (MII) | 1º | Setor: 3 viagens e entretenimento, 4–5 bancos e finanças, 6 comércio e bancos |
| Número de identificação do emissor (IIN / BIN) | Os 6–8 primeiros | Bandeira e banco emissor, tipo de cartão (crédito, débito, pré-pago) e país |
| Identificador da conta | Os do meio | Definido pelo emissor para cada cartão |
| Dígito verificador | O último | Calculado pelo algoritmo de Luhn a partir de todos os outros |
Dicas para validar cartões no seu próprio checkout
Se você está implementando a validação do número do cartão no seu formulário de pagamento, estas práticas evitam recusas indevidas e deixam a experiência mais clara para o cliente:
- Limpe a entrada primeiro: remova espaços e hífens antes de qualquer verificação, porque muita gente digita o número em blocos, do jeito que aparece no cartão.
- Confira tamanho e IIN antes do Luhn: assim você consegue mostrar mensagens de erro específicas, como “número incompleto” ou “bandeira não aceita”, em vez de um genérico “cartão inválido”.
- Valide enquanto o usuário digita, mas não bloqueie BINs desconhecidos: novas faixas surgem com frequência — foi o caso da série 2 da Mastercard e de bandeiras nacionais como Elo e Hipercard.
- Lembre que o Luhn é só uma checagem de formato: quem aprova ou recusa o pagamento é o gateway e o banco emissor.
- Nunca registre nem armazene números completos de cartão em ambientes de desenvolvimento ou homologação (PCI DSS e LGPD): use números de teste no lugar.
Quando usar um validador de cartão
- Para descobrir por que o formulário de pagamento recusa o número que um cliente digitou.
- Para revisar fixtures e massas de teste antes de importá-las.
- Para comparar o seu próprio código de validação com uma implementação de referência.
- Para entender — e ensinar em sala de aula — como os números de cartão são montados.
Se o que você precisa são números para os seus testes, o gerador de cartão de crédito cria lotes de até 1.000 cartões de teste com vencimento e CVV, prontos para exportar em CSV, JSON ou XML. Lembre-se: mesmo passando nesta validação, eles continuam sendo dados fictícios, e nenhum gateway em produção vai aceitá-los como pagamento.
Perguntas frequentes
Se o resultado for válido, o cartão existe?
Não. O validador confere apenas o formato. Se a conta existe, está ativa ou tem limite disponível, só o banco emissor pode confirmar, no momento em que autoriza um pagamento.
É seguro colar um número real aqui?
A verificação é feita em JavaScript no seu próprio dispositivo e o número nunca chega ao nosso servidor. Mesmo assim, por precaução, evite colar números de cartões reais em qualquer site sem necessidade.
Que erros o algoritmo de Luhn detecta?
Ele pega qualquer erro de digitação em um único dígito e a maioria das trocas entre dois dígitos vizinhos. É por isso que os formulários o usam para avisar na hora, antes de o pagamento ser enviado.
Por que o meu número aparece como inválido?
Quase sempre é erro de digitação: basta um dígito errado para a soma de Luhn falhar. O validador mostra qual dígito verificador o número precisaria ter, para você enxergar a diferença na hora.