When a card is used to make a purchase, an authorization request is made which is approved or declined based on the following steps.
- An Authorization object is created
- Stripe checks if the Issuing balance has sufficient funds
- Stripe checks if the card is active
- Stripe checks if spending controls should decline the authorization
- Stripe sends an
issuing_authorization.requestevent which you
- If you do not respond to the webhook within 2 seconds, Stripe uses your default settings to approve or decline the authorization.
Once an authorization request is approved, the status on the authorization is updated to
pending, and the
issuing_authorization.updated webhook event is sent. The
amount is deducted from your Issuing balance and held in reserve until the authorization is either captured or voided. Once captured, a transaction is created, and the
status of the authorization is set to
If the authorization request is declined, its status is immediately set to
closed. If the authorization request is voided or not captured in a timely manner, its status is set to
Purchases in different currencies
Cards can be used for purchases in any currency that the card network supports. Stripe automatically converts the currency of the purchase into the card’s currency when holding funds, using the card network’s daily rate.
merchant_amount represents the cost of the purchase in the local currency. The
amount field represents the expected amount of the
Transaction in the card’s currency and is not final until the
Authorization has been captured.
Handling other authorizations
In addition to regular authorizations, there are a few other cases that you should be ready to handle.
If a merchant decides to reduce the amount authorized, they may perform a partial reversal.
Partial reversals can be accounted for as
issuing_authorization.updated events, where the original authorization’s
merchant_amount are lowered. Surplus held funds are released back to your available balance immediately.