Skip to content
Sign in
An image of the Stripe logo
/
Create account
Sign in
Home
Payments
Finance automation
Banking as a service
Developer tools
No-code
All products
Home
Payments
Finance automation
Home
Payments
Finance automation
Banking as a service
Developer tools
OverviewSee the Issuing and Treasury demo app
Issuing cards
    Overview
    Global Issuing
    Get started
    How Issuing works
    Choose your card offering
    Customize your program
    Add funds to your card program
    Manage fraud
    Cards
    Create cards
    Virtual cards
    Physical cards
    Manage cards
    Digital wallets
    Replacement cards
    Testing and support
    Testing physical cards
    Support
    Controls
    Spending controls
    Real-time authorizations
    SMS fraud alerts
    3D Secure
    PIN management
    Issuing Elements
    Token Management
    Funding
    Balance
    Purchases
    Authorizations
    Transactions
    Disputes
    Testing
    Merchant categories
    Issuing with Connect
    Set up an Issuing and Connect integration
    Connect funding
    Connected accounts cardholders and cards
    Additional information
    Choose a cardholder type
    Marketing guidance (Europe/UK)
    Product and marketing compliance guidance (US)
Treasury
Business financing
Issuing
·
HomeBanking as a serviceIssuing cards

Create cards with the API

Learn how to create cardholders and issue cards.

You can create virtual and physical cards on Mastercard or Visa (or both) with the Cards API. Cardholders can use virtual cards instantly after you create them. Stripe sends you physical cards in the mail.

You can also create virtual and physical cards with the Dashboard.

Create a cardholder

The Cardholder object represents an individual or business entity that you can issue cards to. Create a Cardholder with a name to display on cards and the billing address, which is often requested when the cardholder makes online purchases, and is usually the business address of the connected account or your platform.

When you create a cardholder, or update it later, you can include additional information such as a phone_number or email, which are required for some features like digital wallets. You can also specify preferred_locales to customize the cardholder’s language for features like 3D Secure.

Command Line
curl https://api.stripe.com/v1/issuing/cardholders \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:
\ -d "name"="Jenny Rosen" \ -d "email"="jenny.rosen@example.com" \ -d "phone_number"="+18008675309" \ -d "status"="active" \ -d "type"="individual" \ -d "individual[first_name]"="Jenny" \ -d "individual[last_name]"="Rosen" \ -d "individual[dob][day]"=1 \ -d "individual[dob][month]"=11 \ -d "individual[dob][year]"=1981 \ -d "billing[address][line1]"="123 Main Street" \ -d "billing[address][city]"="San Francisco" \ -d "billing[address][state]"="CA" \ -d "billing[address][postal_code]"="94111" \ -d "billing[address][country]"="US"

Stripe returns a Cardholder object that contains the information you provided and sends the issuing_cardholder.created webhook event.

Individual type cardholder requirements

The cardholder type defaults to individual, but you can set the type to company if you choose.

You must provide values for the first and last names of individual cardholders, which Stripe screens in accordance with regulatory guidelines. Consider also providing date of birth, which might help reduce watchlist reviews.

Accept authorized user terms

If you’re issuing Celtic Spend Cards to individuals (not required for company type cardholders), you must record acceptance of the Celtic Bank Authorized User Terms before activating a card for that cardholder. See the Required Agreements for Issuing and Treasury for more information about which agreements you’re required to present to account holders and cardholders.

If applicable, Stripe alerts you to this requirement in the requirements property of the Cardholder object:

{ "id": "ich_1MGlTC2eZvKYlo2CJnowP9Z5", "name": "Jenny Rosen", ... "requirements": { "disabled_reason": "requirements.past_due", "past_due": [ "individual.first_name", "individual.last_name", "individual.card_issuing.user_terms_acceptance.date", "individual.card_issuing.user_terms_acceptance.ip", ], }, ... }

You can accept the terms on behalf of the Cardholder by passing in the Unix timestamp of when the cardholder accepted their terms and also their IP address.

Command Line
curl https://api.stripe.com/v1/issuing/cardholders/ich_1MGlTC2eZvKYlo2CJnowP9Z5 \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:
\ -d "individual[first_name]"="Jenny" \ -d "individual[last_name]"="Rosen" \ -d "individual[card_issuing][user_terms_acceptance][date]"=1470266163 \ -d "individual[card_issuing][user_terms_acceptance][ip]"="91.121.146.224"

When you’ve met the requirements for card activation (such as first and last names, plus proof of user terms acceptance) you can activate cards for them.

Create a card

Create a Card and assign it to the cardholder. This request contains the ID of the Cardholder object, currency, and type (either virtual or physical) of the card.

Creating a physical card requires a shipping address, and you can provide additional arguments to specify shipment packaging and delivery service.

Command Line
curl https://api.stripe.com/v1/issuing/cards \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d cardholder=ich_1Cm3pZIyNTgGDVfzI83rasFP \ -d currency=usd \ -d type=virtual

Stripe returns a Card object upon creation, and sends the issuing_card.created webhook event.

Activate the card

In order for authorizations to be approved on a card, its status must be set to active. Note that past-due requirements block card activation.

Activate on creation

The card can be activated when creating it using the dashboard or the API. In the dashboard, when creating a card, click Activate card. Using the API, set status to active when using the create card endpoint.

Activate after creation

Alternatively, after creating an inactive card, the card can be activated using the dashboard or the API. To activate using the dashboard, select the card you wish to activate, then click Activate card. To activate using the API, use the update card endpoint to set its status to active.

Command Line
curl https://api.stripe.com/v1/issuing/cards/ic_1Cm3paIyNTgGDVfzBqq1uqxR \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d status=active

Re-activate after blocking

In some cases, multiple incorrect PIN attempts on a transaction deactivates a card, preventing further authorizations. To reactivate the card, use the dashboard or the update card API to set the card’s status to active.

Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
On this page
Create a cardholder
Create a card
Activate the card
Products Used
Issuing
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Log in to your Stripe account and press Control + Backtick (`) on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g., )
The Stripe Shell is best experienced on desktop.
$