Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Credit Card Identifier - JavaScript Implementation

JavaScript/Node.js implementation for credit card BIN validation and identification.

Supported Card Brands

  • American Express (amex)
  • Aura
  • BaneseCard
  • Diners Club
  • Discover
  • Elo
  • Hipercard
  • JCB
  • Maestro
  • Mastercard
  • UnionPay
  • Visa

Installation

npm install creditcard-identifier

Usage

Basic Validation

const creditcard = require('creditcard-identifier');

// Identify card brand
const brand = creditcard.findBrand('4012001037141112');
console.log(brand);
// { name: 'visa', regexpBin: '...', regexpFull: '...', regexpCvv: '...' }

// Check if card is supported
const supported = creditcard.isSupported('4012001037141112');
console.log(supported); // true

// Validate CVV
const validCvv = creditcard.validateCvv('123', 'visa');
console.log(validCvv); // true

Detailed Brand Information

const creditcard = require('creditcard-identifier');

// Get detailed brand info with matched pattern
const detailed = creditcard.findBrand('4012001037141112', true);
console.log(detailed);
// {
//   scheme: 'visa',
//   brand: 'Visa',
//   type: 'credit',
//   cvv: { name: 'CVV', length: 3 },
//   patterns: [...],
//   matchedPattern: { bin: '^4', length: [13, 16, 19], luhn: true, cvvLength: 3 },
//   matchedBin: null
// }

// Get brand info by name
const brandInfo = creditcard.getBrandInfo('mastercard');
console.log(brandInfo);

// Get detailed brand info by scheme
const detailedInfo = creditcard.getBrandInfoDetailed('amex');
console.log(detailedInfo);

// List all supported brands
const allBrands = creditcard.listBrands();
console.log(allBrands);
// ['amex', 'aura', 'banesecard', 'diners', 'discover', 'elo', 'hipercard', 'jcb', 'maestro', 'mastercard', 'unionpay', 'visa']

// Validate card number using Luhn algorithm
const isValid = creditcard.luhn('4012001037141112');
console.log(isValid);  // true

Using Raw Data

const creditcard = require('creditcard-identifier');

// Access brand data directly
const brands = creditcard.brands;
console.log(brands); 
// [
//   { name: 'amex', regexpBin: '...', regexpFull: '...', regexpCvv: '...' },
//   { name: 'visa', regexpBin: '...', regexpFull: '...', regexpCvv: '...' },
//   ...
// ]

// Access detailed brand data
const brandsDetailed = creditcard.brandsDetailed;

OOP-Style Usage

const { Validator } = require('creditcard-identifier');

const validator = new Validator();

const brand = validator.findBrand('5533798818319497');
console.log(brand); // { name: 'mastercard', ... }

const isValid = validator.isSupported('5533798818319497');
console.log(isValid); // true

API

findBrand(cardNumber, detailed?)

Returns the brand object for the given card number.

Parameters:

  • cardNumber (string): The credit card number
  • detailed (boolean, optional): If true, returns detailed brand info with matched pattern

Returns: (object) Brand object with name, regexpBin, regexpFull, regexpCvv (or detailed info if detailed=true)

Throws: Error if card number is not supported

isSupported(cardNumber)

Checks if the card number is supported.

Parameters:

  • cardNumber (string): The credit card number

Returns: (boolean) true if supported, false otherwise

validateCvv(cvv, brandOrName)

Validates the CVV for a given brand.

Parameters:

  • cvv (string): The CVV code
  • brandOrName (string|object): Brand name or brand object from findBrand

Returns: (boolean) true if CVV is valid for the brand

getBrandInfo(brandName)

Returns brand info by name.

Parameters:

  • brandName (string): The brand name (e.g., 'visa')

Returns: (object|null) Brand info or null if not found

getBrandInfoDetailed(scheme)

Returns detailed brand info by scheme name.

Parameters:

  • scheme (string): The scheme name (e.g., 'visa', 'mastercard')

Returns: (object|null) Detailed brand info or null if not found

listBrands()

Returns an array of all supported brand names.

Returns: (string[]) Array of brand names

luhn(number)

Validate a credit card number using the Luhn algorithm.

Parameters:

  • number (string): Credit card number (digits only)

Returns: (boolean) True if valid according to Luhn algorithm

Throws: TypeError if input is not a string

brands

Direct access to the simplified brand data array.

brandsDetailed

Direct access to the detailed brand data array.

Validator

Class for OOP-style usage with all the above methods.

Development

Run Tests

npm test

Run Coverage

npm run coverage

Data Source

BIN data is maintained in the bin-cc repository and embedded directly in the package.

License

MIT