checkout.completed
The buyer paid on the hosted page.
On this page
| Type | checkout.completed |
|---|---|
| Cause | The payment of the session succeeded. This can happen after the session expiry time. |
| Payload | The checkout_session object in data.object |
| Subscription | On by default for a new endpoint. |
When to use it
Show the buyer a confirmation. To release goods or access, use payment.succeeded or transaction.completed, which report the money.
Notes
- The
statusvalue iscompleted. The API reports the same state ascomplete.
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.completed",
"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": "completed",
"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": "2026-09-14T09:24:52Z"
}
}
}Other checkout events: checkout.created, checkout.expired.