1. Estrutura do Numero de Cartao
O numero de um cartao de credito (PAN — Primary Account Number) segue a norma ISO/IEC 7812 e e composto por ate 19 digitos com a seguinte estrutura:
- IIN/BIN (Issuer Identification Number): os primeiros 6 digitos identificam a instituicao emissora e a bandeira do cartao.
- Numero da conta: os digitos intermediarios (variando conforme a bandeira) identificam a conta do portador.
- Digito verificador (ultimo digito): calculado pelo algoritmo de Luhn a partir de todos os digitos anteriores.
A maioria dos cartoes de credito tem 16 digitos (Visa, Mastercard, Elo), enquanto American Express usa 15 e Diners usa 14.
2. Identificacao de Bandeiras por Prefixo
Cada bandeira reserva faixas especificas de prefixos IIN:
- Visa: comeca com 4 (ex: 4xxx xxxx xxxx xxxx)
- Mastercard: comeca com 51-55 ou 2221-2720
- American Express: comeca com 34 ou 37
- Elo: prefixos especificos como 636368, 438935, 504175, 451416
- Hipercard: comeca com 38 ou 60
- Diners Club: comeca com 300-305, 36 ou 38
3. O Algoritmo de Luhn Explicado
O algoritmo de Luhn, criado em 1954 por Hans Peter Luhn da IBM, e um metodo simples de checksum usado para validar numeros de identificacao. Para um numero de cartao:
- Comecando pelo penultimo digito e indo para a esquerda, duplique cada segundo digito.
- Se o resultado da duplicacao for maior que 9, subtraia 9.
- Some todos os digitos (os dobrados e os nao dobrados).
- Se a soma total for divisivel por 10, o numero e valido.
"O algoritmo de Luhn nao foi projetado para proteger contra ataques maliciosos deliberados — mas sim para detectar erros acidentais de digitacao, que eram o principal problema nas transacoes por telefone e correio da decada de 1950."
4. Por Que Validar Numeros de Cartao
- E-commerce e plataformas de pagamento: validar o numero antes de enviar ao gateway de pagamento reduz chamadas desnecessarias a API e melhora a experiencia do usuario.
- Desenvolvimento e testes: verificar se campos de cartao aceitam apenas numeros validos e rejeitam entradas incorretas.
- Automacao de testes (QA): usar numeros validos em testes de fluxo de checkout sem processar transacoes reais.
- Analise de dados: validar numeros de cartao em bases de dados antes de processamento em lote.
5. Como Usar o Validador
- Digite o numero do cartao: insira os 13 a 19 digitos — a bandeira e detectada automaticamente a partir do 4o digito.
- Clique em "Validar Cartao": o algoritmo de Luhn e aplicado instantaneamente.
- Veja o resultado: o sistema confirma se o numero e valido e exibe a bandeira identificada.
6. Perguntas Frequentes
Um numero valido aqui significa que o cartao existe?
Nao. O algoritmo de Luhn verifica apenas a consistencia matematica do numero. Para que um cartao exista, ele precisa ter sido emitido por um banco — o que envolve processos completamente diferentes. Numeros que passam no Luhn mas nao existem serao rejeitados ao tentar processar uma transacao real.
E seguro digitar numeros de cartao reais aqui?
Todo o processamento e feito localmente no seu navegador via JavaScript. Nenhum dado e enviado a servidores. Mesmo assim, recomendamos usar esta ferramenta apenas com numeros ficticios para testes — nao com numeros de cartoes reais, por principio de segurança.
Por que minha bandeira nao e detectada?
A deteccao de bandeira e baseada nos prefixos IIN padronizados. Bandeiras menos comuns ou emissores regionais podem usar prefixos nao mapeados nesta ferramenta. Nesse caso, o numero ainda pode ser validado pelo Luhn, mas a bandeira aparecera como "Desconhecida".
Posso usar para testar sistemas de pagamento?
Sim, para validar campos de formulario e mascaras de input. Para testes de transacoes reais em ambientes de desenvolvimento, utilize os numeros de cartao de teste fornecidos pelos proprios gateways (Stripe, PagSeguro, Mercado Pago etc.), que sao aceitos em modo sandbox sem processar cobranças reais.