---
title: "List cycles on a subscription"
method: GET
path: "/subscription/{id}/cycle"
tags: ["Subscription Payment"]
---

# List cycles on a subscription

`GET /subscription/{id}/cycle`

Returns the cycles attached to a subscription, ordered from newest to oldest. Use `status[]` to narrow the result set — values are case-insensitive. Pagination is cursor-based: pass the previous response's `metadata.next_cursor` back as `cursor`. An empty `next_cursor` means there are no further pages.


**Required scope:** <code style="background:#e8f0fe;color:#1a73e8;padding:2px 8px;border-radius:12px;font-size:0.85em">subscription:read</code>

## Path parameters

- `id` string, uuid, required

## Query parameters

- `limit` integer
- `cursor` string
- `status` string[]

## Response `200`

OK

- object
  - `data` Cycle[], required
    - `id` string, uuid, required — The cycle's unique identifier.
    - `type` 'RENEWABLE' | 'ONE_TIME_CHARGE' | 'CAPTURE_NOW', required — How the cycle was created: * `RENEWABLE` — part of the recurring schedule. * `ONE_TIME_CHARGE` — an ad-hoc capture added on top of the schedule. * `CAPTURE_NOW` — an immediate one-off capture.
    - `status` 'PENDING' | 'PROCESSING' | 'WAITING' | 'SUCCESS' | 'FAILED' | 'RETRY' | 'FAILOVER' | 'DELETED', required — The current state of the cycle: * `PENDING` — queued, waiting for its scheduled time. * `PROCESSING` — capture is being executed right now. * `WAITING` — waiting on an external dependency (e.g. customer action). * `SUCCESS` — captured successfully. * `FAILED` — capture failed and will not be retried. * `RETRY` — capture failed but is queued for another attempt. * `FAILOVER` — switched to the failover method after the primary failed. * `DELETED` — cancelled before being captured.
    - `value` number, double, required — The amount captured, in euros.
    - `capture_at` string, date-time, required — When the capture is scheduled to run, in UTC (RFC 3339).
    - `description` string — Free-form text shown on the bank statement or in the MB WAY app. Omitted when not set.
    - `key` string — Your internal identifier for the cycle. Omitted when not set.
  - `metadata` MetadataCursor, required — An object containing additional information about the response. It includes details that help manage and navigate the retrieved data.
    - `next_cursor` string, required — Provides the cursor for the next set of records. This value should be used as the cursor parameter in subsequent requests to continue paginating through the data. If the cursor is an empty string or null, it indicates that there are no more results. To retrieve all available results, continue making subsequent requests until next_cursor is empty or null.
    - `count` number, required — The total number of records in the current response. This field indicates the number of items returned in the current set of results.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `412` — Pre condition failed
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/easypay/apis/easypay-payments-api.md) · [All operations](https://skmtc.net/easypay/apis/easypay-payments-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/easypay/easypay-payments-api/versions/cdf25a9ad7b2/schema)
