Skip to main content
checkout.expired is off by default. It will not be delivered until you enable it in Dashboard → Developers. See Receiving Webhooks for instructions.

Payload Structure

Example Payload

expired_at is a Ruby-formatted timestamp string ("2025-05-30 06:05:22 UTC"), not ISO 8601. Other webhook events, such as checkout.review.created, use ISO 8601 ("2026-04-08T14:30:00Z") for their timestamps. Handle both formats if you write a shared date parser across webhook events.

Handling Expired Events

The expired_at timestamp indicates when the checkout session expired, and the type field specifies whether it was a deposit or withdrawal attempt. If you place any balance on hold (ie for withdrawal) you should release it.