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.
Como funciona o algoritmo Luhn?
Todas as bandeiras de cartão de crédito recorrem ao algoritmo de Luhn, também chamado de módulo 10. Partindo da direita, você dobra cada segundo dígito; quando o resultado passa de 9, basta subtrair 9. Se a soma de todos os dígitos for divisível por 10, o número é válido.
Quem dá a pista da bandeira é o primeiro dígito. Visa começa com 4, MasterCard com 5 e Elo com 6.
Toda a verificação roda dentro do seu navegador. Nenhum número que você digita chega a servidores.
De Luhn ao PCI-DSS: o que validar um cartao de credito realmente significa
O numero de um cartao — formalmente o PAN (Primary Account Number) — e um identificador ISO/IEC 7812. A validacao tem tres camadas, frequentemente confundidas: formato (comprimento e digitos), aritmetica (digito verificador Luhn mod-10) e identificacao de bandeira pelos primeiros digitos (BIN/IIN). Nenhuma delas prova que o cartao existe, esta ativo, tem saldo ou pertence a quem o apresenta; so uma chamada de autorizacao ao emissor responde isso.
Este validador client-side roda as duas primeiras camadas offline. E a mesma logica usada por Stripe Elements, Mercado Pago Checkout Bricks e Adyen Web Components para rejeitar erros de digitacao antes de a requisicao de tokenizacao sair na rede — reduzindo latencia e ruido de fraude no backend.
BIN/IIN: os primeiros 6 digitos identificam bandeira e emissor
Os primeiros 6 digitos (em expansao para 8) do PAN formam o Bank Identification Number / Issuer Identification Number. Identificam bandeira, banco emissor e ate produto (classico, gold, black). Principais faixas:
- Visa: comeca com
4, tamanho 13/16/19. - Mastercard:
51-55ou2221-2720, tamanho 16. - American Express:
34ou37, tamanho 15. - Discover:
6011,65, tamanho 16. - Diners Club:
36, tamanho 14/16. - JCB:
35, tamanho 16. - Elo (Brasil): BINs especificos (ex.:
40117,431274,451416,50670,506699,506715,509000-509999,627780,636297), tamanho 16. - Hipercard (Brasil):
606282, tamanho 16.
No Brasil, Visa e Mastercard dominam cerca de 80% do mercado. A Elo — joint venture de Banco do Brasil, Bradesco e Caixa — fica em torno de 13% e o Hipercard (Itau) tem ~3%. Plataformas antifraude como ClearSale, Konduto e Adyen Antifraud usam o BIN como sinal precoce: um BIN Visa de pais com alto risco combinado a endereco de entrega brasileiro aumenta o score de fraude antes mesmo de chamar o gateway.
O algoritmo Luhn mod-10
Hans Peter Luhn (IBM, 1954) desenhou o mod-10 para capturar erros de digitacao em um digito e transposicoes de digitos adjacentes — os dois erros humanos mais comuns ao copiar um numero de cartao. Procedimento:
- A partir do digito mais a direita, dobre cada segundo digito.
- Se o valor dobrado passar de 9, subtraia 9 (equivalente a somar seus digitos).
- Some todos os digitos.
- O PAN e valido se
soma mod 10 == 0.
4539 1488 0343 6467
digitos dobrados (D->E, pos par):
8,3,7,9,4,4,1,1
soma = 80, 80 mod 10 = 0 -> valido
CVV, validade e o que o cliente nao valida
O CVV/CVC/CID (3 digitos no verso para Visa, Mastercard, Discover; 4 digitos na frente para Amex) e gerado pelo emissor usando uma chave secreta e o PAN — nao da para computar offline e e intencionalmente nao derivavel. A validade so checa que MM/AA e data futura. Esses dois campos, junto com o nome do titular, completam uma transacao CNP (Card Not Present), mas nao fornecem sinal de autorizacao ate o emissor responder.
Armazenar PAN completo, CVV ou trilha magnetica em client-side ou logs nao criptografados viola o PCI-DSS v4.0, padrao mantido pelo PCI Security Standards Council (Visa, Mastercard, Amex, Discover, JCB). Fintechs modernas evitam o problema via tokenizacao: Stripe, Mercado Pago e Adyen substituem o PAN por token de uso unico ou escopo limitado, de forma que o lojista nunca toque em dado sensivel.
EMV, 3D Secure e SCA do PSD2
O EMV e o padrao de chip-and-PIN (Europay, Mastercard, Visa) que substituiu a tarja magnetica para transacoes presenciais. O 3D Secure 2.x adiciona camada de autenticacao frictionless em fluxos CNP; sob PSD2 europeu, implementa Strong Customer Authentication (SCA), exigindo dois fatores entre conhecimento, posse e inerencia. No Brasil, a regulacao de open finance do Bacen empurra emissores para step-up biometrico equivalente.
Bibliotecas e cartoes de teste
card-validator(Braintree, npm) — deteccao de bandeira + Luhn usada no Drop-in UI.creditcards(npm) — Luhn puro + helpers de formato.- PAN de teste Stripe:
4242 4242 4242 4242passa no Luhn, bandeira = Visa. - Adyen / Mercado Pago publicam PANs de teste por bandeira nos dashboards.
Alerta de anti-pattern: nao rode Luhn enquanto o usuario ainda digita — vai piscar "invalido" ate o ultimo digito. Valide apenas em blur, em colagem, ou quando o comprimento bater com o esperado para a bandeira detectada.
FAQ
Da para detectar a bandeira so pelo BIN? Sim. Os 6 (agora 8) primeiros digitos identificam bandeira e emissor quando comparados com uma base BIN. Bibliotecas de deteccao ja trazem as faixas comuns; para Elo e Hipercard pode ser necessaria lista atualizada, ja que essas tabelas crescem anualmente.
O CVV pode trafegar em URL ou QR code? Nao. O PCI-DSS proibe armazenar CVV apos a autorizacao e emiti-lo por canal nao criptografado e nao conforme. Tokens sao o veiculo certo para pagamentos recorrentes.
Tokens substituem o PAN ponta a ponta? Sim. Stripe, Mercado Pago e Adyen emitem tokens com escopo que referenciam o PAN salvo apenas dentro do cofre deles. Seu backend guarda o token; o PAN nunca entra no seu banco, reduzindo drasticamente o escopo PCI-DSS.
Passar no Luhn significa que o cartao e real? Nao. O Luhn so previne erro de digitacao. Cerca de 10% das sequencias aleatorias de 16 digitos passam no mod-10 por acaso — so a chamada de autorizacao confirma cartao real e ativo.
O PAN de teste 4242 4242 4242 4242 e seguro para commitar? Sim. E um cartao publico de teste do Stripe que so funciona em modo test e nunca cobra dinheiro. Cartoes reais nunca podem ir para o git nem para logs compartilhados.
Como validar um número de cartão
Antes de mandar um número de cartão pro gateway, vale uma checagem rápida que pega a maioria dos erros de digitação: o algoritmo de Luhn. Ele soma os dígitos com um peso alternado e vê se o total fecha. O validador roda esse cálculo e ainda identifica a bandeira pelo prefixo do número.
É o tipo de verificação que faz sentido dentro do próprio formulário, devolvendo a resposta ao usuário sem precisar de uma ida ao servidor. Só não confunda: o Luhn confirma que o número é bem formado, nada além disso. Ele não sabe se o cartão existe, tem saldo ou está na validade. Isso só a operadora responde. Pode digitar com ou sem espaços.
A validação roda inteira no navegador e nenhum dado sai do seu dispositivo. Ainda assim, a recomendação de sempre continua de pé: evite digitar cartões reais em sites em que você não confia.
Leia mais sobre isso
Ferramentas Relacionadas
Validador de BIN (Bandeira do Cartão)
Identifica a bandeira (Visa, Master, Elo, Hipercard, Amex, JCB etc.) e tipo (crédito/débito) a partir dos primeiros 6-8 dígitos do cartão.
Validador Luhn (genérico)
Valida qualquer sequência numérica pelo algoritmo Luhn (mod 10) — usado em cartões de crédito, IMEI, ICCID e outros identificadores. Mostra dígito verificador.
Validador de Número de Pedido
Valida formatos comuns de número de pedido em e-commerce: PED-XXXX, ORDER-NNNN, #N alfanumérico. Detecta tipo automaticamente.