Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Bin de cartões de crédito para validação

Validação para cartão de crédito.

Bin e padrões para validação de cartão de crédito.

Bandeira Começa com Máximo de número Máximo de número cvc
Visa 4 13,16 3
Mastercard 5 16 3
Diners 301,305,36,38 (http://bin-iin.com/American-Express-BIN-List.html) 14,16 3
Elo 636368, 636369, 438935, 504175, 451416, 636297,5067,4576,4011,506699 16 3
Amex 34,37 15 4
Discover 6011,622,64,65 16 4
Aura 50 16 3
jcb 35 16 3
Hipercard 38,60 13,16,19 3

Atualização (23/07/2014):

Os dados dos cartões: Elo, Hipercard desta tabela não são oficiais. Tentei diversas vezes falar com o pessoal dessas bandeiras afim de ter uma informação oficial, porém, é muito difícil falar com o setor técnico e as atendentes nem sabem o que é bin de cartão e nem sabem do que estou falando :(

Essa tabela foi montada através de coleta de dados de cartões reais. Onde o usuário colocava o número de cartão de crédito dele e quando não conseguíamos saber qual a banheira pedíamos para que o usuário selecionasse a bandeira. A partir deste momento coletávamos os primeiros dígitos do cartão.

Eu atualizei essa tabela até o mês de Agosto/2013. Não sei se teve atualizações desde então. De qualquer forma acredito que é uma boa tabela de referência e acredito que a busca pelo padrão continua pois deve ter cartões que ainda não estão em nenhum padrão.

Caso tenha alguma dúvida me mande um email: erikhq cpan org Quando tem um novo comentário aqui nesta gist eu não recebo notificação.

Caso você saiba de algum novo padrão ou viu algo de errado, por favor, ajude a manter essa tabela atualizada.

Existe este site também para cartões internacionais: http://bin-iin.com/

vlw

Atualização (13/07/2015):

Adicionei 506699 para o cartão ELO.

Atualização (15/02/2016):

Adicionado 636369 para o cartão ELO

@rodolfo42

This comment has been minimized.

Copy link

commented Jan 19, 2014

Obrigado por compartilhar, foi de grande ajuda!

@marcioesposito

This comment has been minimized.

Copy link

commented May 7, 2014

Bom dia Erik, muito bacana sua iniciativa, mas eu tenho uma dívida, onde você conseguiu a lista de BINs dos cartões Elo, pois eu estou procurando isso já há algum tempo e não estou encontrando. Eu preciso validar essas informações para poder implantar as regras de validação. Desde já muito o obrigado.

@jezao

This comment has been minimized.

Copy link

commented May 22, 2014

Fala Erik, tudo bem?

Parabens pela iniciativa, porem estou com a mesma dúvida do márcio em relação a fonte do BIN do cartão elo. Onde você encontrou?

Abraços

@wisebots

This comment has been minimized.

Copy link

commented May 30, 2014

Fala aí brow, falta colocar na regra as exceções. Por exemplo, nem todos cartões que começam com 4 são visa, pois tem alguns elos. O mesmo vale pra uns exemplos do Discover. Só pra não confundir quem for desatento na sua tabela, mas seu trabalho ficou show, principalmente por facilitar os bins do elo.
Valeu abs e muito obrigado!

Visa 4 (exceto 438935, 451416, 4576,4011)
Hipercard 38,60 (exceto 6011)
Mastercard 5 (exceto 50)
Aura 50 (exceto 504175, 5067)

@altendorfme

This comment has been minimized.

Copy link

commented Jun 6, 2014

Olá Erik,

Muito obrigado por essa tabela, tentaremos remontar essa tabela em regex e compartilhar assim que possível para soluções web em Javascript.

Abraços.

@santoslucasls

This comment has been minimized.

Copy link

commented Jul 15, 2014

Parabens pelo trabalho.

Implementei aqui para android! ficou bom.

Tenho apenas uma dúvida: Tanto Hipercard quanto Diners podem começar com "38"?

Parabéns

@erikhenrique

This comment has been minimized.

Copy link
Owner Author

commented Jul 23, 2014

Poxa galera. Desculpa não responder as questões. Não recebi nenhuma notificação dos comentários que estão aqui.
Estou atualizando a gist com algumas informações importantes.

Vlw!

@erikhenrique

This comment has been minimized.

Copy link
Owner Author

commented Jul 23, 2014

Olá @santoslucasls.

Realmente, existe um erro. Aqui está um link com os bin do cartão de crédito diners atualizado.
Vou colocar na tabela.

Vlw

@dbreko

This comment has been minimized.

Copy link

commented Oct 14, 2014

obrigado pelo ajuda Erik 👍

@esampaio

This comment has been minimized.

Copy link

commented Oct 15, 2014

Essa é a lista que usamos: 636368, 627780, 636505, 636297, 506699, 504175, 438935, 457631, 457632, 451416, 50900, 5067, 4576, 4011

@rogerioadris

This comment has been minimized.

Copy link

commented Oct 21, 2014

Parabéns pela iniciativa.

@nipanga

This comment has been minimized.

Copy link

commented Nov 3, 2014

Pessoal, a quem possa interessar:
Adicionem o início "5066" para o Elo.

@andresams

This comment has been minimized.

Copy link

commented Nov 10, 2014

Henrique, você disse que deixaria um link acima com os bins do cartão Diners mas não deixou. Desse jeito o Hipercard e o Diners ficam iguais, começando com 38 e tendo 16 dígitos. Você sabe se o Diners pode ou não começar com o 38?

@diegoqlima

This comment has been minimized.

Copy link

commented Jan 8, 2015

Sobre o HiperCard a informação que pesquisei na internet é começando com 3841 ou 606282 e de tamanhos 16 ou 19

@ahonorato

This comment has been minimized.

Copy link

commented Mar 3, 2015

A Cielo enviou um comunicado informando sobre o BIN de cartões Elo, como segue.
................................................................................................................................................................................
Caro parceiro

A bandeira Elo disponibilizou novos bins de cartões de crédito e débito para os bancos. Pelo monitoramento constante que fazemos nas nossas plataformas, identificamos que algumas vendas com esses cartões não estão sendo aceitas.

Para não perder vendas, confira a relação de bins e range criados para o cadastramento manual ou atualização do seu sistema.

509048, 509067, 509049, 509069, 509050, 509074, 509068, 509040, 509045, 509051, 509046, 509066, 509047, 509042, 509052, 509043, 509064 e 509040

Fique atento: Estes bins começam com o número 5. Por favor, verifique se há alguma restrição dessa característica na sua plataforma para a bandeira Elo.

Caso seja necessário consultar a lista oficial dos Bins na ABA (American Bankers Association), acesse o site www.aba.com.

Atenciosamente,

Suporte Gateway
Cielo eCommerce
Tel: 4002-9700 (Capitais e regiões metropolitanas)
0800-570-1700 (Demais localidades)

@rogeralbinoi

This comment has been minimized.

Copy link

commented Apr 15, 2015

Obrigado por compartilhar!

@elisei

This comment has been minimized.

Copy link

commented Apr 24, 2015

Alguém tem a regex para a bandeira Hiper (não é o hipercard e sim uma nova bandeira do itau)?

@leo07vasp

This comment has been minimized.

Copy link

commented Jun 3, 2015

alguns regex uteis

electron: /^(4026|417500|4405|4508|4844|4913|4917)\d+$/,
maestro: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\d+$/,
elo: /^(636368|438935|504175|451416|636297|5067|4576|4011)\d+$/,
dankort: /^(5019)\d+$/,
interpayment: /^(636)\d+$/,
unionpay: /^(62|88)\d+$/,
visa: /^4[0-9]{12}(?:[0-9]{3})?$/,
mastercard: /^5[1-5][0-9]{14}$/,
amex: /^3[47][0-9]{13}$/,
diners: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
discover: /^6(?:011|5[0-9]{2})[0-9]{12}$/,
jcb: /^(?:2131|1800|35\d{3})\d{11}$/

@adrianoresende

This comment has been minimized.

Copy link

commented Sep 8, 2015

https://github.com/stripe/jquery.payment/blob/master/lib/jquery.payment.js

$.payment.cards = cards = [
    {
      type: 'visaelectron',
      pattern: /^4(026|17500|405|508|844|91[37])/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'maestro',
      pattern: /^(5(018|0[23]|[68])|6(39|7))/,
      format: defaultFormat,
      length: [12, 13, 14, 15, 16, 17, 18, 19],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'forbrugsforeningen',
      pattern: /^600/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'dankort',
      pattern: /^5019/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'visa',
      pattern: /^4/,
      format: defaultFormat,
      length: [13, 16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'mastercard',
      pattern: /^(5[1-5]|2[2-7])/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'amex',
      pattern: /^3[47]/,
      format: /(\d{1,4})(\d{1,6})?(\d{1,5})?/,
      length: [15],
      cvcLength: [3, 4],
      luhn: true
    }, {
      type: 'dinersclub',
      pattern: /^3[0689]/,
      format: /(\d{1,4})(\d{1,6})?(\d{1,4})?/,
      length: [14],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'discover',
      pattern: /^6([045]|22)/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }, {
      type: 'unionpay',
      pattern: /^(62|88)/,
      format: defaultFormat,
      length: [16, 17, 18, 19],
      cvcLength: [3],
      luhn: false
    }, {
      type: 'jcb',
      pattern: /^35/,
      format: defaultFormat,
      length: [16],
      cvcLength: [3],
      luhn: true
    }
  ];
@HenriqueSilverio

This comment has been minimized.

Copy link

commented Nov 17, 2015

Pessoal, a bandeira Aura é 16 ou 19 dígitos? Nessa tabela diz que é 16, mas procurando números para teste no Google, só aparecem referências com 19.

@h3nr1ke

This comment has been minimized.

Copy link

commented Nov 30, 2015

Fiquei na dúvida aqui... temos dois exemplos para o visa...
esse - /^4[0-9]{12}(?:[0-9]{3})?$/
e esse - /^4/

ambas validarão um cartão elo segundo a regex do amigo @leo07vasp (obrigado por compartilhar =D )

/^(636368|438935|504175|451416|636297|5067|4576|4011)\d+$/

alguém sabe se estes ranges da elo estão corretos?

@marcosapedroso

This comment has been minimized.

Copy link

commented Dec 3, 2015

Precisava de uma ajuda quanto a BINs?
Tem alguma forma de validar o BIN, identificando qual é o banco emissor?
Há algum que centraliza esse cadastro? Principalmente para cartões nacionais?

Obrigado

@shadowmaru

This comment has been minimized.

Copy link

commented Dec 30, 2015

Dei uma melhorada nas validações, especialmente para Visa e Master (exclui os que são Elo):

Visa:   /^4(?!38935|011|51416|576)\d{12}(?:\d{3})?$/
Master: /^5(?!04175|067|06699)\d{15}$/
Amex:   /^3[47]\d{13}$/
Hiper:  /^(38|60)\d{11}(?:\d{3})?(?:\d{3})?$/
Diners: /^3(?:0[15]|[68]\d)\d{11}$/
Elo:    /^[456](?:011|38935|51416|576|04175|067|06699|36368|36297)\d{10}(?:\d{2})?$/
@renatovico

This comment has been minimized.

Copy link

commented Jan 6, 2016

INFORMAÇÃO IMPORTANTE NOVOS BINS DA BANDEIRA ELO

Caro cliente,

A Elo vem crescendo bastante e hoje já é a 3ª maior bandeira do mercado de cartões. Além disso, está aumentando sua abrangência conquistando novos segmentos de clientes. Por esse motivo vem lançando novos BINs.

O que é BIN?

BIN significa “Bank Identification Number” (número de identificação bancária). É identificado pelos primeiros seis dígitos de um cartão.

Como não perder vendas com a bandeira Elo?

Com base em nosso monitoramento, identificamos transações não concretizadas por erro de cadastro de BINs. Por isso, confira se o seu sistema está 100% atualizado para não perder nenhuma venda!

O que fazer?

Caso o seu sistema possua algum controle de BINs, verifique se a relação da bandeira Elo está completa e atualizada (tabela abaixo). Fique atento, pois existem BINs Elo iniciados em 4, 5 e 6. Para garantir que não tenha problemas de aceitação, não crie restrições por BINs.
Se o cadastro do BIN é realizado por algum parceiro tecnológico, contate-o para garantir que os BINs estão cadastrados corretamente.

Os BINs Elo, incluindo os novos ranges são:

BINS ELO
401178
636368
401179
650031 à 650033
431274
650035 à 650051
438935
650405 à 650439
451416
650485 à 650538
457393
650541 à 650598
457631
650700 à 650718
457632
650720 à 650727
504175
650901 à 650920
506699 à 506778
651652 à 651679
509000 à 509999
655000 à 655019
627780
655021 à 655058
636297
Caso você tenha dúvidas sobre as condições comerciais para aceitação da bandeira Elo, contate a Central de Relacionamento Cielo:

4002 5472 - Capitais e regiões metropolitanas
0800 570 8472 - Demais localidades

Em caso de dúvidas técnicas, contate o Suporte Web Cielo e-Commerce:
Email: cieloecommerce@cielo.com.br
4002 9700 - Capitais e regiões metropolitanas
0800 570 1700 - Demais localidades
+55 11 2860 1348 - Internacionais


Segue a expressão regular que esto usando, importante notar que diners e hipercard tem conflito pela verificação de bin, e a unica maneira correta é verificar pela expressão completa

{
name: 'elo',
regexpBin: '^401178|^401179|^431274|^438935|^451416|^457393|^457631|^457632|^504175|^627780|^636297|^636369|^(506699|5067[0-6]\d|50677[0-8])|^(50900\d|5090[1-9]\d|509[1-9]\d{2})|^65003[1-3]|^(65003[5-9]|65004\d|65005[0-1])|^(65040[5-9]|6504[1-3]\d)|^(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|^(65054[1-9]|6505[5-8]\d|65059[0-8])|^(65070\d|65071[0-8])|^65072[0-7]|^(65090[1-9]|65091\d|650920)|^(65165[2-9]|6516[6-7]\d)|^(65500\d|65501\d)|^(65502[1-9]|6550[3-4]\d|65505[0-8])',
regexpFull: '^(401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636369|(506699|5067[0-6]\d|50677[0-8])|(50900\d|5090[1-9]\d|509[1-9]\d{2})|65003[1-3]|(65003[5-9]|65004\d|65005[0-1])|(65040[5-9]|6504[1-3]\d)|(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|(65054[1-9]|6505[5-8]\d|65059[0-8])|(65070\d|65071[0-8])|65072[0-7]|(65090[1-9]|65091\d|650920)|(65165[2-9]|6516[6-7]\d)|(65500\d|65501\d)|(65502[1-9]|6550[3-4]\d|65505[0-8]))[0-9]{10,12}',
regexpCvv: '^\d{3}$',
}, {
name: 'diners',
regexpBin: '^3(?:0[0-5]|[68][0-9])',
regexpFull: '^3(?:0[0-5]|[68][0-9])[0-9]{11}$',
regexpCvv: '^\d{3}$',
}, {
name: 'discover',
regexpBin: '^6(?:011|5[0-9]{2})',
regexpFull: '^6(?:011|5[0-9]{2})[0-9]{12}$',
regexpCvv: '^\d{3}$',
}, {
name: 'hipercard',
regexpBin: '^3841[046]0|^60',
regexpFull: '^(38[0-9]{17}|60[0-9]{14})$',
regexpCvv: '^\d{3}$',
}, {
name: 'amex',
regexpBin: '^3[47]',
regexpFull: '^3[47][0-9]{13}$',
regexpCvv: '^\d{3,4}$',
}, {
name: 'aura',
regexpBin: '^50[0-9]',
regexpFull: '^50[0-9]{14,17}$',
regexpCvv: '^\d{3}$',
}, {
name: 'mastercard',
regexpBin: '^5[1-5][0-9][0-9]',
regexpFull: '^5[1-5][0-9]{14}$',
regexpCvv: '^\d{3}$',
}, {
name: 'visa',
regexpBin: '^4',
regexpFull: '^4[0-9]{12}(?:[0-9]{3})?$',
regexpCvv: '^\d{3}$',
}

@galhango

This comment has been minimized.

Copy link

commented Jan 19, 2016

renatoelias valeu pela expressão regular, aplicando por aqui só achei um erro, você coloca o 636369 na Elo, enquanto deveria ser 636368.

@rubenskuhl

This comment has been minimized.

Copy link

commented Jan 26, 2016

Nessa tabela de BINs, como fica a questão de suporte a Luhn ? Elo usa Luhn também ?

@angelobelchior

This comment has been minimized.

Copy link

commented Jan 29, 2016

Olá Pessoal,

Seguindo o script que o @renatoelias postou, criei uma estrutura básica das validações e adicionei testes de unidades com números de cartões de teste que eu achei na net. A ideia é que seja possível testar de forma rápida e segura essas alterações.
Certa vez tive problemas com um número de cartão que passava na validação de duas bandeiras, por isso criei o método ObterNome validando bandeira por bandeira... Não imaginei outra alternativa para garantir que isso não ocorra. Quem souber, por favor comente :)

Para executar os testes é bem simples. Copie e cole o html abaixo e abra em um navegador! :)

Usei o Qunit para os testes. Ele é bem simples
https://qunitjs.com/

<html>

<head>
    <link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.20.0.css">
</head>

<body>
    <div id="qunit"></div>
    <div id="qunit-fixture"></div>
    <script src="https://code.jquery.com/qunit/qunit-1.20.0.js"></script>
</body>
<script>
    var Bandeiras = {};
    Bandeiras["elo"] = {
        regexpBin: /^401178|^401179|^431274|^438935|^451416|^457393|^457631|^457632|^504175|^627780|^636297|^636368|^(506699|5067[0-6]\d|50677[0-8])|^(50900\d|5090[1-9]\d|509[1-9]\d{2})|^65003[1-3]|^(65003[5-9]|65004\d|65005[0-1])|^(65040[5-9]|6504[1-3]\d)|^(65048[5-9]|65049\d|6505[0-2]\d|65053     [0-8])|^(65054[1-9]|6505[5-8]\d|65059[0-8])|^(65070\d|65071[0-8])|^65072[0-7]|^(65090[1-9]|65091\d|650920)|^(65165[2-9]|6516[6-7]\d)|^(65500\d|65501\d)|^(65502[1-9]|6550[3-4]\d|65505[0-8])/,
        regexpFull: /^(401178|401179|431274|438935|451416|457393|457631|457632|504175|627780|636297|636368|(506699|5067[0-6]\d|50677[0-8])|(50900\d|5090[1-9]\d|509[1-9]\d{2})|65003[1-3]|(65003[5-9]|65004\d|65005[0-1])|(65040[5-9]|6504[1-3]\d)|(65048[5-9]|65049\d|6505[0-2]\d|65053[0-8])|(65054[1-9]| 6505[5-8]\d|65059[0-8])|(65070\d|65071[0-8])|65072[0-7]|(65090[1-9]|65091\d|650920)|(65165[2-9]|6516[6-7]\d)|(65500\d|65501\d)|(65502[1-9]|6550[3-4]\d|65505[0-8]))[0-9]{10,12}/,
        regexpCvv: /^\d{3}$/,
    }; 
    Bandeiras["dinners"] = {
        regexpBin: /^3(?:0[0-5]|[68][0-9])/,
        regexpFull: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
        regexpCvv: /^\d{3}$/
    }; 
    Bandeiras["discover"] = {
        regexpBin: /^6(?:011|5[0-9]{2})/,
        regexpFull: /^6(?:011|5[0-9]{2})[0-9]{12}$/,
        regexpCvv: /^\d{3}$/
    }; 
    Bandeiras["hipercard"] = {
        regexpBin: /^3841[046]0|^60/,
        regexpFull: /^(38[0-9]{17}|60[0-9]{14})$/,
        regexpCvv: /^\d{3}$/
    }; 
    Bandeiras["amex"] = {
        regexpBin: /^3[47]/,
        regexpFull: /^3[47][0-9]{13}$/,
        regexpCvv: /^\d{3,4}$/
    }; 
    Bandeiras["aura"] = {
        regexpBin: /^50[0-9]/,
        regexpFull: /^50[0-9]{14,17}$/,
        regexpCvv: /^\d{3}$/
    }; 
    Bandeiras["mastercard"] = {
        regexpBin: /^5[1-5][0-9][0-9]/,
        regexpFull: /^5[1-5][0-9]{14}$/,
        regexpCvv: /^\d{3}$/
    };
    Bandeiras["visa"] = {
        regexpBin: /^4/,
        regexpFull: /^4[0-9]{12}(?:[0-9]{3})?$/,
        regexpCvv: /^\d{3}$/
    };
    Bandeiras.ValidarBin = function(card, num){
        return Bandeiras[card].regexpBin.test(Number(num));
    };    
    Bandeiras.ValidarNumero = function(card, num, cvv){
        return Bandeiras[card].regexpFull.test(Number(num));
    };
    Bandeiras.ValidarCVV = function(card, cvv){
        return Bandeiras[card].regexpCvv.test(Number(cvv));        
    };
    Bandeiras.ObterNome = function(num){
        var results = new Array();
        if(Bandeiras.ValidarNumero('mastercard', num))results.push('mastercard');
        if(Bandeiras.ValidarNumero('visa', num))results.push('visa');
        if(Bandeiras.ValidarNumero('amex', num))results.push('amex');
        if(Bandeiras.ValidarNumero('elo', num))results.push('elo');
        if(Bandeiras.ValidarNumero('dinners', num))results.push('dinners');
        if(Bandeiras.ValidarNumero('discover', num))results.push('discover');
        if(Bandeiras.ValidarNumero('aura', num))results.push('aura');
        if(Bandeiras.ValidarNumero('hipercard', num))results.push('hipercard');

        if(results.length==1)return results[0];
        return null;
    } 

    var testes = new Array();
    testes.push({bandeira: 'mastercard', numero: '5453010000066167', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5555666677778884', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480450322436382', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480456629742240', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480454162817040', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480458529684902', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480452215505109', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480457572486140', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480459239819424', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480450643291698', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480453894074326', cvv: 123});
    testes.push({bandeira: 'mastercard', numero: '5480453518154389', cvv: 123});

    testes.push({bandeira: 'visa', numero: '4012001037141112', cvv: 123});
    testes.push({bandeira: 'visa', numero: '4012001038443335', cvv: 123});
    testes.push({bandeira: 'visa', numero: '4485088329228200', cvv: 148});
    testes.push({bandeira: 'visa', numero: '4716029876210861', cvv: 556});
    testes.push({bandeira: 'visa', numero: '4532380508811952', cvv: 118});
    testes.push({bandeira: 'visa', numero: '4532803880412495', cvv: 319});
    testes.push({bandeira: 'visa', numero: '4466675250169297', cvv: 878});
    testes.push({bandeira: 'visa', numero: '4556022261221794', cvv: 548});
    testes.push({bandeira: 'visa', numero: '4716145657249124', cvv: 460});
    testes.push({bandeira: 'visa', numero: '4539242404735532', cvv: 897});
    testes.push({bandeira: 'visa', numero: '4916244175522001', cvv: 959});
    testes.push({bandeira: 'visa', numero: '4716232616269243', cvv: 641});
    testes.push({bandeira: 'visa', numero: '4235647728025682', cvv: 987}); 
    testes.push({bandeira: 'visa', numero: '4073020000000002', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4012001037141112', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4551870000000183 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4343994826655179 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4720915509578076 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4061379008400646 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4076774689941665 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4369665585758359 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4379764175816814 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4332149024548964 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4384313432156102 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4361231929117410 ', cvv: 987});
    testes.push({bandeira: 'visa', numero: '4375133936468386 ', cvv: 987});

    testes.push({bandeira: 'amex', numero: '376449047333005', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '376411112222331', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '374244037331636', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '379936207638865', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '375674696629418', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '378719889685045', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '376617469450552', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '372767748763368', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '373619171521939', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '375663449749698', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '374530640203661', cvv: 1234});
    testes.push({bandeira: 'amex', numero: '374013357823153', cvv: 1234});

    testes.push({bandeira: 'elo', numero: '6362970000457013', cvv: 123});
    testes.push({bandeira: 'elo', numero: '6362970000457013', cvv: 123});

    testes.push({bandeira: 'aura', numero: '5078601912345600019', cvv: 123});
    testes.push({bandeira: 'aura', numero: '5078601870000127985 ', cvv: 123});

    testes.push({bandeira: 'hipercard', numero: '3841001111222233334', cvv: 123});

    testes.forEach(function(teste){
        QUnit.test(teste.bandeira + ' ' + teste.numero + ' ' + teste.cvv, function( assert ) {
            assert.ok(Bandeiras.ValidarNumero(teste.bandeira, teste.numero), 'Numero ' + teste.numero + ' valido');
            assert.ok(Bandeiras.ValidarCVV(teste.bandeira, teste.cvv), 'CVV ' + teste.cvv + ' valido');
            assert.ok(Bandeiras.ValidarBin(teste.bandeira, teste.numero), 'Bin ' + teste.numero + ' valido');
            assert.ok(Bandeiras.ObterNome(teste.numero)==teste.bandeira, 'O numero ' + teste.numero + ' e um ' + teste.bandeira);
        });
    });
</script>

</html>
@rametring

This comment has been minimized.

Copy link

commented Jan 30, 2016

E para identificar quando for visa débito ou master débito pessoal, existe como fazer direto pelo bin ?

@erikhenrique

This comment has been minimized.

Copy link
Owner Author

commented Feb 15, 2016

Criei um repositório para que a gente possa organizar essas atualizações.
https://github.com/erikhenrique/bin-cc/blob/master/README.md

Fique a vontade para mandar um PR. Obrigado a todos que estão ajudando a manter atualizado.

Abs

@erikhenrique

This comment has been minimized.

Copy link
Owner Author

commented Feb 15, 2016

@rametring

Acredito que não é possível validar se é débito ou crédito pelo BIN. BIN é um identificador da bandeira, mas isto é o que acredito. Se souber de algo atualize a gente.

Abs

@angelobelchior

This comment has been minimized.

Copy link

commented Feb 16, 2016

Show @erikhenrique. Vou fazer um PR dos testes

@renatovico

This comment has been minimized.

Copy link

commented Feb 19, 2016

pessoal, fiz um npm: erikhenrique/bin-cc#1 espero que seja util para vcs.

@ahonorato

This comment has been minimized.

Copy link

commented Apr 25, 2016

Boa tarde pessoal. A Cielo comunicou novos BINs para o Amex hoje. Porém como validamos os iniciados em 34 e 37, já contempla.

O que enviaram foi:

  • 340000 a 349999
  • 370000 a 379999

Eles enviaram uma tabela com bastante detalhes sobre os emissores também, caso seja pertinente a alguém:

CARTÃO Rage Inicial Range Final Crédito a vista Parcelado Loja Parcelado Adm
INTERNACIONAL¹ 340000 349999 SIM NÃO NÃO
INTERNACIONAL¹ 370000 374727 SIM NÃO NÃO
BANCO DO BRASIL 374728 374729 SIM SIM SIM
INTERNACIONAL¹ 374730 374730 SIM NÃO NÃO
BANCO DO BRASIL 374731 374732 SIM SIM SIM
INTERNACIONAL¹ 374733 374757 SIM NÃO NÃO
CREDIT 374758 374759 SIM SIM NÃO
AMERICAN EXPRESS GOLD BUSINESS 374760 374760 SIM SIM SIM
AMERICAN EXPRESS PLATINUM BUSINESS 374761 374761 SIM SIM SIM
GOLD CREDITO 374762 374762 SIM SIM SIM
CREDIT 374763 374766 SIM SIM NÃO
GREEN RCP/BBC 374767 374767 SIM SIM SIM
GOLD CARD RCP/BBC 374768 374768 SIM SIM SIM
PLATINUM CARD/BBC 374769 374769 SIM SIM SIM
CREDIT 374770 374777 SIM SIM NÃO
INTERNACIONAL¹ 374778 375129 SIM NÃO NÃO
CREDIT 375130 375138 SIM SIM NÃO
MULTIPLO (CREDIT) 375139 375139 SIM SIM NÃO
INTERNACIONAL¹ 375140 375176 SIM NÃO NÃO
CREDIT GOLD 375177 375177 SIM SIM SIM
CREDIT PLATINUM 375178 375178 SIM SIM SIM
MULTIPLO GOLD (CREDIT) 375179 375179 SIM SIM SIM
MULTIPLO PLATINUM (CREDIT) 375180 375180 SIM SIM SIM
INTERNACIONAL¹ 375181 376419 SIM NÃO NÃO
GREEN 376420 376429 SIM SIM SIM
CORPORATE 376430 376439 SIM SIM ³ NÃO
GOLD 376440 376446 SIM SIM SIM
HSBC 376447 376448 SIM SIM SIM
PLATINUM 376449 376449 SIM SIM SIM
INTERNACIONAL¹ 376450 376460 SIM NÃO NÃO
CREDIT 376461 376467 SIM SIM NÃO
INTERNACIONAL¹ 376468 376469 SIM NÃO NÃO
GREEN 376470 376479 SIM SIM SIM
CREDIT 376480 376489 SIM SIM NÃO
INTERNACIONAL¹ 376490 376490 SIM NÃO NÃO
BANCO DO BRASIL 376491 376494 SIM SIM SIM
INTERNACIONAL¹ 376495 376497 SIM NÃO NÃO
Vanilla RCP 376498 376498 SIM SIM SIM
INTERNACIONAL¹ 376499 376519 SIM NÃO NÃO
CREDIT 376520 376529 SIM SIM NÃO
INTERNACIONAL¹ 376530 376539 SIM NÃO NÃO
INTERNACIONAL¹ 376540 376599 SIM NÃO NÃO
CORPORATE 376600 376602 SIM SIM ³ NÃO
CORPORATE CPC 376603 376604 SIM SIM ³ NÃO
CORPORATE 376605 376609 SIM SIM ³ NÃO
DECOMISSIONADO ² 376610 376611 SIM SIM SIM
DECOMISSIONADO ² 376612 376612 SIM SIM SIM
DECOMISSIONADO ² 376613 376613 SIM SIM SIM
DECOMISSIONADO ² 376614 376615 SIM SIM SIM
HSBC 376616 376618 SIM SIM SIM
HSBC PLATINUM 376619 376619 SIM SIM SIM
CREDIT 376620 376629 SIM SIM NÃO
INTERNACIONAL¹ 376630 377168 SIM NÃO NÃO
PLATINUM 377169 377169 SIM SIM SIM
INTERNACIONAL¹ 377170 377173 SIM NÃO NÃO
PLATINUM 377174 377174 SIM SIM SIM
INTERNACIONAL¹ 377175 379965 SIM NÃO NÃO
CREDIT BLUE V3 379966 379966 SIM SIM SIM
CREDIT GOLD 379967 379967 SIM SIM SIM
CREDIT PLATINUM 379968 379968 SIM SIM SIM
CREDIT PLATINUM 379969 379969 SIM SIM SIM
INTERNACIONAL¹ 379970 379999 SIM NÃO NÃO
  1. Cartões emitidos fora do Brasil
  2. Bins Decomissionados
  3. Aceitção de Parcelado loja parametrizada por cartão
@eliezio

This comment has been minimized.

Copy link

commented Jun 7, 2016

Ainda sobre o BIN correto para os cartões Hipercard, que continuam conflitando com o Diners: segundo a página http://www.stevemorse.org/ssn/List_of_Bank_Identification_Numbers.html os BINs do Hipercard são 384100, 384140, 384160 e 606282. Essa informação confere parcialmente com o informado por @diegoqlima.

@prsolucoes

This comment has been minimized.

Copy link

commented Jul 25, 2016

Olá, os cartões da mastercard poderão começar com o número 2 agora. Se puder, atualiza?

@jcharlier

This comment has been minimized.

Copy link

commented Sep 12, 2016

Complementando a informação do @prsolucoes os novos bins da MasterCard que serão adicionados em outubro/2016 são de 222100 a 272099

@paulodeleo

This comment has been minimized.

Copy link

commented Oct 13, 2016

👍

@Diegow3b

This comment has been minimized.

Copy link

commented Oct 13, 2016

Cara, fiquei com medo agora, to desenvolvendo um sistema de pagamento e etc, ai to usando um jquery para validar os cartões de credito pelo BIN usando o algoritmo de luhn, olhando esse post, me leva a pensar, será que que esses BINS são atualizados constantemente? meu medo é o cliente chegar com um cartão novo e o sistema não aceitar

@franzisk

This comment has been minimized.

Copy link

commented Dec 19, 2016

Tenho exatamente o mesmo "medo" do Diegow3b acima, pelo que estou percebendo esses BINs mudam de vez em quando? Ou são adicionados novos?
Nesse caso tem que ter uma manutenção no sistema para adicionar a nova regra, mas isso é muito ruim.

@taq

This comment has been minimized.

Copy link

commented Dec 28, 2016

@shadowmaru, essas regexps estão funfando de boa? Vou ter que sair da dupla Visa/Master aqui e se tiver vou utilizar para identificar os outros. :-)

@gabrielb

This comment has been minimized.

Copy link

commented Jan 13, 2017

BINS da ELO, recebido em 01/12/2016

Caro cliente,

Com o objetivo de evitarmos impactos na utilização do Cartão da Bandeira ELO emitidos pelos Bancos Bradesco, BB e Caixa, até o dia 20/12 foi realizada uma atualização massiva da Tabela de BINs para os clientes que operam com TEF.

Com esta atualização, as Softwares Houses já podem atualizar a Solução de Captura dos nossos Clientes, garantindo a aceitação da Bandeira ELO.

Os Clientes devem avaliar a necessidade de atualização de sua frente de caixa, pois essa necessidade pode variar de acordo com o sistema de cada cliente.

Para Clientes que utilizam Solução e-Commerce e realizam validação de BIN em sua página de pagamento ou no gateway, será necessário que façam a atualização destes sistemas para garantir a aceitação da Bandeira. Caso o Cliente não tenha nenhum tipo de validação, a aceitação da Bandeira ocorrerá de forma automática.

Att,

401178
401179
431274
438935
451416
457393
457631
457632
504175
506699 a 506778
509000
627780
636297
636368
650031 a 650033
650035 a 650051
650405 a 650439
650485 a 650538
650541
650700
650720
650901
651652
655000
655021
650921 a 650978 -> Novo range.

@mandelaloko

This comment has been minimized.

Copy link

commented Jan 16, 2017

Amigos, estou fazendo um checkout transparente e quando a pessoa começa a digitar o número do cartão eu exibo a bandeira do lado, usei o regex que você enviaram ai em cima, mas eu não consigo achar o da bandeira Hiper que é diferente do Hipercard.

Esse hiper: https://www.itau.com.br/cartoes/escolha/itaucard-20-nacional-hiper.html

Alguém tem o regex dele?

Muito obrigado s2

@lohk

This comment has been minimized.

Copy link

commented Feb 9, 2017

Opa, bom dia, pessoal, alguém tem as bins atualizadas de vales? como os alelo, visa vale alimentação e refeição, refeisul, policard, green card, good card, alimentação, restaurante, vr?

@mozgbrasil

This comment has been minimized.

Copy link

commented Feb 14, 2017

Ola Boa Noite meus amigos

Estou precisando dos BINS do cartão Hiper, alguma referencia ?

@yurihvlog

This comment has been minimized.

Copy link

commented Mar 21, 2017

Ola alguem pode me ajuda estou com um divida e preciso paga ela me amigo falou para eu pesquisa sobre bin de cartao de credito procurei e achei e sse site so nao sei como utilizo essa bin alguem pode me ajuda fazendo favor

@guibranco

This comment has been minimized.

Copy link

commented Mar 23, 2017

Pessoal, achei este webservice que você informa os 6 primeiros dígitos do cartão e ele te informa: Bandeira, Banco emissor (testei 6 cartões que possuo em casa, todos de banco ele acertou, o NuBank e do Submarino o nome do emissor veio em branco, mas sem problemas, acertou a bandeira), país e tipo de cartão (crédito / débito)

https://binlist.net/

Parece que a fonte de dados do https://binlist.net é este arquivo CSV aqui: https://github.com/binlist/data/blob/master/ranges.csv

Segue esta outra listagem também: http://www.stevemorse.org/ssn/List_of_Bank_Identification_Numbers.html

@guibranco

This comment has been minimized.

Copy link

commented Mar 23, 2017

@yurihvlog o que você quer é o número do cartão de crédito (roubado / furtado / clonado) e não isso aqui.
Tecnicamente falando, BIN são os primeiros dígitos de qualquer cartão de crédito, e servem para identificar bandeira/banco do cartão.
O BIN que seu "amigo" te falou, é na verdade o número completo do cartão de crédito (número, validade e código de segurança), de um cartão real que foi roubado/furtado ou clonado.
Não tem nada a ver com essa página!
E isso, no caso é crime, você pode ser enquadrado no crime de estelionato ou furto qualificado mediante fraude!!!

@mozgbrasil é Hiper mesmo né ? Não o HiperCard, correto ? Não acho em lugar algum também...,você liga e a pessoa que te atende acha que você está falando "SIM"...

@yurihvlog

This comment has been minimized.

Copy link

commented Mar 24, 2017

@guibranco ata vlw ai man nao sabia disso nao mais eu quero sabe como funciona a bin

@gnumarcelo

This comment has been minimized.

Copy link

commented Apr 20, 2017

@guibranco Obrigado por compartilhar o link para o site https://binlist.net. Testei alguns números de cartões AMEX, ELO, DINERS mas ele reconhece todos como VISA. Pelo que vi no github deles a base de dados está desatualizada (e com um monte de PR pendente). Uma pena.

@vinnyamp

This comment has been minimized.

Copy link

commented May 21, 2017

Dando uma olhada no script do pagar.me achei isso, talvez seja útil.

                ["elo", ["401178", "401179", "431274", "438935", "451416", "457393", "457631", "457632", "498405", "498410", "498411", "498412", "498418", "498419", "498420", "498421", "498422", "498427", "498428", "498429", "498432", "498433", "498472", "498473", "498487", "498493", "498494", "498497", "498498", "504175", "506699", "506700", "506701", "506702", "506703", "506704", "506705", "506706", "506707", "506708", "506709", "506710", "506711", "506712", "506713", "506714", "506715", "506716", "506717", "506718", "506719", "506720", "506721", "506722", "506723", "506724", "506725", "506726", "506727", "506728", "506729", "506730", "506731", "506732", "506733", "506734", "506735", "506736", "506737", "506738", "506739", "506740", "506741", "506742", "506743", "506744", "506745", "506746", "506747", "506748", "506749", "506750", "506751", "506752", "506753", "506754", "506755", "506756", "506757", "506758", "506759", "506760", "506761", "506762", "506763", "506764", "506765", "506766", "506767", "506768", "506769", "506770", "506771", "506772", "506773", "506774", "506775", "506776", "506777", "506778", "509000", "509001", "509002", "509003", "509004", "509005", "509006", "509007", "509008", "509009", "509010", "509011", "509012", "509013", "509014", "509015", "509016", "509017", "509018", "509019", "509020", "509021", "509022", "509023", "509024", "509025", "509026", "509027", "509028", "509029", "509030", "509031", "509032", "509033", "509034", "509035", "509036", "509037", "509038", "509039", "509040", "509041", "509042", "509043", "509044", "509045", "509046", "509047", "509048", "509049", "509050", "509051", "509052", "509053", "509054", "509055", "509056", "509057", "509058", "509059", "509060", "509061", "509062", "509063", "509064", "509065", "509066", "509067", "509068", "509069", "509070", "509071", "509072", "509073", "509074", "509075", "509076", "509077", "509078", "509079", "509080", "509081", "509082", "509083", "509084", "509085", "509086", "509087", "509088", "509089", "509090", "509091", "509092", "509093", "509094", "509095", "509096", "509097", "509098", "509099", "509100", "509101", "509102", "509103", "509104", "509105", "509106", "509107", "509108", "509109", "509110", "509111", "509112", "509113", "509114", "509115", "509116", "509117", "509118", "509119", "509120", "509121", "509122", "509123", "509124", "509125", "509126", "509127", "509128", "509129", "509130", "509131", "509132", "509133", "509134", "509135", "509136", "509137", "509138", "509139", "509140", "509141", "509142", "509143", "509144", "509145", "509146", "509147", "509148", "509149", "509150", "509151", "509152", "509153", "509154", "509155", "509156", "509157", "509158", "509159", "509160", "509161", "509162", "509163", "509164", "509165", "509166", "509167", "509168", "509169", "509170", "509171", "509172", "509173", "509174", "509175", "509176", "509177", "509178", "509179", "509180", "509181", "509182", "509183", "509184", "509185", "509186", "509187", "509188", "509189", "509190", "509191", "509192", "509193", "509194", "509195", "509196", "509197", "509198", "509199", "509200", "509201", "509202", "509203", "509204", "509205", "509206", "509207", "509208", "509209", "509210", "509211", "509212", "509213", "509214", "509215", "509216", "509217", "509218", "509219", "509220", "509221", "509222", "509223", "509224", "509225", "509226", "509227", "509228", "509229", "509230", "509231", "509232", "509233", "509234", "509235", "509236", "509237", "509238", "509239", "509240", "509241", "509242", "509243", "509244", "509245", "509246", "509247", "509248", "509249", "509250", "509251", "509252", "509253", "509254", "509255", "509256", "509257", "509258", "509259", "509260", "509261", "509262", "509263", "509264", "509265", "509266", "509267", "509268", "509269", "509270", "509271", "509272", "509273", "509274", "509275", "509276", "509277", "509278", "509279", "509280", "509281", "509282", "509283", "509284", "509285", "509286", "509287", "509288", "509289", "509290", "509291", "509292", "509293", "509294", "509295", "509296", "509297", "509298", "509299", "509300", "509301", "509302", "509303", "509304", "509305", "509306", "509307", "509308", "509309", "509310", "509311", "509312", "509313", "509314", "509315", "509316", "509317", "509318", "509319", "509320", "509321", "509322", "509323", "509324", "509325", "509326", "509327", "509328", "509329", "509330", "509331", "509332", "509333", "509334", "509335", "509336", "509337", "509338", "509339", "509340", "509341", "509342", "509343", "509344", "509345", "509346", "509347", "509348", "509349", "509350", "509351", "509352", "509353", "509354", "509355", "509356", "509357", "509358", "509359", "509360", "509361", "509362", "509363", "509364", "509365", "509366", "509367", "509368", "509369", "509370", "509371", "509372", "509373", "509374", "509375", "509376", "509377", "509378", "509379", "509380", "509381", "509382", "509383", "509384", "509385", "509386", "509387", "509388", "509389", "509390", "509391", "509392", "509393", "509394", "509395", "509396", "509397", "509398", "509399", "509400", "509401", "509402", "509403", "509404", "509405", "509406", "509407", "509408", "509409", "509410", "509411", "509412", "509413", "509414", "509415", "509416", "509417", "509418", "509419", "509420", "509421", "509422", "509423", "509424", "509425", "509426", "509427", "509428", "509429", "509430", "509431", "509432", "509433", "509434", "509435", "509436", "509437", "509438", "509439", "509440", "509441", "509442", "509443", "509444", "509445", "509446", "509447", "509448", "509449", "509450", "509451", "509452", "509453", "509454", "509455", "509456", "509457", "509458", "509459", "509460", "509461", "509462", "509463", "509464", "509465", "509466", "509467", "509468", "509469", "509470", "509471", "509472", "509473", "509474", "509475", "509476", "509477", "509478", "509479", "509480", "509481", "509482", "509483", "509484", "509485", "509486", "509487", "509488", "509489", "509490", "509491", "509492", "509493", "509494", "509495", "509496", "509497", "509498", "509499", "509500", "509501", "509502", "509503", "509504", "509505", "509506", "509507", "509508", "509509", "509510", "509511", "509512", "509513", "509514", "509515", "509516", "509517", "509518", "509519", "509520", "509521", "509522", "509523", "509524", "509525", "509526", "509527", "509528", "509529", "509530", "509531", "509532", "509533", "509534", "509535", "509536", "509537", "509538", "509539", "509540", "509541", "509542", "509543", "509544", "509545", "509546", "509547", "509548", "509549", "509550", "509551", "509552", "509553", "509554", "509555", "509556", "509557", "509558", "509559", "509560", "509561", "509562", "509563", "509564", "509565", "509566", "509567", "509568", "509569", "509570", "509571", "509572", "509573", "509574", "509575", "509576", "509577", "509578", "509579", "509580", "509581", "509582", "509583", "509584", "509585", "509586", "509587", "509588", "509589", "509590", "509591", "509592", "509593", "509594", "509595", "509596", "509597", "509598", "509599", "509600", "509601", "509602", "509603", "509604", "509605", "509606", "509607", "509608", "509609", "509610", "509611", "509612", "509613", "509614", "509615", "509616", "509617", "509618", "509619", "509620", "509621", "509622", "509623", "509624", "509625", "509626", "509627", "509628", "509629", "509630", "509631", "509632", "509633", "509634", "509635", "509636", "509637", "509638", "509639", "509640", "509641", "509642", "509643", "509644", "509645", "509646", "509647", "509648", "509649", "509650", "509651", "509652", "509653", "509654", "509655", "509656", "509657", "509658", "509659", "509660", "509661", "509662", "509663", "509664", "509665", "509666", "509667", "509668", "509669", "509670", "509671", "509672", "509673", "509674", "509675", "509676", "509677", "509678", "509679", "509680", "509681", "509682", "509683", "509684", "509685", "509686", "509687", "509688", "509689", "509690", "509691", "509692", "509693", "509694", "509695", "509696", "509697", "509698", "509699", "509700", "509701", "509702", "509703", "509704", "509705", "509706", "509707", "509708", "509709", "509710", "509711", "509712", "509713", "509714", "509715", "509716", "509717", "509718", "509719", "509720", "509721", "509722", "509723", "509724", "509725", "509726", "509727", "509728", "509729", "509730", "509731", "509732", "509733", "509734", "509735", "509736", "509737", "509738", "509739", "509740", "509741", "509742", "509743", "509744", "509745", "509746", "509747", "509748", "509749", "509750", "509751", "509752", "509753", "509754", "509755", "509756", "509757", "509758", "509759", "509760", "509761", "509762", "509763", "509764", "509765", "509766", "509767", "509768", "509769", "509770", "509771", "509772", "509773", "509774", "509775", "509776", "509777", "509778", "509779", "509780", "509781", "509782", "509783", "509784", "509785", "509786", "509787", "509788", "509789", "509790", "509791", "509792", "509793", "509794", "509795", "509796", "509797", "509798", "509799", "509800", "509801", "509802", "509803", "509804", "509805", "509806", "509807", "509808", "509809", "509810", "509811", "509812", "509813", "509814", "509815", "509816", "509817", "509818", "509819", "509820", "509821", "509822", "509823", "509824", "509825", "509826", "509827", "509828", "509829", "509830", "509831", "509832", "509833", "509834", "509835", "509836", "509837", "509838", "509839", "509840", "509841", "509842", "509843", "509844", "509845", "509846", "509847", "509848", "509849", "509850", "509851", "509852", "509853", "509854", "509855", "509856", "509857", "509858", "509859", "509860", "509861", "509862", "509863", "509864", "509865", "509866", "509867", "509868", "509869", "509870", "509871", "509872", "509873", "509874", "509875", "509876", "509877", "509878", "509879", "509880", "509881", "509882", "509883", "509884", "509885", "509886", "509887", "509888", "509889", "509890", "509891", "509892", "509893", "509894", "509895", "509896", "509897", "509898", "509899", "509900", "509901", "509902", "509903", "509904", "509905", "509906", "509907", "509908", "509909", "509910", "509911", "509912", "509913", "509914", "509915", "509916", "509917", "509918", "509919", "509920", "509921", "509922", "509923", "509924", "509925", "509926", "509927", "509928", "509929", "509930", "509931", "509932", "509933", "509934", "509935", "509936", "509937", "509938", "509939", "509940", "509941", "509942", "509943", "509944", "509945", "509946", "509947", "509948", "509949", "509950", "509951", "509952", "509953", "509954", "509955", "509956", "509957", "509958", "509959", "509960", "509961", "509962", "509963", "509964", "509965", "509966", "509967", "509968", "509969", "509970", "509971", "509972", "509973", "509974", "509975", "509976", "509977", "509978", "509979", "509980", "509981", "509982", "509983", "509984", "509985", "509986", "509987", "509988", "509989", "509990", "509991", "509992", "509993", "509994", "509995", "509996", "509997", "509998", "509999", "627780", "636297", "636368", "650031", "650032", "650033", "650035", "650036", "650037", "650038", "650039", "650040", "650041", "650042", "650043", "650044", "650045", "650046", "650047", "650048", "650049", "650050", "650051", "650405", "650406", "650407", "650408", "650409", "650410", "650411", "650412", "650413", "650414", "650415", "650416", "650417", "650418", "650419", "650420", "650421", "650422", "650423", "650424", "650425", "650426", "650427", "650428", "650429", "650430", "650431", "650432", "650433", "650434", "650435", "650436", "650437", "650438", "650439", "650485", "650486", "650487", "650488", "650489", "650490", "650491", "650492", "650493", "650494", "650495", "650496", "650497", "650498", "650499", "650500", "650501", "650502", "650503", "650504", "650505", "650506", "650507", "650508", "650509", "650510", "650511", "650512", "650513", "650514", "650515", "650516", "650517", "650518", "650519", "650520", "650521", "650522", "650523", "650524", "650525", "650526", "650527", "650528", "650529", "650530", "650531", "650532", "650533", "650534", "650535", "650536", "650537", "650538", "650541", "650542", "650543", "650544", "650545", "650546", "650547", "650548", "650549", "650550", "650551", "650552", "650553", "650554", "650555", "650556", "650557", "650558", "650559", "650560", "650561", "650562", "650563", "650564", "650565", "650566", "650567", "650568", "650569", "650570", "650571", "650572", "650573", "650574", "650575", "650576", "650577", "650578", "650579", "650580", "650581", "650582", "650583", "650584", "650585", "650586", "650587", "650588", "650589", "650590", "650591", "650592", "650593", "650594", "650595", "650596", "650597", "650598", "650700", "650701", "650702", "650703", "650704", "650705", "650706", "650707", "650708", "650709", "650710", "650711", "650712", "650713", "650714", "650715", "650716", "650717", "650718", "650720", "650721", "650722", "650723", "650724", "650725", "650726", "650727", "650901", "650902", "650903", "650904", "650905", "650906", "650907", "650908", "650909", "650910", "650911", "650912", "650913", "650914", "650915", "650916", "650917", "650918", "650919", "650920", "651652", "651653", "651654", "651655", "651656", "651657", "651658", "651659", "651660", "651661", "651662", "651663", "651664", "651665", "651666", "651667", "651668", "651669", "651670", "651671", "651672", "651673", "651674", "651675", "651676", "651677", "651678", "651679", "655000", "655001", "655002", "655003", "655004", "655005", "655006", "655007", "655008", "655009", "655010", "655011", "655012", "655013", "655014", "655015", "655016", "655017", "655018", "655019", "655021", "655022", "655023", "655024", "655025", "655026", "655027", "655028", "655029", "655030", "655031", "655032", "655033", "655034", "655035", "655036", "655037", "655038", "655039", "655040", "655041", "655042", "655043", "655044", "655045", "655046", "655047", "655048", "655049", "655050", "655051", "655052", "655053", "655054", "655055", "655056", "655057", "655058"]],
                ["discover", ["6011", "622", "64", "65"]],
                ["hipercard", ["384100", "384140", "384160", "60"]],
                ["diners", ["301", "305", "36", "38"]],
                ["amex", ["34", "37"]],
                ["aura", ["50"]],
                ["jcb", ["35"]],
                ["visa", ["4"]],
                ["mastercard", ["5"]]
@gsantiago

This comment has been minimized.

@Tatasulz

This comment has been minimized.

Copy link

commented May 26, 2017

Alguem saberia me dizer como descubro qual Banco emissor do cartão ELO n. BIN: 509000 ? Preciso descobrir essa informação, e nenhum site me fornece, nem na Cielo, diz que esse BIN não tem Banco emissor ... Alguem pode me ajudar?

@andresams

This comment has been minimized.

Copy link

commented Jun 14, 2017

Depois de muitos anos avaliando esta questão, cheguei a conclusão de que não vale a pena se arriscar a perder uma venda só para o usuário não ter que selecionar a bandeira do cartão. Ele já vai ter que digitar um monte de coisas mesmo, selecionar um campo não vai doer.

@Legacidigital

This comment has been minimized.

Copy link

commented Jul 19, 2017

Bom dia Pessoal
No caso de bandeira própria que é responsável por registrar o numero BIN,qual órgão faz isso no Brasil

@gilbarbara

This comment has been minimized.

Copy link

commented Aug 7, 2017

Caso alguém precise de um regex pro Elo:

^(4011(78|79)|43(1274|8935)|45(1416|7393|763(1|2))|50(4175|6699|67[0-7][0-9]|9000)|627780|63(6297|6368)|650(03([^4])|04([0-9])|05(0|1)|4(0[5-9]|3[0-9]|8[5-9]|9[0-9])|5([0-2][0-9]|3[0-8])|9([2-6][0-9]|7[0-8])|541|700|720|901)|651652|655000|655021)
@casadogg

This comment has been minimized.

Copy link

commented Aug 31, 2017

Mastercard agora aceita os ranges 2221 até 2720
Segue regex:

^5[1-5]|^2(2(2[1-9]|[3-9])|[3-6]|7([01]|20))

@casadogg

This comment has been minimized.

Copy link

commented Sep 6, 2017

Se alguém tiver interesse, compilei umas informações, incluindo número de dígitos permitidos por uma bandeira, número de dígitos do cvv, regexes, etc.

https://pastebin.com/duVq0tUv

@betinhosilva

This comment has been minimized.

Copy link

commented Oct 26, 2017

@gsantiago Como faço para aparecer ao inves do nome a bandeira? Dá um help rs

@frekele

This comment has been minimized.

Copy link

commented Jan 26, 2018

Expansion to 2-series Bank Identification Numbers (BINs)

Bank Identification Numbers (BINs), which are the first six-digits of the account number, are fundamental to payments. They identify the issuing institution for the account and ensure that each transaction is routed correctly.
Mastercard® has received an additional range of 2-series numbers (range 222100-272099) to add to the 5-series (range 510000-559999) that we currently provide. The 2-series BINs operate in the same way as the 5-series and we have made changes to our systems to accommodate the new numbers. Readiness for the 2-series across our issuers, merchants and other partners is tracking on target dates listed below. Mastercard customer financial institutions can expect to be issued 2-series BINs starting in 2017.

mc-world-credit-card_2bin-contactless-lmc-360x360

REF: https://www.mastercard.us/en-us/issuers/get-support/2-series-bin-expansion.html

@jaydson

This comment has been minimized.

Copy link

commented Aug 15, 2018

Neste ano criamos um repositório público no GitHub da Elo com uma app demo que lista a tabela de bins e também disponibiliza para download.
Segue o repositório: https://github.com/cartaoelo/elo-bins-table-demo-app
Aqui segue um demo live: https://elo-bins-table-demo-app-hbnylhmoqg.now.sh/.
Quem tiver alguma dúvida ou sugestão, é só comentar por lá.

@gildonei

This comment has been minimized.

Copy link

commented Sep 26, 2018

Cielo enviou aos clientes lista atualizada com a regex
cielo-regex-elo

@rdo182

This comment has been minimized.

Copy link

commented Sep 26, 2018

Opa! Pessoal consegui os bins da Hiper!
["637095", "637612", "637599", "637609", "637568"]
E aqui ta regex que usei para validar: /^(((637095)|(637612)|(637599)|(637609)|(637568))\d{0,10})$/
A lista que tem aqui foi muito útil!
Muito obrigado!

@Jumori

This comment has been minimized.

Copy link

commented Oct 30, 2018

Regex pro Elo
^(4011(78|79)|43(1274|8935)|45(1416|7393|763(1|2))|50(4175|6699|67[0-7][0-9]|9000)|50(9[0-9][0-9][0-9])|627780|63(6297|6368)|650(03([^4])|04([0-9])|05(0|1)|05([7-9])|06([0-9])|07([0-9])|08([0-9])|4([0-3][0-9]|8[5-9]|9[0-9])|5([0-9][0-9]|3[0-8])|9([0-6][0-9]|7[0-8])|7([0-2][0-9])|541|700|720|727|901)|65165([2-9])|6516([6-7][0-9])|65500([0-9])|6550([0-5][0-9])|655021|65505([6-7])|6516([8-9][0-9])|65170([0-4]))

@andresneves

This comment has been minimized.

Copy link

commented Dec 7, 2018

Boa tarde. Trabalho numa empresa que tem um cartão fidelidade e gostaríamos de comprar um BIN. Você sabe quem devemos procurar?

@svtfrancisco

This comment has been minimized.

Copy link

commented Jan 22, 2019

Eu fiz um teste me baseando nos dados que o @vinnyamp trouxe da pagar.me e está me servindo muito bem.

https://gist.github.com/svtfrancisco/3304b475f33bcf57da41f22cd2d69b16

@KellerKnebel

This comment has been minimized.

Copy link

commented Feb 22, 2019

Alguem possui bin de cartão mastercard que inicia com o numero 2, atualizei meu zend portem nao tenho o bin para verificar a validação esta ok. poderiam me ajudar?

@matheusgomes17

This comment has been minimized.

Copy link

commented Mar 7, 2019

Regex pro Elo
^(4011(78|79)|43(1274|8935)|45(1416|7393|763(1|2))|50(4175|6699|67[0-7][0-9]|9000)|50(9[0-9][0-9][0-9])|627780|63(6297|6368)|650(03([^4])|04([0-9])|05(0|1)|05([7-9])|06([0-9])|07([0-9])|08([0-9])|4([0-3][0-9]|8[5-9]|9[0-9])|5([0-9][0-9]|3[0-8])|9([0-6][0-9]|7[0-8])|7([0-2][0-9])|541|700|720|727|901)|65165([2-9])|6516([6-7][0-9])|65500([0-9])|6550([0-5][0-9])|655021|65505([6-7])|6516([8-9][0-9])|65170([0-4]))

Essa é top! Até agora passou em todos os testes.
Muito obrigado!

@matheusgomes17

This comment has been minimized.

Copy link

commented Mar 7, 2019

Para quem tiver interesse fiz uma classe que você passa o numero do cartão e ele retorna qual é a bandeira desse número.

https://gist.github.com/matheusgomes17/460f32f70c570a4f2bcf489654a22f0b

@andersonfraga

This comment has been minimized.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.