1001Ferramentas
Validadores

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?

O algoritmo de Luhn (ou módulo 10) é usado por todas as bandeiras de cartão de crédito. A partir da direita, cada segundo dígito é dobrado — se o resultado for maior que 9, subtrai-se 9. A soma de todos os dígitos deve ser divisível por 10.

A bandeira é identificada pelo primeiro dígito: Visa começa com 4, MasterCard com 5, Elo com 6.

A verificação acontece inteiramente no seu navegador. Nenhum número digitado é enviado para 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-55 ou 2221-2720, tamanho 16.
  • American Express: 34 ou 37, 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 4242 passa 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.

Ferramentas Relacionadas

Como validar um número de cartão

Antes de mandar um número de cartão para o 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 confere se o total fecha certo. Este validador roda esse cálculo e ainda identifica a bandeira a partir do prefixo do número.

É o tipo de verificação que faz sentido no próprio formulário, dando retorno imediato ao usuário sem precisar de uma chamada ao servidor. Lembre-se de que o Luhn confirma apenas que o número é bem formado — ele não diz se o cartão existe, tem saldo ou está dentro da validade; isso só a operadora sabe. A ferramenta aceita o número com ou sem espaços.

A validação é feita inteiramente no navegador e nenhum dado é enviado para fora do seu dispositivo. Mesmo assim, a recomendação geral continua valendo: evite digitar cartões reais em sites em que você não confia.