# Related Subscriptions

A single checkout often creates more than one subscription — a paid plan plus a free add-on, or a plan followed moments later by an upsell. Each of those is a subscription in its own right, with its own billing cycle and its own cancellation.

That independence is what makes a **zero-amount subscription** easy to lose track of. When the paid subscription is cancelled, the free one keeps renewing at $0.00 for as long as the customer exists, quietly producing recurring orders nobody is watching.

The **Related subscriptions** section on a subscription's detail page shows the whole group, so a free add-on is visible from the subscription it was bought with. Each row opens that subscription's own detail page, where you can cancel it.

note

Grouping is a read-only view. ODUS never cancels a related subscription on your behalf; every cancellation is an explicit action you take, on that subscription's own page.

## How subscriptions are grouped

Two subscriptions belong to the same group when they are held by the **same customer** and either of the following is true:

| Rule                                                 | Always on?                 | What it catches                                                      |
| ---------------------------------------------------- | -------------------------- | -------------------------------------------------------------------- |
| They share the same **setup payment**                | Yes                        | Everything bought in one checkout, including free items              |
| They were **created within N minutes** of each other | Only when you set a window | An upsell, which is a second checkout and therefore a second payment |

The window is measured from the subscription you are looking at, in both directions, and is never chained: a subscription 5 minutes after yours is in the group, but one 5 minutes after *that* is not, unless it also falls inside your own window.

Because the group is worked out when you open the page, changing the window re-groups your existing subscriptions straight away. Nothing is stored, and nothing needs backfilling.

## Setting the grouping window

Go to **Settings > General** and set **Subscription grouping window** at the bottom of the **Dashboard settings** section. The value is a whole number of minutes between `0` and `1440` (24 hours).

* `0` — the default. The time window is off; subscriptions are grouped only when they share a setup payment.
* Any other value — subscriptions created that many minutes apart are grouped as well.

A few minutes is usually enough to catch a post-purchase upsell flow. A wide window on a customer who buys from you often will start grouping unrelated purchases, so start small.

The same value can be read and written through [`GET /v2/merchant-config`](https://docs.odus.com/docs/api/core/v2/merchant-config-controller-get) and [`POST /v2/merchant-config`](https://docs.odus.com/docs/api/core/v2/merchant-config-controller-set) as `relatedSubscriptionWindowMinutes`.

## Reading the section

Open any subscription from **Subscriptions** and scroll to **Related subscriptions**, at the bottom of the page below **Invoices**. Each row shows:

* **Subscription** — the price and product the member bills on
* **Status** — the same status chip used across the Dashboard. Cancelled members stay in the group, dimmed, so the history of the purchase is complete
* **Amount** — the recurring charge each billing cycle. A free add-on shows as `$0.00`
* **Created** — how far the member's creation sits from the subscription you are viewing, for example *Same time* for a bundled item or *7 min later* for an upsell

**Click any row** to open that subscription's own detail page, where you can cancel it, change its price, or read its invoices. The section itself only shows the group — it changes nothing.

If nothing was bought alongside, the section says so. The message reads the same whether or not a grouping window is set — widen or enable the window under **Settings → General** if you expected a member that was created moments apart.

## Through the API

[`GET /v2/subscriptions/{id}/related`](https://docs.odus.com/docs/api/core/v2/subscription-controller-find-related) returns the same group, along with the `windowMinutes` the lookup applied so you can tell an empty group from a disabled window:

```
{

  "windowMinutes": 15,

  "subscriptions": [

    {

      "id": "sub_2QC7PqoUeOxQEWscJJt6B3PkvyL",

      "status": "active",

      "cancelAtPeriodEnd": false,

      "createdAt": "2026-03-01T10:00:00.000Z",

      "createdAtDeltaSeconds": 0,

      "amount": 0,

      "currency": "usd",

      "priceName": "Free bonus guide",

      "productName": "Bonus guide",

      "matchedOn": "setup_payment"

    }

  ]

}
```

`matchedOn` tells you which rule put the subscription in the group — `setup_payment` for the exact match, `creation_window` for the time-based one. Members are returned oldest first, and the subscription you asked about is never one of them.

## Related

* [Cancelling and Resuming](https://docs.odus.com/docs/guides/subscriptions/canceling-and-resuming.md) — what each cancellation option does
* [Merchant Configuration](https://docs.odus.com/docs/guides/dashboard/merchant-configuration.md) — every account-wide default
