# List cycles on a subscription

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>

Endpoint: GET /subscription/{id}/cycle
Version: 2.0
Security: accountId, apiKey

## Path parameters:

  - `id` (string, required)
    UUID of the subscription whose cycles you want to list.

## Query parameters:

  - `limit` (integer)
    Maximum number of cycles to return. Defaults to `50`, capped at `100`.

  - `cursor` (string)
    Opaque cursor from the previous response's `metadata.next_cursor`. Omit on the first call.

  - `status` (array)
    Filter by one or more statuses. Repeat the parameter for multiple values (e.g. `status[]=pending&status[]=failed`). Case-insensitive.

## Response 200 fields (application/json):

  - `data` (array, required)

  - `data.id` (string, required)
    The cycle's unique identifier.
    Example: 550e8400-e29b-41d4-a716-446655440000

  - `data.type` (string, 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.
    Enum: "RENEWABLE", "ONE_TIME_CHARGE", "CAPTURE_NOW"

  - `data.status` (string, 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.
    Enum: "PENDING", "PROCESSING", "WAITING", "SUCCESS", "FAILED", "RETRY", "FAILOVER", "DELETED"

  - `data.value` (number, required)
    The amount captured, in euros.
    Example: 10.5

  - `data.capture_at` (string, required)
    When the capture is scheduled to run, in UTC (RFC 3339).
    Example: 2026-05-22T09:00:00Z

  - `data.description` (string)
    Free-form text shown on the bank statement or in the MB WAY app. Omitted when not set.
    Example: monthly charge

  - `data.key` (string)
    Your internal identifier for the cycle. Omitted when not set.
    Example: my-key

  - `metadata` (object, required)
    An object containing additional information about the response. It includes details that help manage and navigate the retrieved data.

  - `metadata.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.
    Example: lL_j7ilk7rc

  - `metadata.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.
    Example: 10

## Response 400 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 401 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 403 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 412 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 429 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

## Response 500 fields (application/json):

  - `status` (string, required)

  - `message` (array, required)
    An array of human-readable messages included in the response. These messages provide detailed information about the success of the operation or explain the reasons for any failure. This field is always present in the response to ensure clarity and transparency regarding the outcome of the API request.

