Skip to content
Create account or Sign in
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
Get started with Connect
Design your integration
Integration fundamentals
Example integrations
Account management
Onboard connected accounts
Configure account Dashboards
Capabilities and information requirements
Work with connected account types
Payment processing
Accept payments
Pay out to accounts
Platform administration
Manage your Connect platform
Tax forms for your Connect platform
Embedded finance
Treasury for platforms
Issuing
    Overview
    How Issuing works
    Global availability
    Product and marketing compliance guidance (US)
    Marketing guidance (Europe/UK)
    Manage fraud
    Get started with Issuing
    Onboarding overview
    Choose a cardholder type
    Choose your card type
    Virtual cards
    Physical cards
    Fund your Issuing balance
    Testing
    Integrate Issuing
    Integration guides
    Sample app
    Manage cards
    Digital wallets
    Replacement cards
    Card programs
    Program management
    Processor-only Issuing
    Customize your card program
    Add funds to your card program
    Consumer Credit Issuing
    Consumer prepaid debit cards
    Stablecoin-backed cards
    Controls
    Spending controls
    Lifecycle controls
    Radar
    3DS
    Alerts for updated phone numbers
    Fraud challenges
    Real-time authentications
    Real-time authorizations
    Issuer-app authentications
    PIN management
    Issuing Elements
    Token management
    Postfunding
    Postfund your integration with Stripe
    Postfund your integration with Dynamic Reserves
    Purchases
    Authorizations
    Transactions
    Disputes
    Merchant categories
    ATM usage
    Enriched merchant data
    Issuing with Connect
    Set up an Issuing and Connect integration
    Update terms of service acceptance
    Connect funding
    Connected accounts, cardholders, and cards
    Inactive connected accounts offboarding
    Embed card management UI
    Issuing with Connect and Accounts V2 APIs
    Set up an Issuing and Connect integration
    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
    Customer support for Issuing and Treasury for platforms
    Issuing watchlist
Capital for platforms
Managed support
United States
English (United States)
  1. Home/
  2. Platforms and marketplaces/
  3. Issuing

Issuing lifecycle controls

Learn how to use Issuing to control automatic usage-based cancellation of cards.

You can use lifecycle controls to automatically cancel a virtual card after a specified number of payments. This provides support for single-use or n-use cards. To enable this functionality, set the lifecycle_controls parameter when creating a virtual card.

How it works

Set lifecycle_controls.cancel_after.payment_count to specify the number of payments after which you want the virtual card automatically canceled. After the card reaches this payment count, its status automatically updates to canceled, and all future authorizations are declined.

What counts as a payment

The following events count towards the payment_count:

  1. Approved authorizations >1 USD: Standard card transactions that are approved
  2. Captured authorizations ≤1 USD: Small transactions (≤1 USD) that are actually captured and result in a transaction
  3. Force posts: When a business captures funds without an authorization

Special handling for ≤1 USD authorizations

Many businesses use ≤1 USD authorizations to test if a card is valid, but don’t capture these authorizations to transfer funds. To prevent premature card cancellation:

  • Uncaptured ≤1 USD authorizations don’t count towards payment_count
  • Only up to payment_count uncaptured ≤1 USD authorizations are allowed

Examples

The following scenarios demonstrate how lifecycle controls work for a single-use card (payment_count: 1):

Create the single-use card:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/issuing/cards \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -d currency=usd \ -d type=virtual \ -d "cardholder=
{{CARDHOLDER_ID}}
" \ -d "lifecycle_controls[cancel_after][payment_count]=1"

Scenario 1: Standard transaction

Scenario 2: With uncaptured ≤1 USD test authorization

Scenario 3: Captured ≤1 USD authorization

Scenario 4: Force post

Scenario 5: Force post after cancellation

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page