# Create virtual cards Create a cardholder and issue a virtual card. You can use the [Dashboard](https://dashboard.stripe.com/issuing/cards) or the [Create a card](https://docs.stripe.com/api/issuing/cards.md) 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](https://dashboard.stripe.com/issuing/cardholders) or the [Cardholders API](https://docs.stripe.com/api/issuing/cardholders.md) to create a cardholder. # Dashboard > This is a Dashboard for when testing-method is without-code. View the full page at https://docs.stripe.com/issuing/cards/virtual/issue-cards?testing-method=without-code. 1. Visit the [Cardholders tab](https://dashboard.stripe.com/issuing/cardholders) in the Issuing Dashboard. ![Issuing cardholders page](https://b.stripecdn.com/docs-statics-srv/assets/cardholders-page.636c014a4cc28707df5118006f76eb6c.png) 1. Click **Create cardholder** on the upper right. 1. Select cardholder type: individual or company. The full set of valid characters for both cardholder name and business name are alphanumeric characters and `/ -&:().'`. There’s a 24 character limit. ![Issuing cardholder form type and name fields](https://b.stripecdn.com/docs-statics-srv/assets/cardholder-form-type-name.580d1c848e5cd8c4cf4af9d50fac3d27.png) 1. Add a billing address. ![Issuing cardholder form billing address fields](https://b.stripecdn.com/docs-statics-srv/assets/cardholder-form-billing-address.889782c18b84111b57f0fd8152ebb4ad.png) 1. If you’re creating a company card, add the tax ID number. 1. Add contact information, which is required for certain features like digital wallets. ![Issuing cardholder form contact information fields](https://b.stripecdn.com/docs-statics-srv/assets/cardholder-form-contact-information.389c419fa3ab62f8df53ed06084b20ff.png) 1. Click **Create cardholder**. ### Individual type cardholder requirements When you select the individual cardholder type, you must add the cardholder’s legal first and last name and [date of birth](https://docs.stripe.com/api/issuing/cardholders/create.md#create_issuing_cardholder-individual-dob). Consider uploading [government-issued ID](https://docs.stripe.com/api/issuing/cardholders/create.md#create_issuing_cardholder-individual-verification), which may help reduce [watchlist reviews](https://support.stripe.com/questions/issuing-watchlist-reviews). ![Issuing cardholder form identity verification fields](https://b.stripecdn.com/docs-statics-srv/assets/cardholder-form-identity-fields.ac65dc239b5c14e3eb85e550d23b8f34.png) If you’re issuing cards to individuals for programs backed by Cross River Bank or Fifth Third Bank, you must record acceptance of the applicable Authorized User Terms before [activating](https://docs.stripe.com/issuing/cards/physical/issue-cards.md?testing-method=without-code#activate-the-card) a card for that cardholder. - [Cross River Bank Authorized User Terms](https://stripe.com/legal/issuing/crb-authorized-user-terms) - [Fifth Third Bank Authorized User Terms](https://stripe.com/legal/issuing/fifth-third-authorized-user-terms). See the [Required Agreements for Issuing and Financial Accounts for platforms](https://docs.stripe.com/issuing/compliance-us.md) for more information about which agreements you must present to account holders and cardholders. ### Company type cardholder requirements When you add a company name, ensure that it has a minimum of two words, for example: Stripe Inc. ## Create a card You can use the [Dashboard](https://dashboard.stripe.com/issuing/cards) to create a new card. 1. Visit the [Cards tab](https://dashboard.stripe.com/issuing/cards) in the Issuing Dashboard. ![Issuing cards page](https://b.stripecdn.com/docs-statics-srv/assets/cards-page.e8e9728de4c5cbf6bf3b557dc634ed56.png) 1. Click **Create card** on the upper right. 1. Search for the cardholder you created in [Create a cardholder](https://docs.stripe.com/issuing/cards/virtual/issue-cards.md#create-cardholder). 1. Select **Virtual** for the type. 1. Select **Activate card**. ![Create virtual card drawer](https://b.stripecdn.com/docs-statics-srv/assets/create-virtual-card.c049ecd7b3aa31853fb43d870c9680ad.png) 1. Click **Create**. # API > This is a API for when testing-method is with-code. View the full page at https://docs.stripe.com/issuing/cards/virtual/issue-cards?testing-method=with-code. The [Cardholder](https://docs.stripe.com/api/.md#issuing_cardholder_object) object represents an individual or business entity that you can issue cards to. Create a `Cardholder` with a [name](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-name) to display on cards and the [billing](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-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](https://docs.stripe.com/issuing/cards/digital-wallets.md). You can also specify [preferred_locales](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-preferred_locales) to customize the cardholder’s language for features such as [3D Secure](https://docs.stripe.com/issuing/3d-secure.md). #### curl ```bash curl https://api.stripe.com/v1/issuing/cardholders \ -u <>: \ -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](https://docs.stripe.com/webhooks.md) event. ### Individual type cardholder requirements The cardholder [type](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-type) defaults to `individual`, but you can [set the type](https://docs.stripe.com/issuing/other/choose-cardholder.md) to `company` if you choose. You must provide values for the first and [last names](https://docs.stripe.com/api/issuing/cardholders/create.md#create_issuing_cardholder-individual-last_name) of individual cardholders, which Stripe screens in accordance with regulatory guidelines. Consider also providing [date of birth](https://docs.stripe.com/api/issuing/cardholders/create.md#create_issuing_cardholder-individual-dob), which might help reduce [watchlist reviews](https://support.stripe.com/questions/issuing-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](https://stripe.com/legal/issuing/celtic-authorized-user-terms) before [activating](https://docs.stripe.com/issuing/cards/virtual/issue-cards.md#activate-card) a card for that cardholder. See the [Required Agreements for Issuing and Financial Accounts for platforms](https://docs.stripe.com/issuing/compliance-us.md#issuing-terms) 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: ```json { "id": "{{CARDHOLDER_ID}}", "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. ```curl curl https://api.stripe.com/v1/issuing/cardholders/{{ISSUINGCARDHOLDER_ID}} \ -u "<>:" \ -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](https://docs.stripe.com/api.md#issuing_card_object) and assign it to the cardholder. This request contains the ID of the `Cardholder` object, `currency`, and `virtual` for the card type. #### Issuing-only ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d cardholder="{{ISSUINGCARDHOLDER_ID}}" \ -d currency=usd \ -d type=virtual ``` #### Issuing with Financial Accounts for platforms To create a card that draws funds from a [FinancialAccount](https://docs.stripe.com/api/treasury/financial_accounts.md), pass `financial_account` in the request. ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d cardholder="{{ISSUINGCARDHOLDER_ID}}" \ -d financial_account=fa_1KsZDkACgxNDEoMCVZko5z5F \ -d currency=usd \ -d type=virtual ``` Stripe returns a `Card` object upon creation, and sends the `issuing_card.created` [webhook](https://docs.stripe.com/webhooks.md) event. ### Expiration date Virtual cards default to an expiration date 3 years in the future, randomized by up to 3 months for security. The expiration date can fall between 2 years and 9 months and 3 years and 3 months from issuance. > When you issue a [replacement card](https://docs.stripe.com/issuing/cards/replacements.md), we set a different expiration date to prevent two identical cards. #### Set custom expiration Set the expiration year ([exp_year](https://docs.stripe.com/api/issuing/cards/create.md#create_issuing_card-exp_year)) and expiration month ([exp_month](https://docs.stripe.com/api/issuing/cards/create.md#create_issuing_card-exp_month)) during card creation to control the card’s expiration date. The expiration date must be at least 1 month and less than 5 years in the future. For example, if it’s April 2024, set a date between May 2024 and March 2029, inclusive. > You must specify the desired expiration date again when you issue a [replacement card](https://docs.stripe.com/issuing/cards/replacements.md), or the new card might revert to the default expiration date. ## Activate the card For [authorizations](https://docs.stripe.com/issuing/purchases/authorizations.md) to be approved on a card, its `status` must be set to `active`. Past-due [requirements](https://docs.stripe.com/api/issuing/cardholders/object.md#issuing_cardholder_object-requirements-past_due) 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](https://docs.stripe.com/api/.md#create_issuing_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](https://docs.stripe.com/api.md#update_issuing_card) endpoint to set its `status` to `active`. ```curl curl https://api.stripe.com/v1/issuing/cards/{{ISSUINGCARD_ID}} \ -u "<>:" \ -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](https://docs.stripe.com/api.md#update_issuing_card) API to set the card’s `status` to `active`.