openapi: 3.0.1
info:
version: '1.0'
title: Business Accounting Subscriptions API
description: "As a Revolut Business customer with a Business Account, you can use the Business API to automate your own business processes.\nSave time, reduce your costs, and avoid errors by using the Business API. \n\n:::tip[Before you get started]\nTo learn more about the Business API and its features, check the [**user guides**](https://developer.revolut.com/docs/guides/manage-accounts/introduction).\n\nYou can reach them at any time from the main navigation bar **→ Guides → Business**.\n:::\n\nYou can view accounts, manage counterparties, make payments or currency exchanges without manual effort in the Web UI:\n\n- Accounting: [Account management](https://developer.revolut.com/docs/api/business#get-account), [Accounting settings](https://developer.revolut.com/docs/api/business#tag-accounting), [Expense management](https://developer.revolut.com/docs/api/business#get-expense), [Transactions](https://developer.revolut.com/docs/api/business#get-transactions) \n- Payments: \n - [Counterparty management](https://developer.revolut.com/docs/api/business#get-counterparties)\n - Payment management: [Payment drafts](https://developer.revolut.com/docs/api/business#delete-payment-draft), [Payout links](https://developer.revolut.com/docs/api/business#get-payout-link), [Transfers](https://developer.revolut.com/docs/api/business#tag-transfers)\n - [Foreign exchange](https://developer.revolut.com/docs/api/business#tag-foreign-exchange)\n- Business team: [Card management](https://developer.revolut.com/docs/api/business#delete-card), [Card invitation management](https://developer.revolut.com/docs/api/business#update-card-invitation), [Team member management](https://developer.revolut.com/docs/api/business#delete-team-member)\n- Developer tools: [Sandbox simulations](https://developer.revolut.com/docs/api/business#tag-simulations), [Webhook management](https://developer.revolut.com/docs/api/business#tag-webhooks-v2)\n\nTo see the reference for the specific endpoints and operations of this API, browse the menu on the left.\n\n### Test the Business API\n\nYou can test the Business API in Postman by forking this collection:\n\n[](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)"
contact: {}
servers:
- url: https://b2b.revolut.com/api/1.0
description: Production server (uses live data)
- url: https://sandbox-b2b.revolut.com/api/1.0
description: Sandbox server (uses test data)
tags:
- name: Subscriptions
description: 'The Subscriptions API provides a complete solution for creating and managing recurring billing for your customers.
You can automatically charge customers on flexible billing cycles, manage sophisticated subscription plans, and track the entire billing history for every subscriber.
## How it works?
A subscription''s billing structure is defined by a **Subscription plan**. This model gives you granular control:
- **Plans** contain one or more **variations** (e.g., a "Gold" plan could have "Monthly" and "Yearly" variations).
- **Variations** can have multiple **phases** (e.g., a 7-day free trial followed by a regular billing phase).
This powerful structure allows you to build complex pricing models, including free trials, introductory offers, and tiered pricing.
## Key features
- **Flexible pricing models:** Create plans with multiple variations and phases to support any billing scenario.
- **Automated charging:** Automatically charge a customer''s saved payment method at the start of each billing cycle.
- **Hosted onboarding:** For new customers, generate a setup order with a redirect URL to Revolut''s Hosted Payment Page, allowing them to securely add a payment method.
- **Lifecycle tracking:** Monitor each billing cycle''s state, view all associated orders, and access complete payment histories.
- **Full subscription management:** Easily update customer payment methods, cancel subscriptions, and view a complete billing history.'
paths:
/api/subscription-plans:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
post:
summary: Create a subscription plan
operationId: createSubscriptionPlan
description: 'Create a new subscription plan with one or more pricing variations.
A subscription plan defines the billing structure for subscriptions. Each plan can have multiple variations (e.g., monthly vs. yearly), and each variation can have multiple billing phases (e.g., trial period followed by regular billing). These plans are designed for flexibility, allowing you to combine fixed recurring fees with unit-based or usage-based charges into a single, unified subscription.
## How subscription plans work
A subscription plan consists of four hierarchical levels:
1. **Plan**: The top-level container (e.g., "Standard Plan")
1. **Variations**: Different pricing options (e.g., monthly vs. yearly)
1. **Phases**: Sequential billing stages within each variation
1. **Subscription items**: Individual line items within a phase that define **how** to charge (e.g., a base fee plus per-unit charges)
### Phases and billing items
If a `trial_duration` is defined at the variation level, billing phases begin immediately after the trial ends. Phases execute in sequence based on their `ordinal` value (1, 2, 3, etc.):
| Concept | Behaviour |
| ------- | --------- |
| **Cycle control** | Each phase has a `cycle_duration` (e.g., `P1M` for monthly). Use `cycle_count` to limit how many cycles occur; if `null` or omitted, the phase runs indefinitely. |
| **Sequential transition** | When a phase completes its cycles, the subscription advances to the next `ordinal`. If no next phase exists, the subscription stops automatically. |
| **Item composition** | Each phase contains one or more `subscription_items` defining how charges are calculated: **flat** items apply a fixed cost multiplied by `quantity`; **usage** items are metered at the end of the cycle based on reported consumption. |
:::tip [Example: Multi-item billing]
A plan combining a **base platform fee** and **monthly user licenses**:
**Variation:** `Monthly Team`
**Phase 1** — `ordinal: 1`, `cycle_duration: P1M`
| Item | Type | `amount` | `quantity` |
| ---- | ---- | -------- | ---------- |
| **Base platform fee** | `flat` | `4900` (£49.00) | `1` |
| **User licenses** | `flat` | `1000` (£10.00 per unit) | `5` |
The customer is billed a fixed platform fee plus £10.00 for each of their 5 active licenses every month.
:::'
tags:
- Subscriptions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Plan-Creation'
examples:
simple_plan:
$ref: '#/components/examples/Req-Subscription-Plan-Simple'
trial_plan_with_duration:
$ref: '#/components/examples/Req-Subscription-Plan-With-Trial-Duration'
limited_plan:
$ref: '#/components/examples/Req-Subscription-Plan-Limited'
usage_base_plan:
$ref: '#/components/examples/Req-Subscription-Plan-Usage-Base'
hybrid_plan:
$ref: '#/components/examples/Req-Subscription-Plan-Hybrid'
package_plan:
$ref: '#/components/examples/Req-Subscription-Plan-Package'
items_plan:
$ref: '#/components/examples/Req-Subscription-Plan-With-Items'
responses:
'201':
description: Subscription plan created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Plan'
examples:
simple_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Simple'
trial_plan_with_duration:
$ref: '#/components/examples/Res-Subscription-Plan-With-Trial-Duration'
limited_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Limited'
usage_base_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Usage-Base'
hybrid_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Hybrid'
package_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Package'
items_plan:
$ref: '#/components/examples/Res-Subscription-Plan-With-Items'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
get:
summary: Retrieve a subscription plan list
operationId: retrieveSubscriptionPlanList
description: "Retrieve all subscription plans configured for your merchant account. You can use the query parameters for:\n\n | Filtering | Pagination |\n | --------- | ---------- |\n | Filter the subscription plans that you want to retrieve, for example, only retrieve plans created within a specific date range. <br/><br/>Parameters used for filtering:<br/><ul><li>`from`</li><li>`to`</li></ul> | View the subscription plans without loading all of them at once, for example, return a specified number of plans per page. <br/><br/>Parameters used for pagination: <br/><ul><li>`limit`</li><li>`page_token`</li></ul> |"
tags:
- Subscriptions
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/Page-Token'
responses:
'200':
description: List of subscription plans retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Plans'
examples:
plans_list:
$ref: '#/components/examples/Res-Subscription-Plans-List'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
/api/subscription-plans/{subscription_plan_id}:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
- $ref: '#/components/parameters/Subscription-Plan-Id'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
get:
summary: Retrieve a subscription plan
operationId: retrieveSubscriptionPlan
description: 'Retrieve a specific subscription plan by its unique identifier.
A subscription plan contains **variations** (different pricing options like monthly vs. yearly), and each variation contains **phases** (sequential billing stages).
Phases execute based on their `ordinal` value. When a phase completes its `cycle_count`, the subscription moves to the next phase. If `cycle_count` is `null` or omitted, the phase continues indefinitely.
:::note
If a `trial_duration` is defined, phases begin immediately after the trial ends.
:::'
tags:
- Subscriptions
responses:
'200':
description: Subscription plan retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Plan'
examples:
simple_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Simple'
trial_plan_with_duration:
$ref: '#/components/examples/Res-Subscription-Plan-With-Trial-Duration'
limited_plan:
$ref: '#/components/examples/Res-Subscription-Plan-Limited'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'404':
description: Subscription plan not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
/api/subscriptions:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
post:
summary: Create a subscription
operationId: createSubscription
description: "Create a new subscription for a customer using a subscription plan variation.\n\nThere are several supported flows for creating and activating subscriptions, depending on your integration needs.\n\n:::note\nThe customer must already exist in the API. The `customer_id` is required for all subscription flows.\n:::\n\n<details>\n<summary>\n\n#### Flow 1: Hosted Payment Page (HPP)\n\n</summary>\n\nUse this flow to redirect the customer to Revolut's Hosted Payment Page to complete the first payment and save their payment method.\n\n**Backend flow:**\n1. Create a subscription with optional `setup_order_redirect_url`:\n\n | `setup_order_redirect_url` | Behaviour |\n | -------------------------- | --------- |\n | **Provided** | The setup order's `redirect_url` field is set to this value. |\n | **Omitted** | The setup order uses Revolut's default redirect behaviour. |\n\n1. The subscription is created in a `pending` state with a `setup_order_id` in the response.\n1. [Retrieve the order](https://developer.revolut.com/docs/api/merchant/2024-09-01#retrieve-order) using `setup_order_id` as the `order_id` in the path to get the `checkout_url`.\n1. Redirect the customer to the `checkout_url` for the Hosted Payment Page.\n\n**Customer flow:**\n1. Customer is redirected to Revolut's Hosted Payment Page.\n1. Customer completes payment on the HPP, and their payment method is saved.\n1. Customer redirect after payment depends on your setup:\n\n | `setup_order_redirect_url` | Customer redirect |\n | -------------------------- | ----------------- |\n | **Provided** | Customer is redirected to your custom URL. |\n | **Omitted** | Customer sees the default Revolut completion screen. |\n\n**Key characteristics:**\n- Customer completes payment on Revolut's hosted page\n- Payment method is automatically saved for future billing cycles\n- Optional custom redirect after payment\n- Best for web-based integrations\n\n</details>\n\n<details>\n\n<summary>\n\n#### Flow 2: Widget or card-not-present (CNP) payment\n\n</summary>\n\nUse this flow when you want to embed the payment experience directly on your website using one of Revolut's payment widgets or handle card-not-present payments.\n\n**Backend flow:**\n1. Create a subscription with minimal required parameters.\n1. The subscription is created in a `pending` state with a `setup_order_id` in the response.\n1. [Retrieve the order](https://developer.revolut.com/docs/api/merchant/2024-09-01#retrieve-order) using `setup_order_id` as the `order_id` in the path to get order details for your integration.\n1. Integrate your payment solution (widget, SDK, or CNP method) on your frontend, ensuring it's configured to save the customer's payment method for recurring billing.\n\n**Customer flow:**\n1. Customer stays on your website/application.\n1. Customer completes payment, and their payment method is saved for future billing cycles.\n\n**Key characteristics:**\n- Payment experience embedded directly in your application\n- Customer never leaves your website\n- Payment method is saved for future billing cycles\n- Best for native mobile apps or fully custom web experiences\n\n</details>"
tags:
- Subscriptions
parameters:
- $ref: '#/components/parameters/Idempotency-Key'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Creation'
examples:
with_setup_order:
$ref: '#/components/examples/Req-Subscription-Setup-Order'
with_setup_order_no_url:
$ref: '#/components/examples/Req-Subscription-Setup-Order-No-URL'
with_trial:
$ref: '#/components/examples/Req-Subscription-With-Trial'
skip_trial:
$ref: '#/components/examples/Req-Subscription-Skip-Trial'
responses:
'201':
description: Subscription created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription'
examples:
with_setup_order:
$ref: '#/components/examples/Res-Subscription-Setup-Order'
with_setup_order_no_url:
$ref: '#/components/examples/Res-Subscription-Setup-Order-No-URL'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
get:
summary: Retrieve a subscription list
operationId: retrieveSubscriptionList
description: "Retrieve all subscriptions for the merchant account. You can use the query parameters for:\n\n | Filtering | Pagination |\n | --------- | ---------- |\n | Filter the subscriptions that you want to retrieve, for example, only retrieve subscriptions created within a specific date range or with a specific external reference. <br/><br/>Parameters used for filtering:<br/><ul><li>`from`</li><li>`to`</li><li>`external_reference`</li></ul> | View the subscriptions without loading all of them at once, for example, return a specified number of subscriptions per page. <br/><br/>Parameters used for pagination: <br/><ul><li>`limit`</li><li>`page_token`</li></ul> |"
tags:
- Subscriptions
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- name: external_reference
in: query
schema:
type: string
description: Return subscriptions with a specific `external_reference`. Used for **filtering**.
required: false
- $ref: '#/components/parameters/Page-Token'
responses:
'200':
description: List of subscriptions retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscriptions'
examples:
subscriptions_list:
$ref: '#/components/examples/Res-Subscriptions-List'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
/api/subscriptions/{subscription_id}:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
- $ref: '#/components/parameters/Subscription-Id'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
get:
summary: Retrieve a subscription
operationId: retrieveSubscription
description: 'Retrieve a subscription by its unique identifier.
Use this endpoint to get the current state and details of a specific subscription.'
tags:
- Subscriptions
responses:
'200':
description: Subscription retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription'
examples:
active_subscription:
$ref: '#/components/examples/Res-Subscription-Active'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'404':
description: Subscription not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
patch:
summary: Update a subscription
operationId: updateSubscription
description: 'Update a subscription''s details.
You can update a subscription and specific parameters based on the value of the `state` parameter:
| State parameter value | Modifiable parameters |
| --------------------- | --------------------- |
| `pending`, `active`, `overdue`, `paused` | You can modify all listed parameters. |
| `cancelled`, `finished` | You cannot modify parameters. These are final states. |
**Common use cases:**
- **Update external reference**: When you need to sync with updated customer records in your system, correct an initial reference value, or re-map the subscription to a different internal tracking ID to maintain consistency with your database.'
tags:
- Subscriptions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Update'
examples:
update_subscription:
$ref: '#/components/examples/Req-Subscription-Update'
responses:
'200':
description: Subscription updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription'
examples:
updated_subscription:
$ref: '#/components/examples/Res-Subscription-Active'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'404':
description: Subscription not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
/api/subscriptions/{subscription_id}/change-plan:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
- $ref: '#/components/parameters/Subscription-Id'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
post:
summary: Change a subscription plan
operationId: changeSubscriptionPlan
description: 'Schedule a plan change for a subscription. The change is applied at the end of the current billing cycle.
### Use cases
- **Plan upgrades:** Moving a customer to a higher-tier plan with more features or capacity.
- **Plan downgrades:** Moving a customer to a lower-tier plan that better fits their usage and budget.
- **Customer requests:** Accommodating a customer''s request to switch to a different plan variation.
### How it works
When you schedule a plan change, the subscription continues operating under its current plan variation until the current billing cycle ends. At that point, the next cycle is created under the new plan variation.
- **Scheduled change:** The plan change is scheduled to take effect `at_cycle_end`. The current cycle completes normally, and the new plan variation applies starting from the next cycle.
- **Plan variation phases:** Some plan variations are divided into phases - distinct pricing or duration periods within a single variation. If the target plan variation has multiple phases, use `plan_variation_phase_id` to specify which phase to start from. If omitted, the change starts from the first phase.
- **Trial periods:** If the target plan variation includes a trial period, it is skipped when changing plans. Trial periods only apply when a subscription is first created.
- **Subsequent cycles:** After the transition, future cycles follow the cadence and pricing defined by the new plan variation.'
tags:
- Subscriptions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Change-Plan'
examples:
change_plan:
$ref: '#/components/examples/Req-Subscription-Change-Plan'
change_plan_with_reason:
$ref: '#/components/examples/Req-Subscription-Change-Plan-With-Reason'
change_plan_with_phase:
$ref: '#/components/examples/Req-Subscription-Change-Plan-With-Phase'
responses:
'204':
description: Plan change scheduled successfully
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
examples:
immediate_not_supported:
summary: Immediate plan change not supported
value:
code: bad_request
message: Immediate plan change is not supported. Please provide 'scheduled' field (e.g. 'at_cycle_end')
timestamp: 1601296792533
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'404':
description: Subscription not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
'422':
description: Unprocessable entity
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
examples:
subscription_finished:
summary: Subscription is finished
value:
code: subscription_finished
message: The subscription is finished
timestamp: 1601296792533
next_cycle_exists:
summary: Next cycle already exists with a different plan variation
value:
code: subscription_cycle_next_cycle_exists
message: Next cycle already exists with a different plan variation
timestamp: 1601296792533
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error-v2'
security:
- Api-Key: []
/api/subscriptions/{subscription_id}/change-renewal-date:
parameters:
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/Revolut-Api-Version'
- $ref: '#/components/parameters/Subscription-Id'
servers:
- description: Production server (uses live data)
url: https://merchant.revolut.com
post:
summary: Update a subscription renewal date
operationId: updateSubscriptionRenewalDate
description: "Reschedule the upcoming payment date for an active subscription cycle. This is a command endpoint — the renewal date is not a direct field on the Subscription resource, but is derived from the current active cycle's `end_date`.\n\n### Use cases\n\n- **Payment extensions:** Granting a customer more time to pay.\n- **Service delays:** Adjusting the billing date if service delivery is delayed.\n- **Billing alignment:** Moving a payment date to better suit a customer's financial schedule.\n\n### How it works\n\nExtending the current cycle's `end_date` naturally postpones the start of the next cycle and its associated payment trigger, providing flexibility for both the merchant and the customer.\n\nThe relationship between the cycle end and the billing execution depends on the plan type:\n\n- **Non-usage plans:** The next cycle's start date is the same as the billing date. The moment the current cycle ends, the next cycle begins and the payment is attempted.\n- **Usage-based plans (buffer & overlap):** To allow merchants time to finalize usage data, the billing date is scheduled after the cycle `end_date`.\n - Usage continues to be aggregated until the updated `end_date`.\n - When the current cycle (Cycle 1) reaches its updated `end_date`, **Cycle 2 starts immediately** to ensure no service interruption.\n - The billing for Cycle 1 occurs a few hours later (12-hour buffer). This window allows you to upload or edit usages for the period that just ended while the customer is already technically in their next cycle.\n - Rescheduling the `renewal_date` pushes this entire sequence—the end of Cycle 1, the start of Cycle 2, and the delayed billing trigger—further into the future.\n\nSubsequent cycles resume the original plan cadence (e.g., monthly) from the new date."
tags:
- Subscriptions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Subscription-Update-Renewal-Date'
examples:
simple_plan:
$ref: '#/components/examples/Req-Subscription-Update-Renewal-Date'
responses:
'204':
description: Renewal date updated successfully
'400':
description
# --- truncated at 32 KB (122 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/openapi/revolut-subscriptions-api-openapi.yml