Learn how to handle transactions.


After an authorization is approved and is captured, the status on the authorization 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 30 days after authorization.

When an authorization is captured, two things happen.

  • The status on the authorization is set to closed, releasing the purchase amount held by that authorization. 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 your Issuing balance.

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. Refunds can also be reversed and can be identified as a transaction with type of refund with a negative amount.

When we create a transaction representing a refund, credit, or refund reversal, we try to link it to the original authorization. In some cases, like when a card has been credited rather than refunded, this isn’t possible. In these cases, the authorization field of the transaction is set to null, and the transaction won’t be linked to the authorization.

{ "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": "94107", "state": "CA", "url": null }, "metadata": {}, "type": "refund", }

Merchants can capture an amount less than the amount that has been authorized. As a result, a transaction may show an amount less than on its linked authorization. In this case, the amount of funds held by Stripe for an authorization is the difference of the authorization amount and all linked capture transaction amounts.

Businesses in some merchant categories (including vehicle rentals, bars and restaurants, and ground transportation) won’t know the final transaction amount at the time of authorization. These businesses can authorize a card for an amount and then capture funds greater than that amount.

For example, a restaurant often authorizes a charge for the bill amount and then captures an amount that includes the tip. In this case, the authorized amount is a relatively close estimate of the amount to be captured. However, in a case such as ground transportation, the authorized amount is typically a minimal amount, whereas the captured amount reflects the actual journey taken by the cardholder.

Some merchant categories (including airlines, cruise lines, or railway merchants) may authorize a transaction and then capture funds multiple times. An example of this is when you purchase three items but they ship separately when available. This results in the creation of multiple issuing_authorization.updated webhook events and multiple transactions.

Merchants may initiate a capture despite receiving a declined authorization, or even without an authorization. In either case, transaction objects are created, and the captured amount is debited from your balance and sent to the merchant. If no authorization was requested, the transaction objects won’t have a linked authorization object.

Sometimes these transactions correspond to legitimate purchases. In other cases, these transactions are unauthorized purchases or a result of fraudulent behavior. It is up to you (or your cardholder) to recognize when this is the case and dispute illegitimate transactions.

An example of a legitimate transaction without an authorization is a payment on an airplane. The terminals used on airplanes are usually not connected to the internet. Purchases on flights are not able to create authorizations and instead create transactions that are sent after the plane lands.

{ "id": "ipi_1GTG10EEsyYlpYZ9VJn2xV3B", "object": "issuing.transaction", "amount": -100, "authorization": null, "balance_transaction": null, "card": "ic_1GBZQJEEsyYlpYZ99v6rq38S", "cardholder": null, "created": 1585783834, "currency": "usd", "livemode": false, "merchant_amount": -100, "merchant_currency": "usd", "merchant_data": { "category": "airlines_air_carriers", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94107", "state": "CA", "url": null }, "metadata": {}, "type": "capture", }
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.