subscription.canceled
Overview of the subscription.canceled webhook
When a subscription.canceled event is triggered, FastSpring sends a webhook payload with details about the canceled subscription. This webhook typically fires when a customer cancels through their account management portal, when you select Deactivate at Next Period in the FastSpring app, or when you cancel via the API without including billingPeriod=0.
Webhook behavior
Fires when:
- A customer cancels a subscription via the customer portal
- You select Deactivate at Next Period in the FastSpring app
- You cancel a subscription using the API and omit
billingPeriod=0Does not fire when:
- You select Deactivate Now in the FastSpring app
- You cancel a subscription using the API and include
billingPeriod=0- You cancel a managed subscription
This page includes:
- A full sample payload for the
subscription.canceledwebhook - A detailed table listing every payload property, including name, type, and description
- Notes on when this webhook is triggered and which fields appear based on Webhook Expansion
Browse the table sections below or use the quick links to jump to a specific group of fields.
Tip: Not all fields are always included. Refer to the Payload properties table to understand when a field appears.
Webhook payload example (expansion enabled)
When a subscription.canceled event is triggered, the webhook sends the following JSON payload:
{
"id": "subSCR1pt10nAbc123-456XYZ",
"quote": "QUOT1234ABC5678XYZ",
"subscription": "subSCR1pt10nAbc123-456XYZ",
"active": true,
"state": "canceled",
"changed": 1751328000000,
"changedValue": 1751328000000,
"changedInSeconds": 1751328000,
"changedDisplay": "7/31/25",
"live": true,
"currency": "USD",
"account": {
"id": "acctAbCdEfG123-XyZ456",
"account": "acctAbCdEfG123-XyZ456",
"contact": {
"first": "John",
"last": "Doe",
"email": "[email protected]",
"company": "Example Corp",
"phone": "+1 5550001000"
},
"language": "en",
"country": "US",
"lookup": {
"global": "acctPublicID789_XYZ"
},
"url": "https://examplestore.test.onfastspring.com/account"
},
"product": {
"product": "example-subscription-annual",
"parent": "example-parent-product",
"display": {
"en": "Example Subscription - Annual"
},
"description": {
"summary": {
"en": "This is the summary description for Example Subscription - Annual."
},
"action": {
"en": "Buy Now"
},
"full": {
"en": "This is the long description for Example Subscription - Annual."
}
},
"image": "https://cdn.example.com/images/subscription-annual.png",
"fulfillments": {
"example-subscription-monthly_file_0": {
"fulfillment": "example-subscription-monthly_file_0",
"name": "File Download (installer.exe)",
"applicability": "NON_REBILL_ONLY",
"display": {
"en": "Download Installer"
},
"url": "https://cdn.example.com/files/installer.exe",
"size": 24576,
"behavior": "PREFER_EXPLICIT",
"previous": []
}
},
"format": "digital",
"pricing": {
"trial": 7,
"interval": "month",
"intervalLength": 1,
"intervalCount": 1,
"quantityBehavior": "allow",
"quantityDefault": 1,
"price": {
"USD": 100
},
"dateLimitsEnabled": false,
"reminderNotification": {
"enabled": true,
"interval": "week",
"intervalLength": 1
},
"overdueNotification": {
"enabled": true,
"interval": "week",
"intervalLength": 1,
"amount": 4
},
"cancellation": {
"interval": "week",
"intervalLength": 1
}
}
},
"sku": "sub-annual-001",
"display": "Example Subscription - Annual",
"quantity": 1,
"adhoc": false,
"autoRenew": true,
"price": 100,
"priceDisplay": "$100.00",
"priceInPayoutCurrency": 100,
"priceInPayoutCurrencyDisplay": "$100.00",
"discount": 0,
"discountDisplay": "$0.00",
"discountInPayoutCurrency": 0,
"discountInPayoutCurrencyDisplay": "$0.00",
"subtotal": 110,
"subtotalDisplay": "$110.00",
"subtotalInPayoutCurrency": 110,
"subtotalInPayoutCurrencyDisplay": "$110.00",
"next": 1782864000000,
"nextValue": 1782864000000,
"nextInSeconds": 1782864000,
"nextDisplay": "7/31/26",
"end": 1814486400000,
"endValue": 1814486400000,
"endInSeconds": 1814486400,
"endDisplay": "7/31/27",
"canceledDate": 1814486400000,
"canceledDateValue": 1814486400000,
"canceledDateInSeconds": 1814486400,
"canceledDateDisplay": "7/31/27",
"deactivationDate": 1814572800000,
"deactivationDateValue": 1814572800000,
"deactivationDateInSeconds": 1814572800,
"deactivationDateDisplay": "8/1/27",
"sequence": 1,
"periods": 12,
"remainingPeriods": 11,
"begin": 1751328000000,
"beginValue": 1751328000000,
"beginInSeconds": 1751328000,
"beginDisplay": "7/31/25",
"intervalUnit": "year",
"intervalLength": 1,
"nextChargeCurrency": "USD",
"nextChargeDate": 1782864000000,
"nextChargeDateValue": 1782864000000,
"nextChargeDateInSeconds": 1782864000,
"nextChargeDateDisplay": "7/31/26",
"nextChargePreTax": 110,
"nextChargePreTaxDisplay": "$110.00",
"nextChargePreTaxInPayoutCurrency": 110,
"nextChargePreTaxInPayoutCurrencyDisplay": "$110.00",
"nextChargeTotal": 110,
"nextChargeTotalDisplay": "$110.00",
"nextChargeTotalInPayoutCurrency": 110,
"nextChargeTotalInPayoutCurrencyDisplay": "$110.00",
"nextNotificationType": "PAYMENT_REMINDER",
"nextNotificationDate": 1782259200000,
"nextNotificationDateValue": 1782259200000,
"nextNotificationDateInSeconds": 1782259200,
"nextNotificationDateDisplay": "7/25/26",
"trialReminder": {
"intervalUnit": "day",
"intervalLength": 3
},
"paymentReminder": {
"intervalUnit": "week",
"intervalLength": 1
},
"paymentOverdue": {
"intervalUnit": "week",
"intervalLength": 1,
"total": 4,
"sent": 0
},
"cancellationSetting": {
"cancellation": "AFTER_LAST_NOTIFICATION",
"intervalUnit": "week",
"intervalLength": 1
},
"fulfillments": {
"example-subscription-annual_file_1": [
{
"display": "installer.exe",
"size": 24576,
"file": "https://cdn.example.com/files/installer.exe",
"type": "file"
}
]
},
"instructions": [
{
"product": "example-subscription-annual",
"type": "regular",
"periodStartDate": 1751328000000,
"periodStartDateValue": 1751328000000,
"periodStartDateInSeconds": 1751328000,
"periodStartDateDisplay": "7/31/25",
"periodEndDate": 1782864000000,
"periodEndDateValue": 1782864000000,
"periodEndDateInSeconds": 1782864000,
"periodEndDateDisplay": "7/31/26",
"intervalUnit": "year",
"intervalLength": 1,
"discountPercent": 0,
"discountPercentValue": 0,
"discountPercentDisplay": "0%",
"discountTotal": 0,
"discountTotalDisplay": "$0.00",
"discountTotalInPayoutCurrency": 0,
"discountTotalInPayoutCurrencyDisplay": "$0.00",
"unitDiscount": 0,
"unitDiscountDisplay": "$0.00",
"unitDiscountInPayoutCurrency": 0,
"unitDiscountInPayoutCurrencyDisplay": "$0.00",
"price": 100,
"priceDisplay": "$100.00",
"priceInPayoutCurrency": 100,
"priceInPayoutCurrencyDisplay": "$100.00",
"priceTotal": 100,
"priceTotalDisplay": "$100.00",
"priceTotalInPayoutCurrency": 100,
"priceTotalInPayoutCurrencyDisplay": "$100.00",
"unitPrice": 100,
"unitPriceDisplay": "$100.00",
"unitPriceInPayoutCurrency": 100,
"unitPriceInPayoutCurrencyDisplay": "$100.00",
"total": 100,
"totalDisplay": "$100.00",
"totalInPayoutCurrency": 100,
"totalInPayoutCurrencyDisplay": "$100.00"
}
]
}Navigate this webhook
The subscription.canceled webhook payload includes dozens of fields. Use the cards below to jump to a specific section of the property reference.
Payload properties
All fields below are included in the subscription.canceled webhook payload. Fields are grouped into categories for easier navigation.
| Name | Type | Description |
|---|---|---|
| Subscription Metadata | ||
