Skip to main content
Sent when a checkout session was never completed and its expiry time has passed. Use it to release held inventory, mark an order as abandoned, or send a recovery email.
Expiry is not always final. A payment that was already on its way, such as a bank transfer, can still complete the checkout after this event, and checkout.completed follows. Keep the order so a late payment can still fulfil it.

Event fields

string
The event’s unique identifier, prefixed evt_. Use it to deduplicate deliveries.
string
Always checkout.expired.
string
When the event occurred, in UTC.
string
Your account’s ID.
string
The checkout session that expired.
string
Always expired.
string
The checkout’s mode: payment, setup, or subscription.
null
Always null. An expired checkout never collected payment.
string
The amount the checkout would have collected, as a decimal string.
string | null
The checkout currency code.
string | null
Checkout reference you supplied, when available.
object | null
The customer attached to the checkout, or null if none was attached.
null
Always null. An expired checkout has no charge.
null
Always null. An expired checkout never started a subscription.
string | null
Where the customer would have been redirected on success.
string | null
Where the customer would have been redirected had they canceled.
object
Public metadata stored on the checkout.
null
Always null. The checkout was never completed.
string
When the checkout’s expiry lapsed, in UTC.
string
When the checkout session was created, in UTC.