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 programmes
    Programme management
    Customise your card programme
    Add funds to your card programme
    Credit Consumer Issuing
    Controls
    Spending controls
    Advanced fraud tools
    3DS
    Fraud challenges
    Real-time authorisations
    PIN management
    Issuing Elements
    Token Management
    Funding
    Balance
    Post-fund your integration with Stripe
    Post-fund your integration with Dynamic Reserves
    Purchases
    Authorisations
    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

Issuing transactions

Learn how to use Issuing to handle transactions.

Copy page

After an authorisation is approved and is captured, the status on the authorisation is set to closed and a Transaction object is created. This normally happens within 24 hours; however hotels, airlines, and car rental companies are able to capture up to 31 days after authorisation.

When an authorization is captured, two things happen.

  • The status on the authorisation is set to closed, releasing the purchase amount held by that authorisation. A balance transaction of type issuing_authorization_release is created to represent this.
  • A new transaction object of type capture is created. The purchase amount is deducted from the balance you’re using for Issuing.

Spending controls, real time authorisation controls, and card status (whether a card is active or not) don’t apply for capture. They can be used to determine whether authorisations are approved, but captures for approved authorisations always succeed.

Handling other transactions

In addition to regular transactions, there are a few other cases that you should be ready to handle.

Refunds are transactions with type of refund.

When we create a transaction representing a refund or credit, we try to link it to the original payment authorisation. Refunds aren’t necessarily tied to the original payment transaction or authorisation, so linking them is an inexact science. As a result, we might link to an unrelated authorisation or be unable to link to an authorisation at all (for example, if the card is credited rather than refunded). In these cases, the authorization field of the transaction is set to null, and the transaction won’t be linked to the authorisation. We process all refunds and credits the same way, regardless of their linkage to a payment authorisation.

{ "id": "ipi_1GTG10EEsyYlpYZ9VJn2xV3B", "object": "issuing.transaction", "amount": 100, "authorization": "iauth_1GBZQyEEsyYlpYZ9255L8GQC", "balance_transaction": null, "card": "ic_1GBZQJEEsyYlpYZ99v6rq38S", "cardholder": null, "created": 1585783834, "currency": "usd", "livemode": false, "merchant_amount": 100, "merchant_currency": "usd", "merchant_data": { "category": "taxicabs_limousines", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94111", "state": "CA", "url": null }, "metadata": {}, "type": "refund", }

Testing

To simulate the creation of a refund transaction, you can use the Transaction Refund API in the Issuing test helpers.

Command Line
cURL
curl -X POST https://api.stripe.com/v1/test_helpers/issuing/transactions/
{{TRANSACTION_ID}}
/refund
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

To create a refund transaction that doesn’t link to an authorisation, use the Create Unlinked Refund API in the Issuing test helpers.

Command Line
cURL
curl https://api.stripe.com/v1/test_helpers/issuing/transactions/create_unlinked_refund \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d card=
{{CARD_ID}}
\ -d amount=1000
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access programme.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc