Cancelling or Deactivating a Subscription
This article will teach you about the differences between cancelling and deactivating a subscription, and how to test the Subscription Deactivation Notification.
Cancel versus Deactivate
There are two different termination events that can occur to end a subscription: a cancellation and a deactivation. There are four different ways a subscription can be cancelled:
- By the customer using the cancellation link provided upon initial subscription activation
- By canceling at the end of a payment period, by the Update method of the Subscription API called from your application
- By canceling at the end of a payment period, in SpringBoard
- By canceling immediately, in SpringBoard
A cancelled subscription does not immediately become deactivated. Instead, the canceled subscription remains active until the end of the subscription period for which the customer paid. The subscription becomes deactivated once the subscription period is over. If, however, you select "cancel immediately" in SpringBoard, then the subscription will be canceled and deactivated at the same time.
Once a subscription has been deactivated, there is no way to reactivate it. However, if a subscription has been cancelled, but not yet deactivated, you can reactivate the subscription by making an Update call to the Subscription API by updating the end date to be empty again. For example, the xml payload to the API might look like:
Notifications for a Subscription
The default for a subscription is not to be limited to a certain number of periods, but instead for it to renew forever. If this is the case, there will be no end date on the subscription. If an end date is not set, you can assume it has not been cancelled, and vice versa.
When a subscription is cancelled (by you or by the customer), the end date of the subscription is set to the last date in the current period in which the customer is enrolled. SpringBoard will generate a Subscription Changed Notification with an end date set accordingly. A Subscription Deactivated Notification will be generated when the end date is reached, and the subscription moves from cancelled to deactivated. You will need to set up these two Notifications for them to be generated.
As an example, on March 1, 2012 Jane buys a monthly subscription. The subscription is activated and an Order Notification, Order Item Notification and/or Subscription Activated Notification can be sent. On April 1, 2012, Jane is re-billed for the subscription and an Order Notification and/or Order Item Notification can be sent. On April 12, Jane changes her credit card information and while a Subscription Changed Notification can be sent, the end date will remain empty. On April 18, Jane cancels her subscription, causing a Subscription Changed Notification to be sent and setting the end date on the subscription to April 30, the last day of the current subscription period for which Jane already paid. On April 30, around midnight GMT, the subscription becomes deactivated. A Subscription Deactivated Notification can be sent.
Testing a Subscription Deactivation
To create test subscription orders, either run test orders using Store Testing within SpringBoard, or add the following to the order URLs on your website:
If you use live URLs, please make sure to close all browser windows and start with a fresh session to clear caching. Then go through the entire order process, and choose Test Payment as the payment option. You will see form fields next to Test Payment for Username and Password; enter the ones you use to log in to SpringBoard.
Once you have created a test order, you can test the Subscription Deactivation Notification by logging into SpringBoard. Use the Order Search to find the subscription order. Click on the product under Subscriptions to pull up the subscription details.
Under Actions, click Cancel. Select Cancel Now and click Confirm. This will trigger the Subscription Deactivation Notification immediately.
We're Here to Help
If you need assistance with setting up or testing Subscription Notifications, please open a support ticket.