checkout.expired
The checkout session ended without a payment.
On this page
| Type | checkout.expired |
|---|---|
| Cause | The session reached its expiry time, you expired it, or the buyer cancelled on the hosted page. |
| Payload | The checkout_session object in data.object |
| Subscription | On by default for a new endpoint. |
When to use it
Release stock or reservations that you held for the session. The buyer needs a new session to pay.
Notes
- A buyer cancellation also sends this event. The
statusvalue then iscancelled. - When the session created its own draft transaction and no payment is in progress, Merxian also cancels that transaction.
Payload
The fields of data.object. The envelope is the same for every event.
- idstring
The checkout session ID,
cs_…. - objectstring
Always
checkout_session. - statusstring
The state of the session.
One of:
open,payment_pending,completed,expired,cancelled - currencystring
The ISO 4217 currency code. An empty string when the session has no transaction yet.
- amountsobject
Amounts in minor units. All
0when the session has no transaction yet. The buyer, when the session has one.
The transaction of the session,
txn_….The
clientReferenceIdthat you set on the session.- created_atstring (date-time)
When the session was created.
When the buyer completed payment.
Example
{
"id": "whevt_7Kd2VpXn4TqB9mLzR",
"object": "event",
"type": "checkout.expired",
"created_at": "2026-09-14T09:24:53Z",
"api_version": "2026-08-01",
"account_id": "acct_5Rn8bQ2xW7mK4tLzP",
"data": {
"object": {
"id": "cs_6HvB2nQx9LmT4kWpR",
"object": "checkout_session",
"status": "expired",
"currency": "EUR",
"amounts": {
"subtotal": 12000,
"discount": 0,
"net": 12000,
"tax": 2280,
"total": 14280,
"refunded": 0
},
"customer": {
"id": "cus_2Lp7XcN4vB8mQ1tKd",
"email": "ada@example.com",
"name": "Ada Example"
},
"transaction_id": "txn_0F8mQ2rXbT4kL9pZa",
"client_reference_id": "A-1042",
"created_at": "2026-09-14T09:21:07Z",
"completed_at": null
}
}
}Other checkout events: checkout.created, checkout.completed.