Skip to main content

What are billing cycles?

Each plan can have multiple Billing Cycles — different intervals (monthly, quarterly, yearly) each with their own price. Customers choose a cycle when ordering.

Creating a cycle

Go to Admin → Plans → [Plan Name] → Cycles → Add Cycle.
FieldDescription
NameDisplay label (e.g. “Monthly”, “Yearly”, “6 Months”)
DurationNumber of days the cycle lasts (e.g. 30, 90, 365)
PriceAmount charged per cycle in your configured currency
Sort OrderControls display order at checkout
ActiveWhether this cycle is currently available

Example cycle setup

CycleDurationPriceNotes
Monthly30 days$9.99Standard price
6 Months180 days$49.99~17% savings
Yearly365 days$79.99~33% savings

How expiry works

When a customer orders, the service expiry date is calculated as:
expiry_date = order_date + cycle_duration_in_days
If the customer renews before expiry, the new expiry is extended from the current expiry date (not from today), preventing gaps.

Stripe price objects

For plans using Stripe recurring billing, a StripePrice record is created and linked to each cycle. This maps the cycle to a Stripe Price ID for automatic renewal.

Free trials

Trial periods are configured on the plan level (not per cycle). If a plan has a 7-day trial, the customer gets 7 days free before the first billing cycle starts.