---
title: "List related Subscriptions"
method: GET
path: "/subscriptions/{id}/related"
tags: ["Subscriptions"]
---

# List related Subscriptions

`GET /subscriptions/{id}/related`

Returns the other Subscriptions of the same Customer that were bought together with this one: those sharing its setup payment, plus — when the merchant has configured a grouping window — those created within that many minutes of it. Read-only; nothing is cancelled or changed.

## Path parameters

- `id` string, required

## Response `200`

OK

- RelatedSubscriptionsDTO
  - `windowMinutes` number, required — The merchant's configured grouping window, in minutes, that this lookup applied. `0` means only the setup payment was used.
  - `subscriptions` object[], required — The other subscriptions of the same customer that belong to the same purchase, oldest first
    - `id` string, required — The ID of the related subscription
    - `status` 'active' | 'cancelled', required — The status of the related subscription
    - `cancelAtPeriodEnd` boolean, required — Whether the related subscription is cancelled when its current billing cycle ends
    - `cancelAtCycle` number, nullable, required — The cycle at whose end the related subscription is scheduled to be cancelled, or `null` when no cancellation is scheduled
    - `createdAt` string, date-time, required — When the related subscription was created
    - `createdAtDeltaSeconds` number, required — Seconds between the creation of the subscription being viewed and this one. Negative when this one was created first.
    - `amount` number, required — Amount charged each billing cycle, in cents. `0` marks a free subscription — the case this grouping exists to surface.
    - `currency` 'usd' | 'eur' | 'gbp' | 'cad' | 'aud' | 'pln' | 'czk' | 'sek' | 'dkk', required — The currency of the recurring amount
    - `priceName` string, required — The name of the price the related subscription bills on
    - `productName` string, required — The name of the product behind that price
    - `matchedOn` 'setup_payment' | 'creation_window', required — Why this subscription is part of the group: it shares the viewed subscription’s setup payment, or it was created within the merchant’s configured window

## Other responses

- `202` — The merchant is entitled but its environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to a merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.
- `400` — The request was rejected. `type` is `invalid_request_error` when the request itself is at fault — `errors` then lists every problem found, with field-attributable entries prefixed by the field’s path; `invalid_state_error` when the request was well-formed but the resource is not in a state that allows it; or `payment_error` when the payment was refused by the issuer or processor.
- `401` — No API key was supplied, or the key is not valid. `type` is `authentication_error`.
- `403` — The API key is valid but lacks the permission this operation requires. `type` is `permission_error`.
- `404` — No resource exists with the requested identifier. `type` is `not_found_error`.
- `429` — Too many requests. The rate limit is applied per client across all operations. `type` is `rate_limit_error`.
- `500` — The request could not be completed because of an unexpected error. `type` is `api_error`.
- `504` — The request exceeded the processing time limit and was abandoned. `type` is `api_error` and `code` is `timeout` — unlike a plain 500 the request may still have taken effect, so retry with the same idempotency key rather than blindly.

---

[API](https://skmtc.dev/odus/apis/odus-orchestration-api.md) · [All operations](https://skmtc.dev/odus/apis/odus-orchestration-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/odus/odus-orchestration-api/revisions/d5fdcba31576/schema)
