Home

Awesome

React Native Credit Card Input - Finally updated in 2024!

Example on Expo Snack - Easy (and good looking) credit-card input for your React Native Project 💳 💳

<p align="center"> <img src="https://github.com/sbycrosz/react-native-credit-card-input/blob/main/previews/ccinput.gif?raw=true" width=150/> <img src="https://github.com/sbycrosz/react-native-credit-card-input/blob/main/previews/ccinputlite.gif?raw=true" width=150/> </p>

Code:

<CreditCardInput />
// or
<LiteCreditCardInput />

Features

Usage

yarn add react-native-credit-card-input

then add these lines in your react-native codebase

import { CreditCardInput, LiteCreditCardInput } from "react-native-credit-card-input";

<CreditCardInput onChange={_onChange} />
// or
<LiteCreditCardInput onChange={_onChange} />

// Note: You'll need to enable LayoutAnimation on android to see LiteCreditCardInput's animations
// UIManager.setLayoutAnimationEnabledExperimental(true);

And then on your onChange handler:

_onChange => form => console.log(form);

// will print:
{
  valid: true, // will be true once all fields are "valid" (time to enable the submit button)
  values: { // will be in the sanitized and formatted form
  	number: "4242 4242",
  	expiry: "06/19",
  	cvc: "300",
  	type: "visa", // will be one of [null, "visa", "master-card", "american-express", "diners-club", "discover", "jcb", "unionpay", "maestro"]
  },
  status: {  // will be one of ["incomplete", "invalid", and "valid"]
	number: "incomplete",
	expiry: "incomplete",
	cvc: "incomplete",
  },
};

Example

Expo Snack

Or run it locally

yarn install

yarn example ios
# or
yarn example android
# or
yarn example web

Should I used this in my project?

Components

LiteCreditCardInput

PropTypeDescription
autoFocusbooleanOptional. Specifies if the input should auto-focus.
styleViewStyleOptional. Custom style for the component's container.
inputStyleTextStyleOptional. Custom style for the input fields.
placeholderColorstringOptional. Color for the placeholder text.
placeholders{ number: string; expiry: string; cvc: string; }Optional. Custom placeholders for the input fields.
onChange(formData: CreditCardFormData) => voidRequired. Callback function called when form data changes.
onFocusField(field: CreditCardFormField) => voidOptional. Callback function called when a field gains focus.

CreditCardInput

PropTypeDescription
autoFocusbooleanOptional. Specifies if the input should auto-focus.
styleViewStyleOptional. Custom style for the component's container.
labelStyleTextStyleOptional. Custom style for the labels.
inputStyleTextStyleOptional. Custom style for the input fields.
placeholderColorstringOptional. Color for the placeholder text.
labels{ number: string; expiry: string; cvc: string; }Optional. Custom labels for the input fields.
placeholders{ number: string; expiry: string; cvc: string; }Optional. Custom placeholders for the input fields.
onChange(formData: CreditCardFormData) => voidRequired. Callback function called when form data changes.
onFocusField(field: CreditCardFormField) => voidOptional. Callback function called when a field gains focus.

CardView

PropTypeDescription
focusedField'name' | 'number' | 'expiry' | 'cvc'Optional. Specifies which field is currently focused.
typeCreditCardIssuerOptional. Specifies the type of the credit card issuer.
namestringOptional. The name on the credit card.
numberstringOptional. The credit card number.
expirystringOptional. The expiry date of the credit card.
cvcstringOptional. The CVC code of the credit card.
placeholders{ number: string; expiry: string; cvc: string; name: string; }Optional. Custom placeholders for the input fields.
styleViewStyleOptional. Custom style for the component's container.
fontFamilystringOptional. Custom font family for the text.
imageFrontImageSourcePropTypeOptional. Image source for the front of the credit card.
imageBackImageSourcePropTypeOptional. Image source for the back of the credit card.