Understanding the end_date field of a subscription
Prerequisites
Section titled “Prerequisites”- Knowledge of the Ciklik subscription lifecycle
- Access to the Ciklik API
- Familiarity with rebill concepts
See also: Subscription management (platform documentation)
Definition
Section titled “Definition”The end_date field represents the subscription expiration date following the last accepted payment.
Cycle operation
Section titled “Cycle operation”Let’s take the example of a monthly subscription:
Subscription: January 15├── Payment accepted on January 15├── end_date = February 14 (day before next rebill)├── Next rebill scheduled: February 15│February 15 rebill├── If payment accepted → end_date = March 14├── If payment declined → end_date remains February 14Update rule
Section titled “Update rule”- Payment accepted:
end_dateis updated to the day before the next scheduled rebill - Payment declined:
end_datedoes not change
Active status vs past end_date
Section titled “Active status vs past end_date”A subscription can be:
- Active status + end_date in the future = Current subscription, payments up to date
- Active status + end_date in the past = “Zombie” subscription - active but never successfully renewed
”Zombie” subscriptions
Section titled “”Zombie” subscriptions”These are subscriptions that:
- Have the
activestatus in Ciklik - But whose
end_dateis in the past (sometimes by several months)
Possible causes:
- Repeated payment failures (expired card, insufficient funds)
- Stock errors preventing renewal
- Technical issues (PrestaShop site inaccessible)
Use cases for API filtering
Section titled “Use cases for API filtering”Identifying “stuck” subscriptions
Section titled “Identifying “stuck” subscriptions”To find active subscriptions that have not been renewed for a long time:
GET /api/subscriptions?filter[status]=active&filter[end_date_before]=2025-01-01This returns subscriptions marked as active but whose last successful billing was before January 2025.
Monthly subscription audit
Section titled “Monthly subscription audit”To identify subscriptions requiring attention:
# Active subscriptions with end_date exceeded for more than 30 daysGET /api/subscriptions?filter[status]=active&filter[end_date_before]=2026-01-04Link with PrestaShop customer groups
Section titled “Link with PrestaShop customer groups”The end_date field is particularly useful for integrators who synchronize Ciklik subscription status with PrestaShop customer groups.
Typical scenario
Section titled “Typical scenario”You have a “Premium Subscribers” customer group in PrestaShop that provides access to reduced prices or exclusive features.
Recommended logic:
If subscription.status == "active" AND subscription.end_date >= today → Customer remains in the "Premium Subscribers" group
If subscription.status == "active" AND subscription.end_date < today - 30 days → Consider removal from the group (subscription likely in difficulty)
If subscription.status == "inactive" → Remove from "Premium Subscribers" groupSee also: Managing your subscribers in a PrestaShop customer group
Difference with next_payment_date
Section titled “Difference with next_payment_date”| Field | Meaning |
|---|---|
end_date | Until what date the subscription is paid |
next_payment_date | When the next payment attempt will occur |
Example:
end_date= February 14 (last payment covered until this date)next_payment_date= February 15 (next scheduled payment)
If the February 15 payment fails:
end_dateremains at February 14next_payment_datemoves to February 18 (next attempt according to the rebill scenario)
Q: Will a subscription with a past end_date continue to attempt renewal?
Yes, as long as the subscription has the active status, renewal attempts will continue according to the configured rebill scenario.
Q: How can I force an end_date update without payment?
This is not possible through the standard interface. The end_date field is only updated upon a successful payment. For exceptional cases, contact Ciklik support.
Q: If I cancel then reactivate a subscription, what happens to end_date?
- If reactivation during the paid period:
end_datedoes not change - If reactivation after
end_date: a payment is triggered immediately, andend_dateis updated if the payment succeeds