Issuing authorizations
When a card is used to make a purchase, it generates an authorization request, which is approved or declined based on the following steps:
- Stripe checks that the balance used for Issuing has sufficient funds, that the card is active, and that your spending controls allow the authorization.
- Stripe sends an
issuing_authorization.request
event.
Set up a webhook to listen for this event so you can synchronously approve/decline Authorizations.
- Before closing the
issuing_authorization.request
event, you can approve or decline the authorization by responding directly to the webhook event (preferred) or by calling our approve or decline endpoints. - If you don’t approve or decline the authorization within 2 seconds, Stripe uses your default settings to approve or decline the authorization.
- Stripe sends an
issuing_authorization.created
event, notifying you of the Authorization’s creation.
Authorization updates
When Stripe receives an authorization request, we send an issuing_authorization.created
webhook event. If you approve the authorization, we deduct the amount
from your Issuing balance and hold it in reserve until the authorization is either captured, voided, or expired without capture. If you decline the authorization, the status is set to closed
and we don’t place any holds.
When the authorization is captured, a transaction is created and the status
of the authorization is set to closed
.
If the authorization request is voided, we send an issuing_authorization.updated
webhook event with its status
set to reversed
and the amount
as 0
. We add the voided amount back to your Issuing balance, essentially undoing the balance impact of the original authorization.
If the authorization request is expired without capture, we send an issuing_authorization.updated
webhook event with its status
set to reversed
and the amount
representing any remaining amount authorized for possible late captures. We add the expired amount back to your Issuing balance, essentially undoing the balance impact of the original authorization.
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.
The 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.
Using with Stripe Treasury
Authorizations on cards that use funds stored in Treasury FinancialAccounts have a treasury
field with references to Treasury resources: Treasury Transaction, ReceivedCredit, and ReceivedDebit.