---
api: 'Merchant API'
---

# Retrieve a subscription cycle

Retrieve a specific billing cycle for a subscription by its unique identifier.

Use this endpoint to get the details and current state of a particular billing cycle.

## Endpoint

GET `/api/subscriptions/{subscription_id}/cycles/{cycle_id}`

## Returns

### 200

Subscription cycle retrieved successfully

#### Response attributes

- `id` (string)
    Unique identifier for the subscription cycle.
- `subscription_id` (string)
    Unique identifier for the subscription.
- `plan_variation_id` (string)
    Unique identifier for the subscription plan variation.
- `plan_variation_phase_id` (string, optional)
    Unique identifier for the subscription plan phase.
- `number` (integer)
    The sequential cycle number within the subscription.
    
    Starts at `1` for the first cycle and increments with each new billing cycle.
- `previous_cycle_id` (string | null, optional)
    The unique identifier of the previous billing cycle.
    
    This field is `null` for the first cycle in a subscription.
- `state` (enum)
    The state of the subscription cycle.
    
    | State | Description |
    | ----- | ----------- |
    | `pending` | The cycle has been created but has not yet started. A cycle can enter this state automatically when usage is reported for a future cycle via `POST /api/subscription-usages`. |
    | `active` | The cycle is currently active and in progress. |
    | `finished` | The cycle has completed. |
    Possible enum values:

    - `pending`
    - `active`
    - `finished`
- `start_date` (string, optional)
    The date and time the subscription cycle starts in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
- `end_date` (string, optional)
    The date and time the subscription cycle ends in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
- `usage_cutoff_date` (string, optional)
    The deadline for submitting or correcting usage records for this cycle, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    
    Set to 12 hours after the cycle's `end_date` by default. After this time, Revolut aggregates all reported usage records and creates the `post_billing_order_id` to initiate the charge.
    
    :::note
    Only present for cycles that include usage-based subscription items.
    :::
- `order_id` (string, optional)
    Permanent order ID used to retrieve, capture, cancel, or refund an order after authorization.
- `post_billing_order_id` (string, optional)
    The ID of the order created after the cycle's `usage_cutoff_date` to charge usage-based items accumulated during the cycle.
    
    | Scenario | Detail |
    | -------- | ------ |
    | Ongoing subscription | This order also acts as the next cycle's `order_id`, combining usage post-billing for the current cycle with pre-billing for the next. |
    | Last cycle | A standalone finishing order is created to charge all usage from this cycle. |
    | Subscription ended with unpaid cycles | The finishing order consolidates all outstanding usage charges, including any from previous cycles where payment failed. |
    
    :::note
    Only present for cycles that include usage-based subscription items.
    :::
- `trial` (boolean, optional)
    Indicates whether this billing cycle occurs during the subscription's trial period.
    
    This value is automatically calculated by the system based on the cycle's timing relative to the subscription's trial period. Returns `true` if the cycle is within the trial period (before `trial_end_date`), otherwise `false`. 
    
    Trial cycles typically have different billing behavior, such as reduced or zero charges.

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Subscription cycle not found |
