Creating cards

    Learn how to create cardholders and issue cards.

    Learn how to create virtual and physical cards in the Dashboard or API. Virtual cards can be used instantly after creation. Physical cards are sent to you by mail. Issue a new card in three steps:

    1. Create a cardholder
    2. Create a card for the cardholder
    3. Activate the card

    1 Create a cardholder

    A Cardholder represents an individual or business entity that can be issued cards. To get started, create a Cardholder with name, billing information, and whether they’re an individual or company.

    You can include additional information such as a phone_number or email; some features like digital wallets require a valid email or phone number.

    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 "billing[address][line1]"="1234 Main Street" \ -d "billing[address][city]"="San Francisco" \ -d "billing[address][state]"=CA \ -d "billing[address][postal_code]"=94111 \ -d "billing[address][country]"=US
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' cardholder = Stripe::Issuing::Cardholder.create({ name: 'Jenny Rosen', email: 'jenny.rosen@example.com', phone_number: '+18008675309', status: 'active', type: 'individual', billing: { address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', postal_code: '94111', country: 'US', }, }, })
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' cardholder = stripe.issuing.Cardholder.create( name='Jenny Rosen', email='jenny.rosen@example.com', phone_number='+18008675309', status='active', type='individual', billing={ 'address': { 'line1': '1234 Main Street', 'city': 'San Francisco', 'state': 'CA', 'postal_code': '94111', 'country': 'US', }, }, )
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $cardholder = \Stripe\Issuing\Cardholder::create([ 'name' => 'Jenny Rosen', 'email' => 'jenny.rosen@example.com', 'phone_number' => '+18008675309', 'status' => 'active', 'type' => 'individual', 'billing' => [ 'address' => [ 'line1' => '1234 Main Street', 'city' => 'San Francisco', 'state' => 'CA', 'postal_code' => '94111', 'country' => 'US', ], ], ]);
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CardholderCreateParams params = CardholderCreateParams.builder() .setName("Jenny Rosen") .setEmail("jenny.rosen@example.com") .setPhoneNumber("+18008675309") .setStatus(CardholderCreateParams.Status.ACTIVE) .setType(CardholderCreateParams.Type.INDIVIDUAL) .setBilling( CardholderCreateParams.Billing.builder() .setAddress( CardholderCreateParams.Billing.Address.builder() .setLine1("1234 Main Street") .setCity("San Francisco") .setState("CA") .setPostalCode("94111") .setCountry("US") .build()) .build()) .build(); Cardholder cardholder = Cardholder.create(params);
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const cardholder = await stripe.issuing.cardholders.create({ name: 'Jenny Rosen', email: 'jenny.rosen@example.com', phone_number: '+18008675309', status: 'active', type: 'individual', billing: { address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', postal_code: '94111', country: 'US', }, }, });
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.IssuingCardholderParams{ Billing: &stripe.IssuingBillingParams{ Address: &stripe.AddressParams{ Country: stripe.String("US"), Line1: stripe.String("1234 Main Street"), City: stripe.String("San Francisco"), PostalCode: stripe.String("94111"), State: stripe.String("CA"), }, }, Email: stripe.String("jenny.rosen@example.com"), Name: stripe.String("Jenny Rosen"), PhoneNumber: stripe.String("+18008675309"), Status: stripe.String(string(stripe.IssuingCardholderStatusActive)), Type: stripe.String(string(stripe.IssuingCardholderTypeIndividual)), } ch, _ := cardholder.New(params)
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CardholderCreateOptions { Billing = new BillingOptions { Address = new AddressOptions { Line1 = "1234 Main Street", City = "San Francisco", State = "CA", PostalCode = "94111", Country = "US", }, }, Email = "jenny.rosen@example.com", PhoneNumber = "+18008675309", Name = "Jenny Rosen", Status = "active", Type = "individual", }; var service = new CardholderService(); var card = service.Create(options);

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

    2 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. If you’re creating a physical card, a shipping address is required.

    curl https://api.stripe.com/v1/issuing/cards \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d cardholder=ich_1Cm3pZIyNTgGDVfzI83rasFP \ -d type=virtual \ -d currency=usd
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' card = Stripe::Issuing::Card.create({ cardholder: 'ich_1Cm3pZIyNTgGDVfzI83rasFP', type: 'virtual', currency: 'usd', })
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' card = stripe.issuing.Card.create( cardholder='ich_1Cm3pZIyNTgGDVfzI83rasFP', type='virtual', currency='usd', )
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); $card = \Stripe\Issuing\Card::create([ 'cardholder' => 'ich_1Cm3pZIyNTgGDVfzI83rasFP', 'type' => 'virtual', 'currency' => 'usd', ]);
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; CardCreateParams params = CardCreateParams.builder() .setCardholder("ich_1Cm3pZIyNTgGDVfzI83rasFP") .setType(CardCreateParams.Type.VIRTUAL) .setCurrency("usd") .build(); Card card = Card.create(params);
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const card = await stripe.issuing.cards.create({ cardholder: 'ich_1Cm3pZIyNTgGDVfzI83rasFP', type: 'virtual', currency: 'usd', });
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.IssuingCardParams{ Cardholder: stripe.String("ich_1Cm3pZIyNTgGDVfzI83rasFP"), Type: stripe.String(string(stripe.IssuingCardTypeVirtual)), Currency: stripe.String(string(stripe.CurrencyUSD)), } ca, _ := card.New(params)
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CardCreateOptions { Cardholder = "ich_1Cm3pZIyNTgGDVfzI83rasFP", Type = "virtual", Currency = "usd", }; var service = new CardService(); var card = service.Create(options);

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

    3 Activate the card

    In order for authorizations to be approved on a card, its status must be set to active.

    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.

    curl https://api.stripe.com/v1/issuing/cards/ic_1CoYuRKEl2ztzE5GIEDjQiUI \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d status=active
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' Stripe::Issuing::Card.update( 'ic_1CoYuRKEl2ztzE5GIEDjQiUI', { status: 'active', } )
    # Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/account/apikeys stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' card = stripe.issuing.Card.modify( 'ic_1CoYuRKEl2ztzE5GIEDjQiUI', status='active', )
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys \Stripe\Stripe::setApiKey('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); \Stripe\Issuing\Card::update( 'ic_1CoYuRKEl2ztzE5GIEDjQiUI', [ 'status' => 'active', ] );
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; Card card = Card.retrieve("ic_1CoYuRKEl2ztzE5GIEDjQiUI"); CardUpdateParams params = CardUpdateParams.builder() .setStatus(CardUpdateParams.Status.ACTIVE) .build(); card.update(params);
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc'); const card = await stripe.issuing.cards.update( 'ic_1CoYuRKEl2ztzE5GIEDjQiUI', { status: 'active', } );
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc" params := &stripe.IssuingCardParams{ Status: stripe.String(string(stripe.IssuingCardStatusActive)), } ca, _ := card.Update("ic_1CoYuRKEl2ztzE5GIEDjQiUI", params)
    // Set your secret key. Remember to switch to your live secret key in production! // See your keys here: https://dashboard.stripe.com/account/apikeys StripeConfiguration.ApiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"; var options = new CardUpdateOptions { Status = "active", }; var service = new CardService(); var card = service.Update("ic_1CoYuRKEl2ztzE5GIEDjQiUI", options);

    Was this page helpful?

    Feedback about this page?

    Thank you for helping improve Stripe's documentation. If you need help or have any questions, please consider contacting support.

    On this page