Automatic Cancellation of Unpaid Subscriptions
The automatic cancellation feature allows you to automatically cancel subscriptions whose payments have failed for several consecutive cycles. It includes a notification system for customers and merchants, as well as a simplified reactivation mechanism.
How It Works
Section titled “How It Works”Principle
Section titled “Principle”On the 15th of each month at 10:00 PM, the system analyzes all active subscriptions whose expiration date (end_date) has been exceeded for a configurable number of payment cycles.
Calculating Unpaid Cycles
Section titled “Calculating Unpaid Cycles”The system takes into account the subscription’s billing interval:
- Monthly subscription: 1 cycle = 30 days
- Bimonthly subscription: 1 cycle = 60 days
- Quarterly subscription: 1 cycle = 90 days
- Annual subscription: 1 cycle = 365 days
- Weekly subscription: 1 cycle = 7 days
If the subscription doesn’t have a directly defined interval, the system uses the interval from the associated plan.
Example
Section titled “Example”For a monthly subscription with a threshold of 3 cycles:
- The subscription must have been expired for at least 90 days (3 × 30 days) to be automatically cancelled.
Configuration
Section titled “Configuration”The feature is configured at the Site level via the Ciklik back office, in the “Advanced” section of the Site settings.
| Option | Description | Default Value |
|---|---|---|
| Enable automatic cancellation | Enables or disables the feature for this tenant | Disabled |
| Number of cycles before cancellation | Number of missed payment cycles before cancellation (1-12) | 3 |
| Notify customer | Sends an email to the customer upon cancellation | Enabled |
| Notify merchant | Sends an Excel report to the merchant with the list of cancellations | Enabled |
Notifications
Section titled “Notifications”Customer Notification
Section titled “Customer Notification”When a subscription is cancelled, the customer receives an email containing:
- The name of the affected subscription
- The number of unpaid cycles
- The cancellation date
- A secure link (signed URL, valid for 7 days) to reactivate their subscription
Email template: SubscriptionAutoCanceled
The template is disabled by default. The merchant must review it and manually enable it in the email template management.
Available variables:
{*shop*}: Store name{*logo*}: Store logo{*domain*}: Store domain{*first_name*}: Customer’s first name{*last_name*}: Customer’s last name{*email*}: Customer’s email{*subscription_name*}: Subscription/plan name{*end_date*}: Subscription expiration date{*cancellation_date*}: Cancellation date (current date){*cycles_unpaid*}: Number of unpaid cycles{*update_payment_link*}: Secure reactivation link
Merchant Notification
Section titled “Merchant Notification”The merchant receives an email with an attached Excel file containing:
- Subscription UUID
- Customer email
- Customer first and last name
- Plan
- Expiration date
- Number of unpaid cycles
- Cancellation date
Reactivation Process
Section titled “Reactivation Process”Customer Journey
Section titled “Customer Journey”- The customer receives the notification email with a reactivation link
- By clicking the link (signed URL), they are automatically logged into their account
- A page displays the details of their cancelled subscription
- They are prompted to update their payment information in “My Information”
- They can confirm reactivation via the dedicated button
Security
Section titled “Security”- The reactivation URL is cryptographically signed
- Valid for 7 days after cancellation
- Secure automatic customer login
Important Notes
Section titled “Important Notes”-
Email template activation: The customer template is disabled by default. Remember to enable it after reviewing its content.
-
Billing interval: The system prioritizes the subscription’s interval, then uses the plan interval if not defined. If you are a Box customer, the plan value will be used.
-
Monthly execution: The command runs once per month. Subscriptions that expire between executions will be processed during the next run.