# Retrieve a cycle on a subscription

Returns a single cycle that belongs to the given subscription. A cycle that doesn't exist — or that belongs to a different account — returns `404 Not Found`.
**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/{cycle_id}
Version: 2.0
Security: accountId, apiKey

## Path parameters:

  - `id` (string, required)
    UUID of the subscription the cycle belongs to.

  - `cycle_id` (string, required)
    UUID of the cycle to retrieve.

## Response 200 fields (application/json):

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

  - `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"

  - `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"

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

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

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

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

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

