Webhook event
subscription.unpaid
Grace ended unpaid and the renewal order expired. Withdraw access now. A later payment makes it active again.
- Type
subscription.unpaid- The object it carries
- the
subscriptionobject - Subscribe with
subscription.unpaid,subscription.*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_p3qd68v0rqn5vayfesbzgfen",
"object": "event",
"livemode": true,
"created": "2026-11-04T08:09:00.000Z",
"type": "subscription.unpaid",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "sub_9q5v9rq2naessbxsrec2tsw0",
"object": "subscription",
"livemode": true,
"created": "2026-10-01T08:05:00.000Z",
"updated": "2026-11-04T08:09:00.000Z",
"status": "unpaid",
"customer": "cus_8ea07c40qsvv19f7rgmeb8ha",
"items": [
{
"price": "price_s5n6hhtmyv5erqb81efqgjy6",
"quantity": 1
}
],
"amount": "18.00",
"currency": "USD",
"interval": "month",
"interval_count": 1,
"reminder_days": [
7,
3,
1
],
"grace_days": 3,
"prepaid_periods_allowed": [
1,
3,
6,
12
],
"proration": "none",
"current_period_start": "2026-10-01T08:09:00.000Z",
"current_period_end": "2026-11-01T08:09:00.000Z",
"prepaid_until": "2026-11-01T08:09:00.000Z",
"latest_order": "ord_ayyh1f26ajmj807xjy6ezyfd",
"renewal": {
"order": "ord_ev56nr02sre6nyaz6q4h64wg",
"checkout_url": "https://pay.orrerie.com/c/cs_gwa1qwmckrfvzasjv2ackh6d",
"opens_at": "2026-10-25T08:09:00.000Z",
"due_at": "2026-11-01T08:09:00.000Z",
"grace_ends_at": "2026-11-04T08:09:00.000Z"
},
"cancel_at_period_end": false,
"cancelled_at": null,
"paused_at": null,
"ended_at": null,
"cancellation_reason": null,
"metadata": {}
},
"previous_attributes": {
"status": "past_due"
}
},
"request": {
"id": null,
"idempotency_key": null
},
"pending_webhooks": 1
}Fields of data.object
| Field | In this example |
|---|---|
id | "sub_ |
object | "subscription" |
livemode | true |
created | "2026-10-01T08: |
updated | "2026-11-04T08: |
status | "unpaid" |
customer | "cus_ |
items | A list of 1 item |
amount | "18.00" |
currency | "USD" |
interval | "month" |
interval_count | 1 |
reminder_days | A list of 3 items |
grace_days | 3 |
prepaid_periods_allowed | A list of 4 items |
proration | "none" |
current_period_start | "2026-10-01T08: |
current_period_end | "2026-11-01T08: |
prepaid_until | "2026-11-01T08: |
latest_order | "ord_ |
renewal | An object with order, checkout_url, opens_at, due_at, grace_ends_at |
cancel_at_period_end | false |
cancelled_at | null |
paused_at | null |
ended_at | null |
cancellation_reason | null |
metadata | An object with no fields |
What each field means is on the page of the subscription object. data.previous_attributes holds the old values of exactly the fields that changed: here status.
Endpoints behind it
Calls that change subscriptions. 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.