Webhook event
checkout_session.expired
The session's order expired unpaid, or the session was expired by the API.
- Type
checkout_session.expired- The object it carries
- the
checkout_sessionobject - Subscribe with
checkout_session.expired,checkout_session.*or*
Example payload
The body of the request your endpoint receives, shown here over several lines. On the wire it is compact JSON; check its signature over the bytes exactly as they arrive.
Example payload
{
"id": "evt_t6eqt1zkws3p5p1dmh3540ea",
"object": "event",
"livemode": true,
"created": "2026-10-11T14:03:22.418Z",
"type": "checkout_session.expired",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "cs_z7ek5wj68fyz80j7bz1eq4e0",
"object": "checkout_session",
"livemode": true,
"created": "2026-10-11T14:03:22.418Z",
"status": "expired",
"mode": "payment",
"order": "ord_0zymngngvf12b8b2cra7tb8e",
"url": "https://pay.orrerie.com/c/cs_z7ek5wj68fyz80j7bz1eq4e0",
"app_url": "https://pay.orrerie.com/o/cs_z7ek5wj68fyz80j7bz1eq4e0",
"success_url": "https://acme.example/thanks?session={CHECKOUT_SESSION_ID}",
"cancel_url": "https://acme.example/cart",
"customer": "cus_8ea07c40qsvv19f7rgmeb8ha",
"customer_email": "jane@example.com",
"client_reference_id": "1042",
"collect": {
"email": "required",
"name": "optional",
"shipping_address": "hidden"
},
"collected": {
"email": null,
"name": null,
"shipping_address": null
},
"locale": "auto",
"subscription": null,
"expires_at": "2026-10-11T15:03:22.418Z",
"completed_at": null,
"metadata": {
"cart_id": "c_7781"
}
},
"previous_attributes": {
"status": "open"
}
},
"request": {
"id": null,
"idempotency_key": null
},
"pending_webhooks": 1
}Fields of data.object
| Field | In this example |
|---|---|
id | "cs_ |
object | "checkout_session" |
livemode | true |
created | "2026-10-11T14: |
status | "expired" |
mode | "payment" |
order | "ord_ |
url | "https:// |
app_url | "https:// |
success_url | "https:// |
cancel_url | "https:// |
customer | "cus_ |
customer_email | "jane@example.com" |
client_reference_id | "1042" |
collect | An object with email, name, shipping_address |
collected | An object with email, name, shipping_address |
locale | "auto" |
subscription | null |
expires_at | "2026-10-11T15: |
completed_at | null |
metadata | An object with cart_id |
What each field means is on the page of the checkout_session object. data.previous_attributes holds the old values of exactly the fields that changed: here status.
Endpoints behind it
Calls that change checkout sessions. An event is also sent when a payer, the network, a timer or a person in the dashboard causes the change; the sentence above says which.