Calculate Dates for Auto-Renewable Subscriptions (AR)
Cases of Calculating
After a subscription is created, the dates on which certain events must happen to the subscription are calculated.
Use the product validity period to calculate the core dates.
The product validity period (term) provides the customer with a particular period to use their purchased product.
E.g., if a product has a 1-year validity period (1-year term), the customer can use this product for 1 year after purchase. Then the customer has to purchase a renewal. You can set up different product validity periods for an initial product, a renewal, and a free trial.
You can set the product validity period in days, months, years, e.g.: 30 days, 3 months, 1 year.
The validity period of a product influences how the core dates are calculated for a subscription:
- When a subscription is created, its expiration date is calculated - the paid validity period of the subscription ends on this date.
- Further, according to this date, more additional dates are calculated: how long it should take to create a renewal order, to initiate automatic payment, to notify the customer about the need to change their card, etc.
Subscription Creation Date
A subscription is created after the customer pays successfully for their first order (parent). Starting with the date when this subscription is created, the countdown for its first paid validity period begins.
Paid Validity Period Start Date
This date determines when the paid validity period of a subscription starts.
When selling a license, this date conditionally implies the start of the validity period (term) of this license. "Conditionally" means that the true activation of this license is not monitored by default.
The order types influence how the date is calculated:
- For first orders (parent) – Equals the subscription creation date (order payment date).
The actual date the customer starts using their product is not taken into consideration.
- For renewal orders (child) - Depends on the date when the customer pays for a renewal order:
- If the customer pays for their renewal order before the current paid validity period (paid term) of their subscription expires, the next paid validity period starts only after the expiration date of the current paid validity period comes.
- If the customer pays for their renewal order after the current paid validity period of their subscription expires, the next paid validity period starts on the date of the successful payment for the renewal order. The days when the renewal order was not paid are not included in the paid validity period and not deducted from it.
Subscription Expiration Date
This date determines when the paid validity period (paid term) of a subscription expires.
When selling a license, you determine the actual deactivation date of the license (in the user's installed product). E.g., it may depend on the license activation date or other licensing specifics. Therefore, the actual date may differ from the estimated subscription operation dates.
The date is calculated as "subscription paid validity period start date (subscription paid term start date)" + "product validity period (product term)".
In addition, the system subtracts 1 day from the obtained date in the following cases:
- If you calculate the product expiration date in a parent order
- If you calculate the product expiration date in a child order and the previous child order was paid for after the product had expired
You can change this date in a specific subscription of the customer if a renewal order has not been created yet and the subscription is still active (not cancelled). You can do this using the Subscriptions API. All the dates calculated based on the expiration date are recalculated.
Renewal Reminder Date / Child Order Creation Date
A payment reminder email is sent to the customer on this date.
It coincides with the date on which a child order is created (child order creation date). Thus, the price of a renewal is fixed on this date (due to the price could have changed within the previous paid validity period (previous paid term).
If no child order is created, then every subsequent day a new attempt is made to create a child order (6 attempts in total). The renewal reminder email is sent only after a child order is successfully created.
The default settings are:
|If the product validity period is ≥ 6 months||30 days before the subscription expiration date|
|If the product validity period is < 6 months||9 days before the subscription expiration date|
Renewal Payment Date (Next Recurring Payment Date, Next Charge Date)
The next automatic payment for a subscription (product renewing) should be executed on this date. If the payment fails, then more attempts to execute the payment (3 in total) are made at regular intervals.
The default settings are:
|If the product validity period is ≥ 6 months||20/10/0 days before the subscription expiration date|
|If the product validity period is < 6 months||2/1/0 days before the subscription expiration date|
Change Card Email Send Date
A Change Card Email is sent to the customer on this date. The email asks the customer to change their card bound to pay for subscription auto-renewal.
The notification is sent only if the card used is about to expire.
The system sends the information about the need to change the card in:
- Separate notifications,
- Renewal reminder email (*).
The default settings are:
|If the product validity period is ≥ 6 months||45/30*/25 days before the subscription expiration date|
|If the product validity period is < 6 months||14/9* days before the subscription expiration date|
Unpaid Renewal Order Lifetime
The lifetime of an unpaid renewal order is 90 days. After that, the order is automatically deleted.
Example of how subscription dates are calculated
|For product with a 30-day validity period||For licenses with a 1-year validity period|
|Parent order payment, Subscription creation date||21.12.2020||21.12.2020|
|Paid Validity Period Start Date||21.12.2020||21.12.2020|
|Subscription Expiration Date||19.01.2021||20.12.2021|
|Change Card Email Send Date||05.01.2021||05.11.2021
|Renewal Reminder Date,
Child Order Creation Date or
Change Card Email Send Date
|Renewal Payment Date||17.01.2021
You can change dates of upcoming events for a specific subscription of the customer.
You have to change the expiration date of the subscription using the Subscriptions API. Then the system automatically recalculates all the remaining dates for the subscription.
You can change the date if the subscription has the active status.
If you want to extend the validity period for the subscription and change its expiration date forward, there are no additional date requirements.
If you want to shorten the validity period for the subscription and change its expiration date backward, then the new subscription expiration date must comply with the following requirement: the calculated renewal reminder date must fall on the day that follows the request completion day, at least. Otherwise, no renewal order can be created.
With the default dates, the new expiration date must meet the following conditions:
- Product validity period (product term) < 6 months – in this case, the expiration date value must be 5 days (or more) greater than the request send date value.
E.g., if the request is sent on January 1, then the expiration date must be January 6 or later.
- Product validity period (product term) ≥ 6 months - in this case, the expiration date value must be 26 days (or more) greater than the request send date value.
E.g., if the request is sent on January 1, then the expiration date must be January 27 or later.
This is necessary so that after the date change, there is enough time to create a renewal order. The new renewal reminder send date must follow the request send date, or come later in case of repeated attempts to create a renewal order.
Calculate the maximum number of days to change backwards:
- Product validity period (product term) < 6 months:
Maximum change = [Subscription expiration date] - [Request send date] – 5
- Product validity period (product term) ≥ 6 months:
Maximum change = [Subscription expiration date] - [Request send date] - 27
If you want to change a date to test how a subscription works, you can contact our support team to instantly initiate creation of a renewal order and its payment.