Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Start an integration
Products
Global Payouts
Capital
Issuing cards
    Overview
    How Issuing works
    Global availability
    Manage fraud
    Cards
    Choose your card type
    Virtual cards
    Issue virtual cards
    Physical cards
    Manage cards
    Digital wallets
    Replacement cards
    Card programs
    Program management
    Customize your card program
    Add funds to your card program
    Credit Consumer Issuing
    Controls
    Spending controls
    Advanced fraud tools
    3DS
    Fraud challenges
    Real-time authorizations
    PIN management
    Issuing Elements
    Token Management
    Funding
    Balance
    Postfund your integration with Stripe
    Postfund your integration with Dynamic Reserves
    Purchases
    Authorizations
    Transactions
    Disputes
    Testing
    Merchant categories
    ATM Usage
    Issuing with Connect
    Set up an Issuing and Connect integration
    Update terms of service acceptance
    Connect funding
    Connected accounts, cardholders, and cards
    Embed card management UI
    Credit
    Overview
    Set up connected accounts
    Manage credit terms
    Report other credit decisions and manage AANs
    Report required regulatory data for credit decisions
    Manage account obligations
    Test credit integration
    Additional information
    Choose a cardholder type
    Customer support for Issuing and Treasury
    Issuing watchlist
    Marketing guidance (Europe/UK)
    Product and marketing compliance guidance (US)
Treasury
Manage money
HomeMoney managementIssuing cards

Create virtual cards

Create a cardholder and issue a virtual card.

Copy page

You can use the Dashboard or the Create a card endpoint to issue virtual cards to cardholders. Cardholders can use virtual cards immediately after you create them.

Create a cardholder

You can use the Dashboard or the Cardholders API to 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. Billing address 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 such as 3D Secure.

Command Line
curl
curl https://api.stripe.com/v1/issuing/cardholders \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -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 cards to individuals for programs backed by Celtic Bank, 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 accountholders 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.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
curl https://api.stripe.com/v1/issuing/cardholders/ich_1MGlTC2eZvKYlo2CJnowP9Z5 \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -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 virtual for the card type.

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

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

Activate the card

For authorizations to be approved on a card, its status must be set to active. Past-due requirements block card activation.

Activate on creation

You can activate the card 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, you can activate it using the Dashboard or the API. To activate it using the Dashboard, select the card you want to activate, then click Activate card. To activate it using the API, use the update card endpoint to set its status to active.

Command Line
cURL
curl https://api.stripe.com/v1/issuing/cards/ic_1Cm3paIyNTgGDVfzBqq1uqxR \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -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?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc