Early bird discounts live! Claim your offer

subscription.cancelled

Cancellation recorded; access continues until ends_at.

When this fires

Cancellation is recorded — by the subscriber, by the creator, or by the payment provider (a gateway-side cancellation, or a terminal payment failure on CeyPay, CoinPayments or Skrill). If the paid period still has time left, the subscription stays active and the subscriber keeps access until ends_at, after which subscription.expired fires. If no paid period remains, ends_at is set to the cancellation moment and resource access is revoked straight away.

Required ability

project-subscription:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "subscription.cancelled",
  "created_at": "2026-05-18T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4",
    "plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
    "subscriber_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",
    "provider": "stripe"
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways subscription.cancelled for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.subscription_idstring UUIDSubscription identifier.
data.plan_idstring UUIDPlan the subscription is on.
data.subscriber_idstring UUIDSubscriber's project-scoped user id.
data.providerstring, nullablePayment provider slug — one of stripe, paypal, skrill, coinpayments, paystack, razorpay, ceypay, platformcurrency, accesscode. null when the subscription has no payment method attached.
data.reasonstring, nullableCeyPay, CoinPayments and Skrill only. The provider failure reason that triggered the cancellation. null when the provider reported none. Absent on every other provider and on creator/subscriber-initiated cancellations.
data.paypal_eventstringPayPal path only. The raw PayPal event type behind the cancellation — BILLING.SUBSCRIPTION.CANCELLED or BILLING.SUBSCRIPTION.EXPIRED.

Caveats

  • Cancellation is reversible until ends_at — see subscription.reactivated.
  • A renewal does not occur after cancellation; subscription.renewed will not fire.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request