> ## Documentation Index
> Fetch the complete documentation index at: https://docs.startmyvpn.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Billing Cycles

> Configure pricing and billing intervals for each plan.

## 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**.

| Field      | Description                                          |
| ---------- | ---------------------------------------------------- |
| Name       | Display label (e.g. "Monthly", "Yearly", "6 Months") |
| Duration   | Number of days the cycle lasts (e.g. 30, 90, 365)    |
| Price      | Amount charged per cycle in your configured currency |
| Sort Order | Controls display order at checkout                   |
| Active     | Whether this cycle is currently available            |

## Example cycle setup

| Cycle    | Duration | Price   | Notes          |
| -------- | -------- | ------- | -------------- |
| Monthly  | 30 days  | \$9.99  | Standard price |
| 6 Months | 180 days | \$49.99 | \~17% savings  |
| Yearly   | 365 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.
