Ask for an invitation
Menu

Webhook event

subscription.cancelled

The subscription was cancelled, at once or at the period end.

Type
subscription.cancelled
The object it carries
the subscription object
Subscribe with
subscription.cancelled, 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_zynnpe41wackwrh7n41cs5x3",
  "object": "event",
  "livemode": true,
  "created": "2026-10-12T12:00:00.000Z",
  "type": "subscription.cancelled",
  "api_version": "2026-10-11",
  "data": {
    "object": {
      "id": "sub_9q5v9rq2naessbxsrec2tsw0",
      "object": "subscription",
      "livemode": true,
      "created": "2026-10-01T08:05:00.000Z",
      "updated": "2026-10-12T12:00:00.000Z",
      "status": "cancelled",
      "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": null,
        "checkout_url": null,
        "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": "2026-10-12T12:00:00.000Z",
      "paused_at": null,
      "ended_at": null,
      "cancellation_reason": "Customer asked by email",
      "metadata": {}
    },
    "previous_attributes": {
      "status": "active",
      "cancelled_at": null,
      "cancellation_reason": null
    }
  },
  "request": {
    "id": null,
    "idempotency_key": null
  },
  "pending_webhooks": 1
}

Fields of data.object

Fields of data.object in subscription.cancelled
FieldIn this example
id"sub_9q5v9rq2naessbxsrec2tsw0"
object"subscription"
livemodetrue
created"2026-10-01T08:05:00.000Z"
updated"2026-10-12T12:00:00.000Z"
status"cancelled"
customer"cus_8ea07c40qsvv19f7rgmeb8ha"
itemsA list of 1 item
amount"18.00"
currency"USD"
interval"month"
interval_count1
reminder_daysA list of 3 items
grace_days3
prepaid_periods_allowedA list of 4 items
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"
renewalAn object with order, checkout_url, opens_at, due_at, grace_ends_at
cancel_at_period_endfalse
cancelled_at"2026-10-12T12:00:00.000Z"
paused_atnull
ended_atnull
cancellation_reason"Customer asked by email"
metadataAn 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, cancelled_at, cancellation_reason.

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.