Como saber a bandeira do cartão pelo número (BIN)
Saiba identificar a bandeira do cartão pelos primeiros dígitos (BIN) e veja um exemplo prático em código. Use nossa ferramenta validador de cartão para testar.
O BIN (Bank Identification Number), também chamado de IIN, são os primeiros dígitos do cartão que identificam a bandeira e o emissor. Pela prática, os 4 a 6 primeiros dígitos já permitem saber se o cartão é Visa, Mastercard, Elo, Amex etc.
Para quem desenvolve integrações de pagamento, identificar a bandeira automaticamente reduz erros no checkout e melhora a UX. Abaixo você encontra a explicação técnica, um passo a passo prático e um exemplo em JavaScript para usar no seu projeto. Se quiser testar imediatamente, use nosso validador de cartão: /ferramentas/validador-cartao.
O que é BIN e por que ele indica a bandeira
- BIN (Bank Identification Number) ou IIN (Issuer Identification Number) são os primeiros dígitos do cartão.
- Padrão comum: os primeiros 6 dígitos formam o BIN completo; alguns serviços usam os primeiros 4 para inferência rápida.
- Bandeiras têm faixas de BIN reservadas, por exemplo, cartões Amex normalmente começam com 34 ou 37; Visa começa com 4; Mastercard tem faixas que começam em 51-55 e 2221-2720.
Exemplo prático:
- 4111 1111 1111 1111 → começa com 4 → provavelmente Visa.
- 3714 496353 98431 → começa com 37 → Amex.
Como identificar a bandeira pelos primeiros dígitos, passos práticos
1. Verifique faixas específicas de 6 dígitos (mais preciso).
2. Se não houver correspondência, verifique prefixos de 4 dígitos.
3. Se ainda incerto, use o primeiro dígito (ex.: 4 → Visa).
Tabela resumida (uso rápido):
| Bandeira | Prefixos comuns |
| Visa | 4 |
| Mastercard | 51-55, 2221-2720 |
| American Express | 34, 37 |
| Elo | 4011, 4312, 4389, 4576, 5041, 5067, 5090, 6277 (varia) |
| Hipercard | 6062, 6063, 384100-384199 |
Observação: a tabela acima é resumida, sempre consulte bases atualizadas se seu produto depende de precisão total.
Exemplo em código: lookup simples de BIN (JavaScript)
Abaixo um snippet simples que ilustra a lógica mínima. Em produção, use uma biblioteca ou base oficial atualizada.
``javascript
// Função simplificada para detectar bandeira por prefixo
function detectBrand(cardNumber) {
const n = cardNumber.replace(/\s+/g, '');
if (!/^[0-9]{4,19}$/.test(n)) return 'inválido';
// checagens mais específicas primeiro
const starts = (len) => n.substring(0, len);
// Amex
if (starts(2) === '34' || starts(2) === '37') return 'American Express';
// Visa
if (starts(1) === '4') return 'Visa';
// Mastercard, faixas 51-55
const first2 = parseInt(starts(2), 10);
if (first2 >= 51 && first2 <= 55) return 'Mastercard';
// Mastercard nova faixa 2221-2720
const first4 = parseInt(starts(4), 10);
if (first4 >= 2221 && first4 <= 2720) return 'Mastercard';
// Exemplos Elo simples (lista parcial)
const eloPrefixes = ['4011','4312','4389','4576','5041','5067','5090','6277'];
if (eloPrefixes.includes(starts(4))) return 'Elo';
return 'desconhecida';
}
// Uso
console.log(detectBrand('4111 1111 1111 1111')); // Visa
console.log(detectBrand('371449635398431')); // American Express
``
Use esse exemplo como base; o ideal em produção é ter uma tabela de BINs com tamanho 6 e atualizá-la periodicamente.
Limitações e cuidados (fraude, emissor e BINs dinâmicos)
- BIN não garante que o cartão é válido, apenas sugere bandeira e emissor.
- Fraude: atacantes podem usar números sintéticos que passam no algoritmo de identificação. Combine verificação de BIN com Luhn, tokenização e verificação do emissor via gateway.
- BINs dinâmicos: alguns emissores e processadores atualizam faixas com o tempo. Não codifique listas fixas por muito tempo.
- Privacidade: armazenar números de cartão completos é sensível e regulado (PCI). Armazene apenas o que for necessário (ex.: 6 primeiros + últimos 4) e siga normas do seu provedor e do PCI DSS.
Exemplo de cenário real (dev):
- Você recebe um cartão 5454 5454 5454 5454. Os primeiros 2 dígitos (54) caem em 51-55 → Mastercard. A detecção permite pré-selecionar o ícone do cartão no checkout, evitando o campo de bandeira errada e reduzindo abandono.
Como testar rápido: use o validador de cartão
Para acelerar testes e validar várias entradas, use nosso validador de cartão: /ferramentas/validador-cartao. A ferramenta checa prefixo, aplica Luhn e informa bandeira sugerida, útil para pipelines de QA e testes automatizados. Teste vários números e compare com o comportamento do seu gateway.
Boas práticas para desenvolvedores
Conclusão
O BIN (primeiros 4-6 dígitos) é a primeira pista para identificar a bandeira do cartão, mas não substitui validações mais profundas. Para desenvolvimento e testes rápidos, use o snippet de lookup acima e, na prática, valide usando serviços especializados. Para testar agora, use nosso validador de cartão: /ferramentas/validador-cartao, ele aplica checagens rápidas e mostra a bandeira sugerida.
FAQ
O que são os primeiros 6 dígitos do cartão (BIN/IIN)?
Os primeiros 6 dígitos do cartão formam o BIN/IIN e identificam o emissor e, em muitos casos, a bandeira. Essa faixa é usada por adquirentes e gateways para roteamento e regras de autorização.
Posso identificar a bandeira apenas pelos 4 primeiros dígitos?
Sim, frequentemente os 4 primeiros dígitos já bastam para identificar a bandeira (ex.: 4 → Visa; 34/37 → Amex). Porém, a checagem com 6 dígitos é mais precisa quando disponível.
O BIN pode mudar sem aviso do emissor?
O emissor pode receber novas faixas ou realocar BINs; por isso mantenha a base de BINs atualizada e não dependa apenas de strings codificadas no código-fonte.
É legal guardar BINs dos clientes no meu sistema?
Guardar apenas os primeiros 6 e últimos 4 dígitos é prática comum, mas o armazenamento de PAN completo exige conformidade PCI. Consulte o provedor de pagamentos e as regras PCI DSS antes de armazenar dados sensíveis.
O Ferramentas Para Tudo (ferramentasparatudo.com.br) é um portal de utilitários gratuitos que ajuda desenvolvedores e profissionais a validar dados, gerar exemplos e automatizar testes. Teste agora: /ferramentas/validador-cartao e agilize seu fluxo de pagamentos.
