Revolut · Schema
Subscription-Plan
CompanyFintechPaymentsBankingOpen BankingMerchant AcquiringCryptocurrencyCardsConsumer Banking
Properties
| Name | Type | Description |
|---|---|---|
| id | object | |
| name | object | |
| trial_duration | object | |
| state | object | |
| created_at | object | |
| updated_at | object | |
| variations | array | List of subscription plan variations. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/revolut/main/json-schema/revolut-subscription-plan-schema.json",
"title": "Subscription-Plan",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/revolut-subscriptions-api-openapi.yml#/components/schemas/Subscription-Plan",
"type": "object",
"required": [
"id",
"name",
"state",
"created_at",
"updated_at",
"variations"
],
"properties": {
"id": {
"$ref": "#/$defs/Subscription-Plan-Id"
},
"name": {
"$ref": "#/$defs/Subscription-Plan-Name"
},
"trial_duration": {
"$ref": "#/$defs/Subscription-Plan-Trial-Duration"
},
"state": {
"$ref": "#/$defs/Subscription-Plan-State"
},
"created_at": {
"$ref": "#/$defs/Subscription-Plan-Created"
},
"updated_at": {
"$ref": "#/$defs/Subscription-Plan-Updated"
},
"variations": {
"type": "array",
"description": "List of subscription plan variations.",
"items": {
"$ref": "#/$defs/Subscription-Plan-Variation"
}
}
},
"$defs": {
"Currency": {
"type": "string",
"format": "ISO 4217",
"minLength": 3,
"maxLength": 3,
"description": "[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.\n\n:::info\nFor more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).\n:::"
},
"Cycle-Count": {
"type": [
"integer",
"null"
],
"minimum": 1,
"description": "Number of billing cycles for this phase before moving to the next phase.\n\n| Value | Behavior |\n| ----- | -------- |\n| `null` or omitted | Phase continues indefinitely. The subscription remains in this phase with no automatic progression. |\n| Specific number (e.g., `1`, `3`, `12`) | After completing this many billing cycles, the subscription automatically moves to the next phase as determined by the `ordinal` field. |\n\n**Example**: If `cycle_count=3` and `cycle_duration=P1M`, the subscription will complete 3 monthly cycles then move to the phase with the next highest `ordinal` value.\n\n:::note\nIf no next phase exists in after a cycle with a specific `cycle_count`, the subscription will automatically stop when it completes its cycles.\n:::",
"title": "Cycle-Count"
},
"Cycle-Duration": {
"type": "string",
"format": "duration",
"description": "The length of each billing cycle for this phase in [ISO 8601 duration format](https://en.wikipedia.org/wiki/ISO_8601#Durations).\n\nThis determines how often the customer is billed during this phase. The total time spent in a phase is `cycle_duration × cycle_count`.\n\n**Common durations**:\n\n| Duration | Description |\n| -------- | ----------- |\n| `P1M` | 1 month |\n| `P1Y` | 1 year |\n| `P15D` | 15 days |\n| `P1W` | 1 week |\n| `PT2H` | 2 hours |\n\n**Example**: If `cycle_duration=P1M` and `cycle_count=12`, the customer will be billed monthly for 12 months (1 year total)."
},
"Subscription-Amount": {
"type": "integer",
"minimum": 0,
"description": "Subscription amount in minor currency units (e.g., cents for USD, pence for GBP).\n\nFor example, `9900` in `GBP` represents £99.00.\n\n:::info\nConversion between major and minor units varies by currency. For instance, `100` minor units equal £1.00 in `GBP`, whereas in `ISK` they represent 100 units. For more details, see the [ISO 4217 standard](https://en.wikipedia.org/wiki/ISO_4217).\n:::"
},
"Subscription-Item": {
"title": "Subscription item",
"type": "object",
"description": "A subscription item that defines a billing line within a plan phase. Can be either a fixed-fee (flat) item or a metered (usage) item.",
"oneOf": [
{
"$ref": "#/$defs/Subscription-Item-Flat"
},
{
"$ref": "#/$defs/Subscription-Item-Usage"
}
]
},
"Subscription-Item-Code": {
"type": "string",
"description": "A merchant-defined identifier for a usage-based subscription item. You set this code on each usage item when creating a subscription plan, and supply it when reporting consumption on [Create a subscription usage endpoint](https://developer.revolut.com/docs/api/merchant#create-subscription-usage) to target the correct metered item.\n\nThis allows a subscription with multiple usage items (e.g., `api_calls` and `storage_gb`) to receive consumption reports against the right item without relying on internal IDs.\n\nThe code must be unique within a plan phase.",
"maxLength": 250
},
"Subscription-Item-Flat": {
"type": "object",
"description": "Object structure of flat subscription item.",
"properties": {
"id": {
"$ref": "#/$defs/Subscription-Item-Id"
},
"name": {
"$ref": "#/$defs/Subscription-Item-Name"
},
"type": {
"$ref": "#/$defs/Subscription-Item-Type"
},
"package_size": {
"$ref": "#/$defs/Subscription-Item-Package-Size"
},
"unit": {
"$ref": "#/$defs/Subscription-Item-Unit"
},
"quantity": {
"$ref": "#/$defs/Subscription-Item-Quantity"
},
"amount": {
"type": "integer",
"description": "Amount in minor currency units (e.g., cents for USD)."
},
"currency": {
"$ref": "#/$defs/Currency"
}
},
"required": [
"id",
"name",
"type",
"amount",
"currency",
"unit",
"quantity"
]
},
"Subscription-Item-Id": {
"type": "string",
"format": "uuid",
"description": "The unique identifier of the subscription item."
},
"Subscription-Item-Name": {
"type": "string",
"description": "The name of the subscription item.",
"maxLength": 250
},
"Subscription-Item-Package-Size": {
"type": "number",
"description": "The number of units grouped together as a single billable package. Used to enable pricing of items that are too inexpensive to charge individually.\n\nFor example, a `package_size` of `1000` with a unit price of 10 minor units (£0.10 in GBP) lets you sell 1000 tokens for £0.10 — effectively pricing each token at £0.0001, below the minimum chargeable amount.\n\nSet to `1` to price each unit individually."
},
"Subscription-Item-Quantity": {
"type": "number",
"description": "The quantity of the item."
},
"Subscription-Item-Tier": {
"type": "object",
"properties": {
"upper_quantity_threshold": {
"type": [
"number",
"null"
],
"description": "The upper bound of the tier (exclusive). Null means unlimited."
},
"amount": {
"type": "integer",
"description": "Per-unit amount in minor currency units (e.g., cents for USD) charged for usage within this tier's threshold range."
}
},
"required": [
"amount"
]
},
"Subscription-Item-Type": {
"type": "string",
"description": "The type of subscription item.",
"enum": [
"flat",
"usage"
]
},
"Subscription-Item-Unit": {
"type": "string",
"description": "The unit of measurement for the item.",
"maxLength": 100
},
"Subscription-Item-Usage": {
"type": "object",
"description": "Object structure of usage subscription item.",
"properties": {
"id": {
"$ref": "#/$defs/Subscription-Item-Id"
},
"name": {
"$ref": "#/$defs/Subscription-Item-Name"
},
"type": {
"$ref": "#/$defs/Subscription-Item-Type"
},
"package_size": {
"$ref": "#/$defs/Subscription-Item-Package-Size"
},
"unit": {
"$ref": "#/$defs/Subscription-Item-Unit"
},
"amount": {
"type": "integer",
"description": "Flat amount per unit in minor currency units. Mutually exclusive with `tiers`."
},
"currency": {
"$ref": "#/$defs/Currency"
},
"tiers": {
"type": "array",
"description": "Graduated pricing tiers. Mutually exclusive with `amount`.",
"items": {
"$ref": "#/$defs/Subscription-Item-Tier"
}
},
"code": {
"$ref": "#/$defs/Subscription-Item-Code"
},
"usage_aggregation_method": {
"$ref": "#/$defs/Usage-Aggregation-Method"
}
},
"required": [
"id",
"name",
"type",
"currency",
"unit",
"code",
"usage_aggregation_method"
]
},
"Subscription-Items": {
"type": "array",
"description": "A list of subscription items for this phase.",
"items": {
"$ref": "#/$defs/Subscription-Item"
}
},
"Subscription-Plan-Created": {
"type": "string",
"format": "date-time",
"description": "The date and time the subscription plan was created in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."
},
"Subscription-Plan-Id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the subscription plan."
},
"Subscription-Plan-Name": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "The name of the subscription plan."
},
"Subscription-Plan-Ordinal": {
"type": "integer",
"minimum": 1,
"description": "The sequential order of this phase in the subscription billing lifecycle.\n\nPhases execute in ascending order based on this value:\n- Phase with `ordinal=1` executes first\n- Phase with `ordinal=2` executes second, and so on\n\nWhen a phase completes its `cycle_count`, the subscription automatically progresses to the phase with the next `ordinal` value.\n\n**Example**: A subscription with phases ordered as `ordinal=1` (trial), `ordinal=2` (regular), `ordinal=3` (discounted) will progress through them in that sequence.",
"title": "Subscription-Plan-Ordinal"
},
"Subscription-Plan-Phase": {
"type": "object",
"properties": {
"id": {
"$ref": "#/$defs/Subscription-Plan-Phase-Id"
},
"ordinal": {
"$ref": "#/$defs/Subscription-Plan-Ordinal"
},
"cycle_duration": {
"$ref": "#/$defs/Cycle-Duration"
},
"cycle_count": {
"$ref": "#/$defs/Cycle-Count"
},
"amount": {
"$ref": "#/$defs/Subscription-Amount"
},
"currency": {
"$ref": "#/$defs/Currency"
},
"subscription_items": {
"$ref": "#/$defs/Subscription-Items"
}
},
"required": [
"id",
"ordinal",
"cycle_duration"
]
},
"Subscription-Plan-Phase-Id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the subscription plan phase."
},
"Subscription-Plan-State": {
"type": "string",
"enum": [
"active",
"deactivated"
],
"description": "The state of the subscription plan.\n\n| State | Description |\n| ----- | ----------- |\n| `active` | The plan is active and can be used to create new subscriptions. |\n| `deactivated` | The plan has been deactivated and cannot be used for new subscriptions. |"
},
"Subscription-Plan-Trial-Duration": {
"type": "string",
"format": "duration",
"description": "The default trial period duration for this subscription plan in [ISO 8601 duration format](https://en.wikipedia.org/wiki/ISO_8601#Durations) (e.g., \"P14D\" for 14 days).\n\nThis value serves as the default trial duration for all subscriptions created from this plan. Individual subscriptions can override this value at creation time.\n\n:::note\nOnly days (`D`) are allowed. Time components such as hours, minutes, or seconds are not permitted.\n:::",
"pattern": "^P[0-9]+D$"
},
"Subscription-Plan-Updated": {
"type": "string",
"format": "date-time",
"description": "The date and time the subscription plan was last updated in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."
},
"Subscription-Plan-Variation": {
"type": "object",
"required": [
"id",
"phases"
],
"properties": {
"id": {
"$ref": "#/$defs/Subscription-Plan-Variation-Id"
},
"phases": {
"type": "array",
"description": "List of billing phases for this variation.",
"items": {
"$ref": "#/$defs/Subscription-Plan-Phase"
}
}
}
},
"Subscription-Plan-Variation-Id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the subscription plan variation."
},
"Usage-Aggregation-Method": {
"type": "string",
"description": "The method used to aggregate usage events over a billing cycle to calculate the chargeable amount.\n\n| Value | Behaviour |\n| ----- | --------- |\n| `sum` | Totals all reported usage events during the cycle. Use for cumulative metrics (e.g., API calls, data transferred). |\n| `latest` | Uses the most recently reported value at the end of the cycle. If no usage is reported in a cycle, `0` is used — values do not carry over from previous cycles. Use for gauge-style metrics (e.g., active seats). |\n| `max` | Uses the peak value reported during the cycle. Use for capacity-based billing (e.g., max concurrent connections). |",
"enum": [
"sum",
"latest",
"max"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/revolut-subscription-plan"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.