Webhooks
A subscription was canceled
Sent when a subscription is canceled before its natural end. See data.cancellation.reason for who canceled it and why. data is the full Subscription.
postWebhooksubscription.canceled
Payload
Example payload
{
"id": "019832f1-7ac6-7d58-8f19-2b6e04d1a9c7",
"type": "subscription.canceled",
"timestamp": "2026-08-02T11:20:00.019873542Z",
"sequence": 8,
"resourceType": "subscription",
"resourceId": "019807c2-6f2a-7b41-9c58-2f9c1a4b8d21",
"data": {
"id": "019807c2-6f2a-7b41-9c58-2f9c1a4b8d21",
"planId": "019801a3-4d5e-7f80-9a1b-2c3d4e5f6071",
"planName": "Pro Monthly",
"amount": {
"amount": "29.00",
"asset": "USD"
},
"customerProfileId": "acct_8842",
"email": "ada@example.com",
"notifyUrl": "https://merchant.example/confirmo/webhook",
"returnUrl": "https://merchant.example/subscription/thanks",
"status": "CANCELED",
"startDate": 1780041852,
"cycleNumber": 3,
"currentPeriod": {
"start": 1785312252,
"end": 1787990652
},
"cancellation": {
"at": 1785669600,
"reason": "MERCHANT"
},
"createdAt": 1780041521,
"updatedAt": 1785669600
}
}Response
Return any 2xx status to acknowledge receipt. Any other response (or a timeout) is treated as a delivery failure and retried.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.