Skip to content

Instantly share code, notes, and snippets.

@erikhenrique
Last active June 30, 2024 22:14
Show Gist options
  • Save erikhenrique/5931368 to your computer and use it in GitHub Desktop.
Save erikhenrique/5931368 to your computer and use it in GitHub Desktop.
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

@KellerKnebel
Copy link

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
Copy link

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
Copy link

matheusgomes17 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
Copy link

@atsoares
Copy link

atsoares commented Dec 26, 2019

regex que estou usando na ELO

^(40117(8|9))|(431274)|(438935)|(451416)|(457393)|(45763(1|2))|(504175)|(627780)|(636297)|(636368)|(65500(0|1))|(65165[2-4])|(65048[5-8])|(65500(2|3))|(650489)|(65049[0-4])|(506699|5067[0-6][0-9]|50677[0-8])|(509[0-8][0-9]{2}|5099[0-8][0-9]|50999[0-9])|(65003[1-3])|(65003[5-9]|65004[0-9]|65005[01])|(65040[5-9]|6504[1-3][0-9])|(65048[5-9]|65049[0-9]|6505[0-2][0-9]|65053[0-8])|(65054[1-9]|6505[5-8][0-9]|65059[0-8])|(65070[0-9]|65071[0-8])|(65072[0-7])|(65090[1-9]|65091[0-9]|650920)|(65165[2-9]|6516[67][0-9])|(65500[0-9]|65501[0-9])|(65502[1-9]|6550[34][0-9]|65505[0-8])

@aalessandre
Copy link

encontrei esse portal, achei muito util:
https://binlists.com/

@WestBonner
Copy link

Minha contribuição:

American Express:: '^3[47]\\d{0,13}'
Aura: '^507860'
Banese Card: '^636117'
Cabal: '(60420[1-9]|6042[1-9][0-9]|6043[0-9]{2}|604400)'
Diners: '(36[0-8][0-9]{3}|369[0-8][0-9]{2}|3699[0-8][0-9]|36999[0-9])
Fort Brasil: '^628167'
GrandCard: '^605032'
Hipercard: '^606282|^637095|^637599|^637568'
Personal Card: '^636085'
Sorocred: '^627892|^636414'
Valecard: '^606444|^606458|^606482'
Elo: ^4011(78|79)|^43(1274|8935)|^45(1416|7393|763(1|2))|^504175|^627780|^63(6297|6368|6369)|(65003[5-9]|65004[0-9]|65005[01])|(65040[5-9]|6504[1-3][0-9])|(65048[5-9]|65049[0-9]|6505[0-2][0-9]|65053[0-8])|(65054[1-9]|6505[5-8][0-9]|65059[0-8])|(65070[0-9]|65071[0-8])|(65072[0-7])|(65090[1-9]|6509[1-6][0-9]|65097[0-8])|(65165[2-9]|6516[67][0-9])|(65500[0-9]|65501[0-9])|(65502[1-9]|6550[34][0-9]|65505[0-8])|^(506699|5067[0-6][0-9]|50677[0-8])|^(509[0-8][0-9]{2}|5099[0-8][0-9]|50999[0-9])|^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])

@edurodriguesdias
Copy link

Informação muito útil! Obrigado por partilhar ✌🏼

@marcos15733
Copy link

Qual pra visa vc tem ai

@marcos15733
Copy link

Por favor so pra mi se levanta pago bem

@WestBonner
Copy link

@marcos15733 faz tempo que não me envolvo com bandeiras de cartões e regex, mas vai aí um caminho para identificar bandeiras visa:
Visa: ^4[0-9]{15}$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment