Credit Card Utility Methods

5.0.0 · active · verified Sun Apr 19

The `creditcards` package provides a suite of utility methods for parsing, formatting, and validating credit card numbers, CVCs, and expiration dates. Currently at version 5.0.0, it offers a robust solution for handling common payment-related data operations in applications. While no explicit release cadence is stated, the package is actively maintained and ships with TypeScript types, promoting type safety and improved developer experience. A key differentiator is its modular design, allowing developers to import specific functionalities like `card` or `expiration` individually, and the ability to inject custom card types via the `withTypes` function or by importing individual modules from `creditcards-types` to extend supported card schemas beyond the defaults. It targets modern Node.js environments (>= 18).

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates common usage patterns for credit card validation and formatting, including parsing, formatting, type detection, Luhn algorithm check, CVC validation, and expiration date checks. It also shows how to customize card types using `withTypes`.

import { card, cvc, expiration, withTypes } from 'creditcards';
import { visa, mastercard } from 'creditcards-types';

// --- Card Utilities ---
const rawCardNumber = '  4242-4242-4242-4242  ';
const parsedCardNumber = card.parse(rawCardNumber); // '4242424242424242'
const formattedVisa = card.format(parsedCardNumber); // '4242 4242 4242 4242'
const cardType = card.type(parsedCardNumber); // 'visa'
const isValidLuhn = card.luhn(parsedCardNumber); // true
const isValidCard = card.isValid(parsedCardNumber); // true
const isValidVisa = card.isValid(parsedCardNumber, 'visa'); // true

console.log(`Parsed Card: ${parsedCardNumber}`);
console.log(`Formatted Card: ${formattedVisa}`);
console.log(`Card Type: ${cardType}`);
console.log(`Luhn Valid: ${isValidLuhn}`);

// --- CVC Utilities ---
const cvcValue = '123';
const isValidCVC = cvc.isValid(cvcValue, 'visa'); // true
console.log(`CVC Valid for Visa: ${isValidCVC}`);

// --- Expiration Utilities ---
const currentMonth = new Date().getMonth() + 1;
const currentYear = new Date().getFullYear();
const futureYear = currentYear + 5;

const isMonthValid = expiration.month.isValid(currentMonth); // true
const isYearValid = expiration.year.isValid(futureYear); // true
const isPast = expiration.isPast(currentMonth - 1, currentYear); // true (assuming currentMonth > 1)

console.log(`Expiration Month Valid: ${isMonthValid}`);
console.log(`Expiration Year Valid: ${isYearValid}`);
console.log(`Is past (last month): ${isPast}`);

// --- Using custom types (requires 'creditcards-types') ---
const customCardModule = withTypes([visa, mastercard]);
const isAmexWithCustomTypes = customCardModule.card.isValid('378282246310005', 'american-express'); // false if only visa/mastercard are included
console.log(`Is Amex valid with custom types (only Visa/MC): ${isAmexWithCustomTypes}`);

view raw JSON →