Stripe · event: checkout.session.completed ·
content type: application/json; charset=utf-8
This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).
One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:
Then paste the bin's URL into Stripe's webhook settings to capture a real delivery. No signup.
content-type: application/json; charset=utf-8 user-agent: Stripe/1.0 (+https://stripe.com/docs/webhooks) stripe-signature: t=1787961600,v1=8a4d2f9b1c7e5a3d0f6b8c2e9a5d7f4b1c8e6a3d9f2b5c7e0a4d8f6b3c9e5a2d
{
"id": "evt_1PQvYz2eZvKYlo2CFmNoPqRs",
"object": "event",
"api_version": "2024-06-20",
"created": 1787961600,
"data": {
"object": {
"id": "cs_test_a1B2c3D4e5F6g7H8i9J0kLmNoPqRsTuVwXyZa1B2c3D4e5F6",
"object": "checkout.session",
"amount_subtotal": 2000,
"amount_total": 2000,
"currency": "usd",
"customer": "cus_QGhIjKlMnOpQrS",
"customer_details": {
"email": "jenny.rosen@example.com",
"name": "Jenny Rosen"
},
"mode": "payment",
"payment_intent": "pi_3PQvXk2eZvKYlo2C0abcdefg",
"payment_status": "paid",
"status": "complete",
"metadata": {
"order_id": "6735"
},
"success_url": "https://example.com/success?session_id={CHECKOUT_SESSION_ID}"
}
},
"livemode": false,
"pending_webhooks": 1,
"request": {
"id": null,
"idempotency_key": null
},
"type": "checkout.session.completed"
}
payment_status: with delayed payment methods the session completes with
payment_status: "unpaid" and a separate
checkout.session.async_payment_succeeded arrives later.metadata you set when creating the session comes back here — the
standard way to correlate a session with your own order ID.GET /v1/checkout/sessions/:id/line_items if you need them.Reproduce this delivery against any endpoint (your handler, a bin, staging):
$ curl -X POST https://your-endpoint.example/hook \
-H 'content-type: application/json; charset=utf-8' \
-H 'user-agent: Stripe/1.0 (+https://stripe.com/docs/webhooks)' \
-H 'stripe-signature: t=1787961600,v1=8a4d2f9b1c7e5a3d0f6b8c2e9a5d7f4b1c8e6a3d9f2b5c7e0a4d8f6b3c9e5a2d' \
-d '{"id":"evt_1PQvYz2eZvKYlo2CFmNoPqRs","object":"event","api_version":"2024-06-20","created":1787961600,"data":{"object":{"id":"cs_test_a1B2c3D4e5F6g7H8i9J0kLmNoPqRsTuVwXyZa1B2c3D4e5F6","object":"checkout.session","amount_subtotal":2000,"amount_total":2000,"currency":"usd","customer":"cus_QGhIjKlMnOpQrS","customer_details":{"email":"jenny.rosen@example.com","name":"Jenny Rosen"},"mode":"payment","payment_intent":"pi_3PQvXk2eZvKYlo2C0abcdefg","payment_status":"paid","status":"complete","metadata":{"order_id":"6735"},"success_url":"https://example.com/success?session_id={CHECKOUT_SESSION_ID}"}},"livemode":false,"pending_webhooks":1,"request":{"id":null,"idempotency_key":null},"type":"checkout.session.completed"}'
← All payload examples · Related guide · Signature debugger · Docs