# Issuing for your business Learn how to issue cards for your own business. Use [this guide](https://docs.stripe.com/issuing.md) if you’re interested in using Issuing for other businesses or customers that are on your platform. Issuing for your business lets you programmatically create virtual cards for your business, employees, contractors, or AI agents to make purchases on your behalf. ## Get started You can [launch a card program](https://dashboard.stripe.com/issuing/overview) directly from the Stripe Dashboard. ## Programs Choose the program that fits your business. | Program offering | Description | Limits | Pricing and terms | | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | Standard | Get started immediately with no sales conversation. Standard programs cover the most common issuing use cases with built-in spend and card limits and standard pricing. | Standard limits apply. Contact Stripe to increase or remove limits. | [Review pricing](https://stripe.com/pricing#issuing) and [apply](https://dashboard.stripe.com/issuing/overview). | | Custom | Access a more custom offering that lets your business expand to new use cases, currencies (USDC and global fiat), regions, and revenue sharing opportunities. | Unlimited | [Contact sales](https://stripe.com/contact/embedded-finance) | ## Use cases ### Corporate expense management Your business can issue cards to its own employees or contractors to make purchases on behalf of the business. Your business controls what can be spent, where it can be spent, and how much your business can enforce transaction approvals at the card level. Instead of reimbursing employees after the fact as with a programmable corporate card, your business sets the rules up front and the card enforces them automatically. Examples: - An employee card locked to software subscriptions and travel - A contractor card capped at 500 USD per month for office supplies In this use case, the cardholder and the business that benefits from the card spending are part of the same business. There’s no resale and no customer on the other end. ### Reseller Your business uses Stripe-issued cards to purchase inventory or goods from a supplier, which then resells to its own customers in a separate transaction. Your Stripe card handles the buy side only. The sell side happens outside of Stripe. Examples: - A travel platform purchasing wholesale airline tickets from a carrier using a Stripe card, then reselling those tickets to customers. - A subscription reseller buying streaming service licenses in bulk, then reselling them to customers. In this use case, the card is used for procurement, not for the final customer transaction. Your business is buying to resell instead of buying to consume. ### On-demand services and fulfillment Your business purchases goods or services from another business to fulfill a service it’s providing to your own customers. The purchase is incidental to the service. Your business is buying because completing the service requires it. It isn’t buying to resell. Examples: - A meal curation service buying ingredients to fulfill a customer’s meal plan. - A home design service purchasing decor items to execute a customer’s design brief. In this use case, there’s always a customer whose need is being fulfilled. The purchase is a means to delivering a service. ## Fund your financial account To spend money using cards, you need to add funds to the financial account associated with your account. You can use your financial account across other Stripe products, and to store funds that back your cards. You can fund your financial account from an external bank account or transfer funds from your payments balance either [one time](https://docs.stripe.com/treasury.md#transfer-funds-stripe-balance-once) or on a [recurring basis](https://docs.stripe.com/treasury.md#transfer-funds-stripe-balance-recurring). ### Retrieve your financial account ID First, get your financial account ID. ```curl curl https://api.stripe.com/v2/money_management/financial_accounts \ -H "Authorization: Bearer $STRIPE_SECRET_KEY" \ -H "Stripe-Version: 2026-01-28.preview" ``` Example response: ```json { "data": [ { "id": "{{FINANCIAL_ACCOUNT_ID}}", "object": "v2.money_management.financial_account", ... ... } ] } ``` ### Retrieve your funding credentials Use this method to return a routing number and account number. You can use these to initiate funding from your external bank account. ```curl curl -G https://api.stripe.com/v2/money_management/financial_addresses \ -H "Authorization: Bearer $STRIPE_SECRET_KEY" \ -H "Stripe-Version: 2026-01-28.preview" \ -d "include[0]"="credentials.us_bank_account.account_number" ``` ### Retrieve your financial account balance Depending on which financial rail you used to fund your financial account, it can take 1 business day for those funds to become available. Use the Financial Accounts API to check your available balance. ```curl curl https://api.stripe.com/v2/money_management/financial_accounts/fa_65NvTFNdpXXUx1kx1rB16NoTesLDSQ1IgNPigisRKq09iq \ -H "Authorization: Bearer $STRIPE_SECRET_KEY" \ -H "Stripe-Version: 2026-01-28.preview" ``` Example response: ```json { "id": "fa_65NvTFNdpXXUx1kx1rB16NoTesLDSQ1IgNPigisRKq09iq", "object": "v2.money_management.financial_account", "balance": { "available": { "usd": { "value": 0, "currency": "usd" } }, "inbound_pending": { "usd": { "value": 0, "currency": "usd" } }, "outbound_pending": { "usd": { "value": 0, "currency": "usd" } } } } ``` ## Create cardholders and cards ### Create a cardholder A cardholder is an individual authorized to use the card. Create one before issuing any cards. ```curl curl https://api.stripe.com/v1/issuing/cardholders \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jenny.rosen@example.com" \ --data-urlencode "phone_number=+18008675309" \ -d status=active \ -d type=individual \ -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" ``` Example response: ```json { "id": "ich_123", ... } ``` ### Issue a card Reference the cardholder ID from the step above to issue a card for the cardholder. You can create multiple cards per cardholder. ```curl curl https://api.stripe.com/v1/issuing/cards \ -u "<>:" \ -d cardholder=ich_123 \ -d currency=usd \ -d type=virtual \ -d status=active ``` Example response: ```json { "id": "ic_123", ... } ``` ### Retrieve card number and CVC ```curl curl -G https://api.stripe.com/v1/issuing/cards/ic_123 \ -u "{{SECRET_KEY}}:" \ -d "expand[]=number" \ -d "expand[]=cvc" ``` ## Set controls Use the following features to customize your integration. | Capability | Description | | ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [Single-use cards](https://docs.stripe.com/issuing/controls/lifecycle-controls.md) | Issue virtual cards scoped to a single task or session. Cards are automatically invalidated after use. | | [Real-time authorizations](https://docs.stripe.com/issuing/controls/real-time-authorizations.md) | Approve or decline every transaction using webhooks. Make authorization decisions based on a business’s details and the card’s metadata. You own the authorization integration. | | [Spend controls](https://docs.stripe.com/issuing/controls/spending-controls.md#limit-a-cardholders-monthly-spend-across-all-of-their-cards) | Set limits on how much and how often consumers can spend, and which merchant categories are allowed. You can set controls at the card or cardholder level. | | [Full transaction visibility](https://docs.stripe.com/issuing/purchases/transactions.md) | Track every transaction including captures, refunds, partial captures, over-captures, and force captures, and reconcile them back to the originating card and purchase using metadata. | | [Advanced fraud signals](https://docs.stripe.com/issuing/controls/advanced-fraud-tools.md#get-started-with-advanced-fraud-tooling) | Get machine learning-generated risk scores on every authorization, including fraud risk, merchant dispute risk, and card testing detections. Opt in within the Stripe Dashboard. | ## Limits The standard program includes the following default limits: - Create 25 cards per week - Spend 5000 USD per week - Spend 500 USD per card per day - Reseller programs can only create virtual cards. - Reseller and on-demand and fulfillment programs can only create single use cards. If you’re interested in increasing or removing these limits for your standard program, contact Stripe. For more information about the custom program, [contact sales](https://stripe.com/contact/embedded-finance). ## Activate your sandbox [Sandboxes](https://docs.stripe.com/sandboxes.md) let you test your integration before going live. You can activate Issuing in a sandbox in the Stripe Dashboard without contacting sales. Sandbox access is instant. When you’re ready to go live, you can apply for an eligibility review in the Dashboard after testing your integration. Functionality is different in a sandbox and in live mode: - In a sandbox, all card transactions are simulated. No real funds move. - In live mode, real funds and cards are used for actual purchases. ### Migrate a v1 sandbox to v2 In some cases, you might need to migrate a v1 sandbox to v2. This video shows the migration process. ![](https://docs.stripecdn.com/717adb34358232ce5ea568d7ec78ed03f5aacfa6f9a685f3e85aa2fdb4cea755.mp4)