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 cartão de crédito realmente significa
O número de um cartão — formalmente o PAN (Primary Account Number) — e um identificador ISO/IEC 7812. A validação tem três camadas, frequentemente confundidas: formato (comprimento e dígitos), aritmética (dígito verificador Luhn mod-10) e identificação de bandeira pelos primeiros dígitos (BIN/IIN). Nenhuma delas prova que o cartão 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 lógica usada por Stripe Elements, Mercado Pago Checkout Bricks e Adyen Web Components para rejeitar erros de digitação antes de a requisição de tokenizacao sair na rede — reduzindo latencia e ruído de fraude no backend.
BIN/IIN: os primeiros 6 dígitos identificam bandeira e emissor
Os primeiros 6 dígitos (em expansão para 8) do PAN formam o Bank Identification Number / Issuer Identification Number. Identificam bandeira, banco emissor e até produto (clássico, gold, black). Principais faixas:
- Visa: começa 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 específicos (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 endereço 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 digitação em um dígito e transposicoes de dígitos adjacentes — os dois erros humanos mais comuns ao copiar um número de cartão. Procedimento:
- A partir do dígito mais a direita, dobre cada segundo dígito.
- Se o valor dobrado passar de 9, subtraia 9 (equivalente a somar seus dígitos).
- Some todos os dígitos.
- O PAN e válido 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 não valida
O CVV/CVC/CID (3 dígitos no verso para Visa, Mastercard, Discover; 4 dígitos na frente para Amex) e gerado pelo emissor usando uma chave secreta e o PAN — não da para computar offline e e intencionalmente não derivavel. A validade so checa que MM/AA e data futura. Esses dois campos, junto com o nome do titular, completam uma transação CNP (Card Not Present), mas não fornecem sinal de autorizacao até o emissor responder.
Armazenar PAN completo, CVV ou trilha magnetica em client-side ou logs não criptografados viola o PCI-DSS v4.0, padrão 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 único ou escopo limitado, de forma que o lojista nunca toque em dado sensível.
EMV, 3D Secure e SCA do PSD2
O EMV e o padrão de chip-and-PIN (Europay, Mastercard, Visa) que substituiu a tarja magnetica para transações presenciais. O 3D Secure 2.x adiciona camada de autenticação 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 cartões de teste
card-validator(Braintree, npm) — detecção 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: não rode Luhn enquanto o usuário ainda digita — vai piscar "inválido" até o último dígito. 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 dígitos identificam bandeira e emissor quando comparados com uma base BIN. Bibliotecas de detecção ja trazem as faixas comuns; para Elo e Hipercard pode ser necessária lista atualizada, ja que essas tabelas crescem anualmente.
O CVV pode trafegar em URL ou QR code? Não. O PCI-DSS proibe armazenar CVV após a autorizacao e emiti-lo por canal não criptografado e não conforme. Tokens são o veículo 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 cartão e real? Não. O Luhn so previne erro de digitação. Cerca de 10% das sequências aleatorias de 16 dígitos passam no mod-10 por acaso — so a chamada de autorizacao confirma cartão real e ativo.
O PAN de teste 4242 4242 4242 4242 e seguro para commitar? Sim. E um cartão público de teste do Stripe que so funciona em modo test e nunca cobra dinheiro. Cartões 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.
Perguntas frequentes
Validei um American Express e a bandeira não apareceu. Está errado?
Cartões de 19 dígitos funcionam?
Números de teste como 4111 1111 1111 1111 aparecem como válidos. Isso é falha?
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.
Validador de Número de Recibo
Valida formato comum de número de recibo (REC-AAAA-NNNNN ou REC.NNNNN). Aceita variações com pontos e traços. Verifica ano válido.
Validador de Número de Certidões
Valide números de certidão de nascimento, casamento ou óbito no formato CNJ de 32 dígitos. Verificação no navegador.
Validador de Matrícula de Aeronave
Valida matrícula de aeronave (PT-XYZ Brasil, N123AB EUA, G-XXXX UK, D-XXXX Alemanha) por padrão de prefixo do país.