openapi: 3.1.1
info:
  title: Merchant API
  version: 2026-03-12
  description: |-
    Welcome to the Revolut Merchant API - your solution to managing the core aspects of e-commerce and accepting online payments. Whether you're a startup, a growing business, or an established enterprise in the e-commerce industry, our API helps you streamline your operations.

    As a Revolut Business customer with a Merchant Account, you can use the
    Merchant API to leverage the following features:

    - [Order management](/docs/api/merchant/2026-03-12#tag-orders)
    - [Customer management](/docs/api/merchant/2026-03-12#tag-customers)
    - [Payment management](/docs/api/merchant/2026-03-12#tag-payments)
    - [Subscription management](/docs/api/merchant/2026-03-12#tag-subscriptions)
    - [Payout management](/docs/api/merchant/2026-03-12#tag-payouts)
    - [Dispute management](/docs/api/merchant/2026-03-12#tag-disputes)
    - [Reporting analytics](/docs/api/merchant/2026-03-12#tag-report-runs)
    - [Webhook management](/docs/api/merchant/2026-03-12#tag-webhooks)
    - [Location management](/docs/api/merchant/2026-03-12#tag-locations)

    ... and more.

    ### API versions

    :::warning
    We highly recommend using versioning in your API calls. If you don't provide a version header on the operations where it's required, you will receive an error response.
    :::

    The Merchant API uses request header versioning. Where it is required you need to use the `Revolut-Api-Version` header parameter to specify an API version. Each request, where it is indicated in the API specification, must contain a version header in the following format:

    ```
    'Revolut-Api-Version: 2026-03-12'
    ```

    :::info
    For more information, see: [API versions](/docs/guides/merchant/reference/versioning/api-versions)
    :::

    ### Test the Merchant API

    You can test the Merchant API in Postman by forking this collection:

    [![View in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)
  contact: {}
servers:
  - description: Production server (uses live data)
    url: https://merchant.revolut.com
  - description: Sandbox server (uses test data)
    url: https://sandbox-merchant.revolut.com
paths:
  /api/orders:
    $ref: "#/x-ext/bb13491"
  /api/orders/{order_id}:
    $ref: "#/x-ext/5a68453"
  /api/orders/{order_id}/increment-authorisation:
    $ref: "#/x-ext/d6a5e57"
  /api/orders/{order_id}/capture:
    $ref: "#/x-ext/cd8ec16"
  /api/orders/{order_id}/cancel:
    $ref: "#/x-ext/382eec3"
  /api/orders/{order_id}/refund:
    $ref: "#/x-ext/a2b7603"
  /api/orders/{order_id}/payments:
    $ref: "#/x-ext/16d7e79"
  /api/customers:
    $ref: "#/x-ext/a291830"
  /api/customers/{customer_id}:
    $ref: "#/x-ext/3c54880"
  /api/customers/{customer_id}/payment-methods:
    $ref: "#/x-ext/62c310e"
  /api/customers/{customer_id}/payment-methods/{payment_method_id}:
    $ref: "#/x-ext/e6050a0"
  /api/disputes:
    $ref: "#/x-ext/b1b877e"
  /api/disputes/{dispute_id}:
    $ref: "#/x-ext/83428fb"
  /api/disputes/{dispute_id}/accept:
    $ref: "#/x-ext/b446e94"
  /api/disputes/{dispute_id}/evidences:
    $ref: "#/x-ext/f5e53f8"
  /api/disputes/{dispute_id}/challenge:
    $ref: "#/x-ext/ae12090"
  /api/payments/{payment_id}:
    $ref: "#/x-ext/eab0502"
  /api/subscription-plans:
    $ref: "#/x-ext/5297a3e"
  /api/subscription-plans/{subscription_plan_id}:
    $ref: "#/x-ext/a551532"
  /api/subscriptions:
    $ref: "#/x-ext/72e398f"
  /api/subscriptions/{subscription_id}:
    $ref: "#/x-ext/c01edfd"
  /api/subscriptions/{subscription_id}/change-plan:
    $ref: "#/x-ext/fc64e69"
  /api/subscriptions/{subscription_id}/change-renewal-date:
    $ref: "#/x-ext/903a4a5"
  /api/subscriptions/{subscription_id}/cancel:
    $ref: "#/x-ext/6a0e6c8"
  /api/subscriptions/{subscription_id}/cycles:
    $ref: "#/x-ext/7de7bb2"
  /api/subscriptions/{subscription_id}/cycles/{cycle_id}:
    $ref: "#/x-ext/84199f0"
  /api/subscription-usages:
    $ref: "#/x-ext/735efab"
  /api/subscription-usages/{usage_id}:
    $ref: "#/x-ext/bca8f6b"
  /api/payouts:
    $ref: "#/x-ext/61bd489"
  /api/payouts/{payout_id}:
    $ref: "#/x-ext/6a3beee"
  /api/report-runs:
    $ref: "#/x-ext/ee6af6f"
  /api/report-runs/{report_run_id}:
    $ref: "#/x-ext/d599abc"
  /api/report-runs/{report_run_id}/file:
    $ref: "#/x-ext/4fef0ad"
  /api/webhooks:
    $ref: "#/x-ext/a31cf96"
  /api/webhooks/{webhook_id}:
    $ref: "#/x-ext/54a8cad"
  /api/webhooks/{webhook_id}/rotate-signing-secret:
    $ref: "#/x-ext/00efd08"
  /api/apple-pay/domains/register:
    $ref: "#/x-ext/2e8f60f"
  /api/apple-pay/domains/unregister:
    $ref: "#/x-ext/d246405"
  /api/synchronous-webhooks:
    $ref: "#/x-ext/a245669"
  /api/synchronous-webhooks/{synchronous_webhook_id}:
    $ref: "#/x-ext/048a83d"
  /api/locations:
    $ref: "#/x-ext/45a45bc"
  /api/locations/{location_id}:
    $ref: "#/x-ext/83ba3d8"
  /api/terminals:
    $ref: "#/x-ext/2226ae4"
  /api/orders/{order_id}/payment-intents:
    $ref: "#/x-ext/3fb6b5d"
  /api/payment-intents/{payment_intent_id}:
    $ref: "#/x-ext/7f3eb22"
  /api/payment-intents/{payment_intent_id}/cancel:
    $ref: "#/x-ext/3637d02"
components:
  securitySchemes:
    Api-Key:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Each Merchant API request must contain an authorization header in the
        following format:


        ```

        'Authorization: Bearer <yourSecretApiKey>'

        ```


        To use this API, you need to generate API keys from your Revolut
        Business account. The Secret key is used in the authorization header for
        all server calls, while the Public key is provided with payment methods
        at checkout.


        :::info

        For detailed instructions on generating your API keys, see: [Generate
        API keys](/docs/guides/merchant/get-started#generate-api-keys).

        :::
    SSL:
      type: http
      scheme: SSL
      description: >-
        :::note

        This authentication protocol is used exclusively when using [Fast
        checkout](/docs/guides/merchant/optimise-checkout/fast-checkout).

        :::


        Connection over HTTPS is using SSL authentication. For successful
        authentication, your system's certificate should be issued by a Public
        Certificate Authority (PCA) and your system should trust Revolut's
        public certificate.
    Payload-Signature:
      type: apiKey
      in: header
      name: Revolut-Pay-Payload-Signature
      description: |-
        :::note
        This authentication protocol is used exclusively when using [Fast checkout](/docs/guides/merchant/optimise-checkout/fast-checkout).
        :::

        Data integrity and authorship will be verified using a payload-based signature. The response of a successful URL registration for address validation (see: [Register address validation for Fast checkout](/docs/api/merchant/2026-03-12#register-address-validation-endpoint)) will contain a secret signing key.

        The signing key will be used by Revolut to compute a Hash-based Message Authentication Code (HMAC) payload signature whenever the registered URL is called, which should be verified by your backend.
security:
  - Api-Key: []
tags:
  - name: Orders
    description: >-
      The Orders resource in the Merchant API offers a comprehensive solution
      for managing the lifecycle of orders within your e-commerce or retail
      platform. Designed to streamline order processing, this resource
      encapsulates a suite of operations that allow for efficiently handling
      order management-related tasks. For more information about the order
      lifecycle, see: [Order and payment
      lifecycle](/docs/guides/merchant/reference/order-lifecycle).


      These operations are equipped to handle various order management
      scenarios, providing a robust interface for businesses to interact with
      their order data.


      To process a payment related to your customers' purchases, you need to
      create an `Order` object. Then you can use an order's unique `token` to
      process and accept payments via the Revolut Checkout Widget.


      :::warning

      The [Create an order endpoint](/docs/api/merchant/2026-03-12#create-order)
      was updated to a new version and now returns `token` as the public
      identifier for the order. Previous integrations might still use the
      deprecated endpoint returning `public_id`.


      We strongly advise upgrading to the new [Create an order
      endpoint](/docs/api/merchant/2026-03-12#create-order).

      :::
  - name: Customers
    description: |-
      The Customers resource in the Merchant API is a pivotal tool for tracking and managing customer-related transactions within your e-commerce or retail platform. This resource provides a structured approach to customer management, enabling you to maintain a consistent record of customer transactions.

      A `Customer` object can be created using the [Create a customer](/docs/api/merchant/2026-03-12#create-customer) endpoint and you can then retrieve, update and delete a customer using its `id`. `Customer` objects enable you to track multiple transactions in your system associated with the same customer in the Merchant API.

      You can save and store payment methods of a customer in the `payment_method` object, for more information, see: [Charge a customer's saved payment method](/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method). A merchant can store the details of the payment securely and group transactions from the same payment method in their system.

      A payment method is unique for each customer. For example, if the same card is used for a transaction by two different customers, two payment method objects are created linked to each customer.

      Similar principle applies when saving payment methods via Revolut Pay for merchant initiated transaction (MIT - useful for recurring payments). If a customer saves their details through Revolut Pay for MIT in separate sessions, each session will create a new payment method object linked to the customer.

      :::note
      You cannot create a payment method explicitly because they are generated as part of a payment. You can only retrieve, update or delete a payment method, or you can retrieve all payment methods of a customer.
      :::
  - name: Payments
    description: >-
      Payment operations enable you to initiate payments, or track payment
      status transitions. You can use the ID of the payment to retrieve
      information about a specific payment.


      :::info

      For more information about the payment lifecycle, see: [Order and payment
      lifecycle](/docs/guides/merchant/reference/order-lifecycle).

      :::
  - 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.
  - name: Payouts
    description: >-
      Endpoints for retrieving information about payouts, allowing merchants to
      access details of funds withdrawn from their Merchant account to external
      bank accounts.


      Merchants can use these endpoints to retrieve a list of payouts and
      specific payout details. The payout IDs obtained can be used to [generate
      detailed reports](/docs/api/merchant/2026-03-12#tag-report-runs) that
      provide comprehensive breakdowns of all transactions contributing to the
      payout amounts.


      Payout information, including IDs, can be retrieved via the [Retrieve
      payout list](/docs/api/merchant/2026-03-12#retrieve-payout-list) endpoint
      or from [webhook events related to
      payouts](/docs/api/merchant/2026-03-12#create-webhook#callbacks).
  - name: Disputes
    description: >-
      Endpoints that allow merchants to view customer payment disputes.

       It provides a robust framework with high-level states (e.g., `won`, `lost`, `needs_response`, `under_review`) and detailed substates (e.g., `lost_expired`, `pre_arbitration`, `won_pre_arbitration`, etc.) to accurately track the dispute lifecycle.

       Additionally, the API integrates standard dispute reason codes and human-readable descriptions, offering a customisable approach to dispute resolution that facilitates effective dispute management.
  - name: Report runs
    description: |-
      Use **Report runs** operations to generate CSV reports of your Merchant account transactions. Choose from the following report types based on your use case:

      | Report type | Description |
      | ----------- | ----------- |
      | `custom_report` | Settled and processing transactions with a configurable set of columns. |
      | `settlement_report` | All settled transactions, with a configurable set of columns. |
      | `payments_report` | All payments, including failed and declined ones. |
      | `payout_statement_report` | All transactions that contributed to a specific payout. |
      | `icpp_fee_breakdown_report` | IC++ fee components broken down per transaction for a specific IC++ charge. |

      :::info
      For more information about how to generate CSV reports, see: [Create CSV reports of transactions](/docs/guides/merchant/monitor-and-observe/reports-reconciliation).
      :::
  - name: Webhooks
    description: |-
      A `webhook` (also called a web callback) allows your system to receive an event from a different app immediately after it happens.

      For example, you can subscribe to a webhook when an order changes from `pending` to `completed` status. When the payment is cleared and the order is completed, Revolut servers send a notification to the URL of your choice. This is a more efficient way to know when an order is paid as opposed to trying to get the status of the order every few seconds.

      Many events that happen to a Revolut Merchant account are synchronous, which means they arrive instantly and have immediate results. For example, a successful request to create a customer immediately returns a `Customer` object. Such requests don't require webhooks.

      The Revolut Merchant API supports webhooks for events including `ORDER_COMPLETED` and `ORDER_AUTHORISED`.

      :::note
      Because we cannot guarantee the delivery order of the status (`events`), you might receive the status not in the expected order. Make sure that your implementation does not rely on the order that the events are being received in.
      :::

      For example, for a completed order, you should receive the `ORDER_AUTHORISED` status first and then `ORDER_COMPLETED`. However, if the `ORDER_AUTHORISED` status isn't sent successfully at first, it's moved to the queue to be resent in the next few minutes. Before then, if the `ORDER_COMPLETED` status is sent successfully, you get `ORDER_COMPLETED` first and then `ORDER_AUTHORISED`.

      Check out our tutorial for [Using webhooks to keep track of the payment lifecycle](/docs/guides/merchant/monitor-and-observe/webhooks/using-webhooks).

      :::info
      For more information about the order and payment lifecycle, see: [Order and payment lifecycle](/docs/guides/merchant/reference/order-lifecycle).
      :::
  - name: Locations
    description: |-
      The Locations API is designed to help merchants manage multiple points of sale, including both **online storefronts** and **physical stores**. Registering locations lets you differentiate and group your orders from different stores. You can also introduce custom business logic for each location, such as different inventory management, pricing, or shipping rules.

      To start using locations, follow the relevant use case for your business:

      ### Online locations

        1. Register an online location using the [Create a location](/docs/api/merchant/2026-03-12#create-location) endpoint, setting the `type` to `online`.
        1. Configure your custom processes on your backend for each registered location (e.g., grouping orders, custom pricing, etc.).
        1. Send the `location_id` parameter in the request body during [order creation](/docs/api/merchant/2026-03-12#create-order) to assign the order to a specific location.

      ### Physical locations

        1. Register a physical location using the [Create a location](/docs/api/merchant/2026-03-12#create-location) endpoint, setting the `type` to `physical`.
        1. In case of Revolut POS, our system handles order creation including `location_id` to associate the order with your location.

      ## Fast checkout for multiple storefronts

      Locations are particularly useful for tailoring the user experience on each of your online storefronts, especially when using features like [**Fast checkout**](/docs/guides/merchant/optimise-checkout/fast-checkout).

      For example, if you operate two online stores with different shipping rules, you can register two separate `online` locations. By then using the `location_id` to [register a distinct address validation endpoint](/docs/api/merchant/2026-03-12#register-address-validation-endpoint) for each one, your backend can apply the correct shipping logic and pricing for the specific storefront a customer is buying from.
  - name: Terminals
    description: |-
      Operations for managing Revolut Terminal devices and push payment integrations with Point of Sale (POS) systems.

      The Terminals API enables POS software providers to integrate with Revolut Terminal devices for accepting in-person payments through a **push payments** model. This server-to-server integration allows your POS system to:

      - Discover available terminals at specific locations
      - Push payment requests to physical terminal devices
      - Track payment intent and payment status in real-time
      - Cancel pending payment requests when needed

      ## Push payments workflow

      1. **Terminal discovery:** Use the [Retrieve terminal list](/docs/api/merchant/2026-03-12#retrieve-terminal-list) endpoint to find available terminals at a location (filtered by `operation_mode=pos`)
      1. **Payment intent creation:** Push a payment request to a specific terminal using [Create a payment intent](/docs/api/merchant/2026-03-12#create-payment-intent)
      1. **Status tracking:** Poll the payment intent status until completion using [Retrieve a payment intent](/docs/api/merchant/2026-03-12#retrieve-payment-intent) endpoint
      1. **Payment confirmation:** Once the payment intent reaches `completed` state, [retrieve the final payment status](/docs/api/merchant/2026-03-12#retrieve-payment-details) using the returned `payment_id`

      :::info
      For detailed implementation guidance, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
      :::
  - name: Payment intents
    description: |-
      Operations for managing payment intents in the push payments to Revolut Terminal flow.

      A **payment intent** represents the intention to complete payment for a specific order on a specific Revolut Terminal device. Payment intents are the mechanism that links orders created via the Merchant API with physical terminal devices in **Pay at Counter** mode.

      ## What is a payment intent?

      When you create a payment intent, you're pushing a payment request from your POS system to a Revolut Terminal. The payment intent:

      - Links an order to a specific terminal device
      - Triggers the payment request to appear on the terminal screen
      - Tracks the customer's interaction with the terminal (pending → processing → completed)
      - Provides a `payment_id` when completed, which you use to retrieve the final payment status

      ## Payment intent lifecycle

      1. **Create:** Push a payment intent to a terminal by [creating a payment intent](/docs/api/merchant/2026-03-12#create-payment-intent)
      1. **Track:** Poll the payment intent status by [retrieving payment intent details](/docs/api/merchant/2026-03-12#retrieve-payment-intent) until it reaches a final state
      1. **Complete:** When state is `completed`, extract the `payment_id` and [retrieve the final payment status](/docs/api/merchant/2026-03-12#retrieve-payment-details)
      1. **Cancel (optional):** Cancel pending payment intents using [Cancel a payment intent](/docs/api/merchant/2026-03-12#cancel-payment-intent)

      ## Important notes

      - A payment intent reaching `completed` state means the checkout process finished on the terminal, but it does **not** guarantee the payment succeeded
      - You must check the actual payment status using the `payment_id` returned in the completed payment intent
      - Payment status can be `captured`/`completed` (successful), `declined` (card rejected), `failed` (technical error), or `cancelled`

      :::info
      For the complete push payments integration guide, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
      :::
  - name: Apple Pay merchant registration
    description: |-
      Operations for managing a merchant's domain registration and configuration with Apple for integration of Apple Pay via Revolut.

      This includes initiating domain validation with Apple, a necessary step for merchants to offer Apple Pay as a payment method on their websites or apps.

      These endpoints interact with Apple's [Apple Pay Web Merchant Registration services](https://developer.apple.com/documentation/applepaywebmerchantregistrationapi).
  - name: Other
    description: Other operations that can be done with the Merchant API.
x-ext-urls:
  bb13491: paths/2026-03-12/api_orders.yaml
  5a68453: paths/2026-03-12/api_orders_{order_id}.yaml
  d6a5e57: paths/2026-03-12/api_orders_{order_id}_increment-authorisation.yaml
  cd8ec16: paths/2026-03-12/api_orders_{order_id}_capture.yaml
  382eec3: paths/2026-03-12/api_orders_{order_id}_cancel.yaml
  a2b7603: paths/2026-03-12/api_orders_{order_id}_refund.yaml
  16d7e79: paths/api_orders_{order_id}_payments.yaml
  a291830: paths/2024-09-01/api_customers.yaml
  3c54880: paths/2024-09-01/api_customers_{customer_id}.yaml
  62c310e: paths/2024-09-01/api_customers_{customer_id}_payment-methods.yaml
  e6050a0: paths/2024-09-01/api_customers_{customer_id}_payment-methods_{payment_method_id}.yaml
  b1b877e: paths/2024-09-01/api_disputes.yaml
  83428fb: paths/2024-09-01/api_disputes_{dispute_id}.yaml
  b446e94: paths/2024-09-01/api_disputes_{dispute_id}_accept.yaml
  f5e53f8: paths/2024-09-01/api_disputes_{dispute_id}_evidences.yaml
  ae12090: paths/2024-09-01/api_disputes_{dispute_id}_challenge.yaml
  eab0502: paths/2026-03-12/api_payments_{payment_id}.yaml
  5297a3e: paths/2024-09-01/api_subscription-plans.yaml
  a551532: paths/2024-09-01/api_subscription-plans_{subscription_plan_id}.yaml
  72e398f: paths/2024-09-01/api_subscriptions.yaml
  c01edfd: paths/2024-09-01/api_subscriptions_{subscription_id}.yaml
  fc64e69: paths/2024-09-01/api_subscriptions_{subscription_id}_change_plan.yaml
  903a4a5: paths/2024-09-01/api_subscriptions_{subscription_id}_update_renewal_date.yaml
  6a0e6c8: paths/2024-09-01/api_subscriptions_{subscription_id}_cancel.yaml
  7de7bb2: paths/2024-09-01/api_subscriptions_{subscription_id}_cycles.yaml
  84199f0: paths/2024-09-01/api_subscriptions_{subscription_id}_cycles_{cycle_id}.yaml
  735efab: paths/2024-09-01/api_subscription-usages.yaml
  bca8f6b: paths/2024-09-01/api_subscription-usages_{usage_id}.yaml
  61bd489: paths/api_payouts.yaml
  6a3beee: paths/api_payouts_{payout_id}.yaml
  ee6af6f: paths/api_report-runs.yaml
  d599abc: paths/api_report-runs_{report_run_id}.yaml
  4fef0ad: paths/api_report-runs_{report_run_id}_file.yaml
  a31cf96: paths/2024-09-01/api_webhooks.yaml
  54a8cad: paths/2024-09-01/api_webhooks_{webhook_id}.yaml
  00efd08: paths/2024-09-01/api_webhooks_{webhook_id}_rotate-signing-secret.yaml
  2e8f60f: paths/api_apple-pay_domains_register.yaml
  d246405: paths/api_apple-pay_domains_unregister.yaml
  a245669: paths/api_synchronous-webhooks.yaml
  048a83d: paths/api_synchronous-webhooks_{synchronous_webhook_id}.yaml
  45a45bc: paths/api_locations.yaml
  83ba3d8: paths/api_locations_{location_id}.yaml
  2226ae4: paths/api_terminals.yaml
  3fb6b5d: paths/api_orders_{order_id}_payment-intents.yaml
  7f3eb22: paths/api_payment-intents_{payment_intent_id}.yaml
  3637d02: paths/api_payment-intents_{payment_intent_id}_cancel.yaml
  90b9838: components/parameters/Authorization.yaml
  13f2186: components/parameters/Revolut-Api-Version.yaml
  4349f60: components/parameters/Limit.yaml
  cff174f: components/parameters/From.yaml
  d10b9fd: components/parameters/To.yaml
  f24b8ce: components/parameters/Customer-Id-Query.yaml
  4d4a20f: components/parameters/Merchant-Order-Data-Reference.yaml
  e19a240: components/parameters/Order-State-Query.yaml
  aef1bf5: components/parameters/Location-Id-Query.yaml
  6e08b16: components/schemas/Order-Creation-v6.yaml
  e37bb36: examples/request/Req-Order-Min.yaml
  49aaa46: examples/request/Req-Order-Additional-v2.yaml
  "95e8559": examples/request/Req-Order-Pre-Auth.yaml
  15a16ad: examples/request/Req-Order-Line-Items.yaml
  1edb9c3: examples/request/Req-Order-Shipping.yaml
  a298482: examples/request/Req-Order-Airline-v2.yaml
  30235cd: examples/request/Req-Order-Car-Rental-v2.yaml
  150521e: examples/request/Req-Order-Crypto-v3.yaml
  bcaf3e4: examples/request/Req-Order-Marketplace-v3.yaml
  a02f1c8: examples/request/Req-Order-Event-v2.yaml
  8919d30: examples/request/Req-Order-Lodging-v2.yaml
  e4ad330: examples/request/Req-Order-Multi-Industry.yaml
  3c2231c: components/schemas/Order-v7.yaml
  a4a371d: components/schemas/Error-v2.yaml
  4fe92c0: components/schemas/Orders-v2.yaml
  e8e192f: examples/response/Res-Order-Min.yaml
  8bef905: examples/response/Res-Order-Additional-v2.yaml
  cfb7391: examples/response/Res-Order-Pre-Auth.yaml
  312ca55: examples/response/Res-Order-Line-Items.yaml
  72aed61: examples/response/Res-Order-Shipping.yaml
  147ace7: examples/response/Res-Order-Airline-v2.yaml
  11b2c83: examples/response/Res-Order-Car-Rental-v2.yaml
  4f45ac1: examples/response/Res-Order-Crypto-v3.yaml
  d9c197e: examples/response/Res-Order-Marketplace-v3.yaml
  10620c4: examples/response/Res-Order-Event-v2.yaml
  d17e5f9: examples/response/Res-Order-Lodging-v2.yaml
  a613f42: examples/response/Res-Order-Multi-Industry.yaml
  b98243c: examples/response/Res-Orders-List-v2.yaml
  6ebce25: components/parameters/Order-Id.yaml
  2fff4ea: components/schemas/Order-Update-v6.yaml
  a378ff5: components/schemas/Incremental-Authorisation-Request.yaml
  c2c6e40: examples/request/Req-Order-Increment-Auth-Basic.yaml
  b947f42: examples/request/Req-Order-Increment-Auth-Additional.yaml
  d840984: examples/response/Res-Order-Increment-Processing.yaml
  e19e106: examples/response/Res-Order-Increment-Authorised.yaml
  8817c1e: examples/response/Res-Order-Increment-Declined.yaml
  7f96b03: components/schemas/Order-Capture-v2.yaml
  a441f72: examples/request/Req-Order-Capture-Min.yaml
  797e8ac: examples/request/Req-Order-Capture-Line-Items.yaml
  a64baa6: examples/response/Res-Order-Capture-Min.yaml
  de68965: examples/response/Res-Order-Capture-Line-Items.yaml
  a200791: components/parameters/Revolut-Api-Version-Optional.yaml
  a354217: examples/response/Res-Order-Cancel-Min.yaml
  2f919cb: examples/response/Res-Order-Cancel-Additional-v2.yaml
  6ceabeb: examples/response/Res-Order-Cancel-Line-Items.yaml
  65d2c53: examples/response/Res-Order-Cancel-Shipping.yaml
  b1bc0d5: examples/response/Res-Order-Cancel-Airline-v2.yaml
  47f3fd1: examples/response/Res-Order-Cancel-Crypto-v3.yaml
  0ba50e0: examples/response/Res-Order-Cancel-Marketplace-v3.yaml
  24e69d4: examples/response/Res-Order-Cancel-Event-v2.yaml
  1b600a0: examples/response/Res-Order-Cancel-Lodging-v2.yaml
  72a7463: examples/response/Res-Order-Cancel-Multi-Industry.yaml
  c0cdbbb: components/parameters/Idempotency-Key.yaml
  4a2bbb0: components/schemas/Order-Refund-v2.yaml
  577a81b: examples/request/Req-Refund-Min.yaml
  c37b2bb: examples/request/Req-Refund-Additional.yaml
  a249556: examples/response/Res-Refund-Min.yaml
  9d28e53: examples/response/Res-Refund-Additional.yaml
  3c1fa9d: components/parameters/Revolut-Api-Version-2024-09-01-Min.yaml
  0997c5b: components/parameters/Page-Token.yaml
  2974b8b: components/schemas/Customer-Creation-v2.yaml
  b1009bf: examples/request/Req-Customer-Creation-v2.yaml
  2a7879f: components/schemas/Customer-Created.yaml
  2bcea13: components/schemas/Customers.yaml
  cae70d3: examples/response/Res-Customer-Created.yaml
  f91d9e1: examples/response/Res-Customers-List.yaml
  e7ed3e3: components/schemas/Saved-Payment-Method.yaml
  11ca5af: components/schemas/Payment-Retrieval.yaml
  5cb8929: components/parameters/Customer-Id.yaml
  d43bbd4: components/schemas/Customer-Update-v2.yaml
  23d9ec0: components/schemas/Customer-v3.yaml
  d93a490: examples/request/Req-Customer-Update-v2.yaml
  aeb9711: examples/response/Res-Customer-v3.yaml
  534eeae: components/parameters/Only-Merchant.yaml
  fb597e6: components/schemas/Customer-Payment-Methods-v2.yaml
  a125af9: examples/response/Res-Customer-Payment-Methods-List.yaml
  afb87dc: components/parameters/Payment-Method-Id.yaml
  724b58d: components/schemas/Payment-Method-Update.yaml
  d9d3db0: components/schemas/Payment-Method-v4.yaml
  eea6040: examples/request/Req-Payment-Method-Update.yaml
  4f8dfb5: examples/response/Res-Customer-Payment-Method.yaml
  7cfb07b: components/parameters/From-Created-Date.yaml
  024cb7e: components/parameters/To-Created-Date.yaml
  4331def: components/parameters/Dispute-State-Query.yaml
  a7c4798: components/parameters/Payment-Id-Query.yaml
  826461a: components/schemas/Disputes.yaml
  f864dc7: examples/response/Res-Dispute-List.yaml
  eb2136b: components/parameters/Dispute-Id.yaml
  81cce34: components/schemas/Dispute.yaml
  62ed9e2: examples/response/Res-Dispute-Card.yaml
  95f25ba: examples/response/Res-Dispute-Sepa-Direct-Debit.yaml
  f7bceb5: components/parameters/Content-Type.yaml
  4422bf3: components/schemas/Dispute-Evidence-Creation.yaml
  6399cfb: components/schemas/Dispute-Evidence.yaml
  53b3839: examples/response/Res-Dispute-Evidence.yaml
  25fa4dd: components/schemas/Dispute-Challenge.yaml
  d84d919: examples/request/Req-Dispute-Challenge-Min.yaml
  88bddbd: examples/request/Req-Dispute-Challenge-With-Evidence.yaml
  ca9e6a1: components/parameters/Payment-Id.yaml
  6c0380b: components/schemas/Payment-Retrieval-v3.yaml
  28df10f: examples/response/Res-Payment-Authentication-Challenge-Fingerprint.yaml
  db3be83: components/schemas/Subscription-Plan-Creation.yaml
  2d1cb43: examples/request/Req-Subscription-Plan-Simple.yaml
  1ee0f2a: examples/request/Req-Subscription-Plan-With-Trial-Duration.yaml
  bf216c8: examples/request/Req-Subscription-Plan-Limited.yaml
  "3e66982": examples/request/Req-Subscription-Plan-Usage-Base.yaml
  ecc203e: examples/request/Req-Subscription-Plan-Hybrid.yaml
  c8ea6ed: examples/request/Req-Subscription-Plan-Package.yaml
  a43de5c: examples/request/Req-Subscription-Plan-With-Items.yaml
  67bcd73: components/schemas/Subscription-Plan.yaml
  6efd23a: components/schemas/Subscription-Plans.yaml
  f0b24c8: examples/response/Res-Subscription-Plan-Simple.yaml
  915beaa: examples/response/Res-Subscription-Plan-With-Trial-Duration.yaml
  ec7a584: examples/response/Res-Subscription-Plan-Limited.yaml
  3febf78: examples/response/Res-Subscription-Plan-Usage-Base.yaml
  dc0b51f: examples/response/Res-Subscription-Plan-Hybrid.yaml
  ce946e6: examples/response/Res-Subscription-Plan-Package.yaml
  34858b1: examples/response/Res-Subscription-Plan-With-Items.yaml
  9f78c60: examples/response/Res-Subscription-Plans-List.yaml
  4d0880a: components/parameters/Subscription-Plan-Id.yaml
  fe2eb4d: components/schemas/Subscription-Creation.yaml
  7ee7838: examples/request/Req-Subscription-Setup-Order.yaml
  e1b67f4: examples/request/Req-Subscription-Setup-Order-No-URL.yaml
  bd0d8f6: examples/request/Req-Subscription-With-Trial.yaml
  40b394b: examples/request/Req-Subscription-Skip-Trial.yaml
  5815e4b: components/schemas/Subscription.yaml
  eac66d9: components/schemas/Subscriptions.yaml
  11fb27f: examples/response/Res-Subscription-Setup-Order.yaml
  f6a4312: examples/response/Res-Subscription-Setup-Order-No-URL.yaml
  99763f4: examples/response/Res-Subscriptions-List.yaml
  11ded8f: components/parameters/Subscription-Id.yaml
  4185b25: components/schemas/Subscription-Update.yaml
  ddbfd78: examples/request/Req-Subscription-Update.yaml
  60b5674: examples/response/Res-Subscription-Active.yaml
  7ca67a8: components/schemas/Subscription-Change-Plan.yaml
  89af57b: examples/request/Req-Subscription-Change-Plan.yaml
  ea489ca: examples/request/Req-Subscription-Change-Plan-With-Reason.yaml
  96bc43f: examples/request/Req-Subscription-Change-Plan-With-Phase.yaml
  bcdf7e9: components/schemas/Subscription-Update-Renewal-Date.yaml
  a565828: examples/request/Req-Subscription-Update-Renewal-Date.yaml
  964dcb5: components/schemas/Subscription-Cycles.yaml
  cf1142c: examples/response/Res-Subscription-Cycles-List.yaml
  bf2b7a1: components/parameters/Cycle-Id.yaml
  d97bee6: components/schemas/Subscription-Cycle.yaml
  564d792: examples/response/Res-Subscription-Cycle-Finished.yaml
  5e171ae: components/parameters/Idempotency-Key-Required.yaml
  0588a64: components/parameters/From-Usage-Date.yaml
  5764b3a: components/parameters/To-Usage-Date.yaml
  fc6df64: components/parameters/Subscription-Id-Query.yaml
  32f5b41: components/parameters/Subscription-Cycle-Id-Query.yaml
  7dedf2f: components/schemas/Subscription-Usage-Creation.yaml
  0f3fe67: examples/request/Req-Subscription-Usage.yaml
  19229f6: components/schemas/Subscription-Usage.yaml
  7c20249: components/schemas/Subscription-Usages.yaml
  60fc9a8: examples/response/Res-Subscription-Usage.yaml
  ea795a9: examples/response/Res-Usage-List.yaml
  1907c6e: components/parameters/Usage-Id.yaml
  7841cdc: components/schemas/Subscription-Usage-Update.yaml
  5859d34: examples/request/Req-Subscription-Usage-Update-Quantity.yaml
  31f122d: examples/request/Req-Subscription-Usage-Update-Metadata.yaml
  baf00b2: examples/request/Req-Subscription-Usage-Update.yaml
  fdb8216: components/schemas/Payout.yaml
  ea52751: components/parameters/Payout-Id.yaml
  ae49498: components/schemas/Report-Run.yaml
  f0f1fcd: components/schemas/Report-Run-Settlement-Report.yaml
  7f82492: components/schemas/Report-Run-Custom-Report.yaml
  7b213d5: components/schemas/Report-Run-Payments-Report.yaml
  21e464e: components/schemas/Report-Run-Payout-Report.yaml
  d5e1bd0: components/schemas/Report-Run-Icpp-Report.yaml
  6b43969: components/parameters/Report-Run-Id.yaml
  4d33cb1: examples/response/Res-Settlement-Report.yaml
  f589cea: examples/response/Res-Custom-Report.yaml
  a8d0fd0: examples/response/Res-Payments-Report.yaml
  768a897: examples/response/Res-Payout-Report.yaml
  8921dd0: components/schemas/Report-Run-Csv-Settlement.yaml
  a67071a: components/schemas/Report-Run-Csv-Custom.yaml
  556244c: components/schemas/Report-Run-Csv-Payments.yaml
  fdeec3b: components/schemas/Report-Run-Csv-Payout.yaml
  58d8019: components/schemas/Report-Run-Csv-Icpp.yaml
  de972c2: components/callbacks/Webhook-Event.yaml
  ee2e597: components/schemas/Webhook-Creation.yaml
  1bde473: examples/request/Req-Webhook-Create.yaml
  ac8c9d5: components/schemas/Webhook-v2.yaml
  "605e636": components/schemas/Webhooks.yaml
  a880249: examples/response/Res-Webhook-v2.yaml
  610feef: examples/response/Res-Webhooks-List.yaml
  18e1dc1: components/parameters/Webhook-Id.yaml
  05a3769: components/schemas/Webhook-Update.yaml
  329b2d1: components/schemas/Error.yaml
  b2bc6d3: examples/request/Req-Webhook-Update.yaml
  275f608: examples/request/Req-Webhook-Rotate-Signing-Secret.yaml
  ec6c680: components/schemas/Synchronous-Webhook-Creation.yaml
  6b0ce4e: components/schemas/Synchronous-Webhook.yaml
  94aad59: components/parameters/Synchronous-Webhook-Id.yaml
  741a418: components/parameters/Location-Type.yaml
  2975c2e: components/schemas/Location-Creation.yaml
  363f6bd: examples/request/Req-Location-Online.yaml
  4a64a36: examples/request/Req-Location-Physical.yaml
  cf5e7ce: components/schemas/Location.yaml
  dd56a7e: examples/response/Res-Location-Online.yaml
  9ca09cb: examples/response/Res-Location-Physical.yaml
  4814d6b: components/parameters/Location-Id.yaml
  efeb826: components/schemas/Location-Update.yaml
  193a752: components/parameters/Operation-Mode.yaml
  1df77f8: components/schemas/Terminals-Response.yaml
  fc6d57b: examples/response/Res-Terminals-List.yaml
  a0c2d2d: components/schemas/Payment-Intent-Creation.yaml
  bdb9bd1: examples/request/Req-Payment-Intent.yaml
  3375bfc: components/schemas/Payment-Intent.yaml
  a5e454b: examples/response/Res-Payment-Intent-Pending.yaml
  c639151: components/parameters/Payment-Intent-Id.yaml
  693f7fa: examples/response/Res-Payment-Intent-Processing.yaml
  1934f11: examples/response/Res-Payment-Intent-Completed.yaml
  3a33638: examples/response/Res-Payment-Intent-Cancelled.yaml
  59d80c8: examples/response/Res-Payment-Intent-Failed.yaml
  331c186: components/schemas/Merchant-Order-External-Reference.yaml
  e512ba4: components/schemas/Order-State.yaml
  7dfa842: components/schemas/Order-Amount-v2.yaml
  1b2472a: components/schemas/Currency.yaml
  4da391a: components/schemas/Settlement-Currency.yaml
  a0887df: components/schemas/Order-Description.yaml
  f66f113: components/schemas/Customer-v2.yaml
  d9d8857: components/schemas/Enforce-Challenge-v2.yaml
  bca3068: components/schemas/Line-Items.yaml
  a437221: components/schemas/Shipping.yaml
  e3d4819: components/schemas/Capture-Mode-v2.yaml
  "60768e8": components/schemas/Authorisation-Type.yaml
  bd14ecb: components/schemas/Cancel-Authorised-After.yaml
  9977eda: components/schemas/Expire-Pending-After.yaml
  38a61e6: components/schemas/Location-Id.yaml
  c146ad0: components/schemas/Metadata.yaml
  f93fd93: components/schemas/Industry-Data-v3.yaml
  31aea79: components/schemas/Merchant-Order-Data.yaml
  7d308f4: components/schemas/Upcoming-Payment.yaml
  25c3c73: components/schemas/Redirect-Url.yaml
  52074cd: components/schemas/Statement-Descriptor-Suffix.yaml
  8ada47f: components/schemas/Order-Id.yaml
  db8ab7a: components/schemas/Order-Token.yaml
  704e5bd: components/schemas/Order-Type-v2.yaml
  6758f6f: components/schemas/Outstanding-Amount.yaml
  c660be4: components/schemas/Refunded-Amount.yaml
  a869377: components/schemas/Incremental-Authorisations.yaml
  a571331: components/schemas/Checkout-Url.yaml
  c351b6d: components/schemas/Related-Order-Id.yaml
  6b94aa2: components/schemas/Payment-v3.yaml
  0a55077: components/schemas/Order-Simplified-v2.yaml
  22fa5f7: components/schemas/Increment-Amount.yaml
  a7167a9: components/schemas/Increment-Reference.yaml
  77f28ee: components/schemas/Order-Capture-Amount.yaml
  61d5af5: components/schemas/Refund-Amount.yaml
  a757ff6: components/schemas/Refund-Currency.yaml
  0b50233: components/schemas/Full-Name.yaml
  7c3734e: components/schemas/Email.yaml
  e3f9143: components/schemas/Phone.yaml
  8f22aa4: components/schemas/Date-Of-Birth.yaml
  fbf1277: components/schemas/Customer-Id.yaml
  60fc985: components/schemas/Next-Page-Token.yaml
  3d08b71: components/schemas/Customer-Simplified.yaml
  7a04dee: components/schemas/Environment.yaml
  a001704: components/schemas/Payment-Id.yaml
  d21286a: components/schemas/Payment-Token.yaml
  f26cba6: components/schemas/Payment-Amount.yaml
  9ebf295: components/schemas/Payment-State-v2.yaml
  67d79e0: components/schemas/Decline-Reason-v2.yaml
  faf3b7e: components/schemas/Authentication-Challenge.yaml
  cc64bb8: components/schemas/Revolut-Pay.yaml
  c7c0e23: components/schemas/Card-For-Payment-Details.yaml
  71cc49f: components/schemas/Sepa-Direct-Debit.yaml
  6c1e107: components/schemas/Card-v2.yaml
  e94efe3: components/schemas/Revolut-Pay-v2.yaml
  e43fa2c: components/schemas/Sepa-Direct-Debit-v2.yaml
  d9f57d1: components/schemas/Dispute-Payment.yaml
  a599903: components/schemas/Dispute-Challenge-Reason.yaml
  3b70180: components/schemas/Dispute-Challenge-Comment.yaml
  c48dc6d: components/schemas/Dispute-Challenge-Evidences.yaml
  a325319: components/schemas/Subscription-Plan-Name.yaml
  cab1828: components/schemas/Subscription-Plan-Trial-Duration.yaml
  2887ebf: components/schemas/Subscription-Plan-Variation-Creation.yaml
  f14ed36: components/schemas/Subscription-Plan-Id.yaml
  7f8b6df: components/schemas/Subscription-Plan-State.yaml
  eca5f6a: components/schemas/Subscription-Plan-Created.yaml
  826b3a4: components/schemas/Subscription-Plan-Updated.yaml
  bb8fa9e: components/schemas/Subscription-Plan-Variation.yaml
  8ee29c2: components/schemas/Subscription-Plan-Variation-Id.yaml
  8d556f9: components/schemas/Subscription-External-Reference.yaml
  7dc7a58: components/schemas/Setup-Order-Redirect-URL.yaml
  6032c49: components/schemas/Subscription-Trial-Duration.yaml
  bb5e5cf: components/schemas/Subscription-Id.yaml
  92afcdb: components/schemas/Subscription-State.yaml
  34d32bc: components/schemas/Subscription-Payment-Method-Type.yaml
  "9e48916": components/schemas/Payment-Method-Id.yaml
  e882e42: components/schemas/Subscription-Created.yaml
  a5009b7: components/schemas/Subscription-Updated.yaml
  1c92981: components/schemas/Subscription-Start-Date.yaml
  c147906: components/schemas/Subscription-Cycle-Id.yaml
  eaaea6b: components/schemas/Subscription-Trial-End-Date.yaml
  dd59dc7: components/schemas/Setup-Order-Id.yaml
  1ec7a53: components/schemas/Subscription-Scheduled-Action.yaml
  2a76ad9: components/schemas/Subscription-Plan-Phase-Id.yaml
  bf5b368: components/schemas/Subscription-Change-Plan-Reason.yaml
  f4b26ad: components/schemas/Cycle-Number.yaml
  4e3ece3: components/schemas/Previous-Cycle-Id.yaml
  0c885e7: components/schemas/Subscription-Cycle-State.yaml
  6905b6b: components/schemas/Subscription-Cycle-Start-Date.yaml
  e3212ad: components/schemas/Subscription-Cycle-End-Date.yaml
  e82403e: components/schemas/Subscription-Cycle-Usage-Cutoff-Date.yaml
  e657068: components/schemas/Subscription-Cycle-Post-Billing-Order-Id.yaml
  ba0fe2a: components/schemas/Subscription-Cycle-Trial.yaml
  42f1cfe: components/schemas/Subscription-Item-Code.yaml
  7c6239f: components/schemas/Subscription-Usage-Date.yaml
  36ec192: components/schemas/Subscription-Usage-Quantity.yaml
  b1ecd7f: components/schemas/Subscription-Usage-Metadata.yaml
  a579556: components/schemas/Subscription-Usage-Id.yaml
  5815cf1: components/schemas/Subscription-Usage-Created-Date.yaml
  ab3ed2e: components/schemas/Subscription-Usage-Updated-Date.yaml
  8de5ed9: components/schemas/Payout-Id.yaml
  842508a: components/schemas/Payout-State.yaml
  09d73a0: components/schemas/Payout-Destination-Type.yaml
  05718b6: components/schemas/Payout-Amount.yaml
  82ecd06: components/schemas/Report-Run-Filter.yaml
  0abca0c: components/schemas/Report-Run-Format.yaml
  34b6874: components/schemas/Report-Run-Type.yaml
  a709559: components/schemas/Report-Run-Settlement-Options.yaml
  0782f68: components/schemas/Report-Run-Custom-Options.yaml
  e6c75ed: components/schemas/Report-Run-Payments-Filter.yaml
  4d0713e: components/schemas/Report-Run-Payments-Options.yaml
  96af67e: components/schemas/Report-Run-Payout-Filter.yaml
  7cff6b1: components/schemas/Report-Run-Payout-Options.yaml
  6eb8be8: components/schemas/Report-Run-Icpp-Filter.yaml
  979a492: components/schemas/Report-Run-Icpp-Options.yaml
  471852d: components/schemas/Webhook-Order-Event.yaml
  459b5b0: components/schemas/Webhook-Subscription-Event.yaml
  7f3912f: components/schemas/Webhook-Payout-Event.yaml
  845bfaa: components/schemas/Webhook-Dispute-Event.yaml
  e740564: components/schemas/Webhook-Url.yaml
  a725038: components/schemas/Webhook-Events.yaml
  dd0635b: components/schemas/Webhook-Id.yaml
  48d07ca: components/schemas/Webhook-Signing-Secret.yaml
  c17f5d5: components/schemas/Location-Creation-Online.yaml
  86ae415: components/schemas/Location-Creation-Physical.yaml
  7acd6e0: components/schemas/Location-Online.yaml
  0cc5e9d: components/schemas/Location-Physical.yaml
  3a0e142: components/schemas/Location-Update-Online.yaml
  5d4dca2: components/schemas/Location-Update-Physical.yaml
  a777633: components/schemas/Terminal-Operation-Mode.yaml
  11efa34: components/schemas/Terminals.yaml
  9730fdd: components/schemas/Payment-Intent-Amount.yaml
  6b77b6c: components/schemas/Terminal-Id.yaml
  021590b: components/schemas/Payment-Intent-Id.yaml
  826a913: components/schemas/Payment-Intent-State.yaml
  a0e71d2: components/schemas/Line-Item.yaml
  "7e82680": components/schemas/Address-v3.yaml
  1e4d41d: components/schemas/Contact.yaml
  2c330f1: components/schemas/Shipments.yaml
  1c15274: components/schemas/Airline-Data-v2.yaml
  48e60dd: components/schemas/Car-Rental-v2.yaml
  62e9a8b: components/schemas/Crypto-Transactions-v3.yaml
  72cc128: components/schemas/Marketplace-v3.yaml
  b5c2fad: components/schemas/Events-v2.yaml
  0eba7e9: components/schemas/Lodging-v3.yaml
  9a48b63: components/schemas/Merchant-Order-Url.yaml
  2bc003b: components/schemas/Incremental-Authorisation.yaml
  f555917: components/schemas/Bank-Message.yaml
  2df9c77: components/schemas/Payment-Created.yaml
  a450668: components/schemas/Payment-Updated.yaml
  "8038e80": components/schemas/Payment-Authorised-Amount.yaml
  ff17c84: components/schemas/Payment-Settled-Amount.yaml
  be93062: components/schemas/Payment-Settled-Currency.yaml
  f8a2cbb: components/schemas/Payment-Method-v2.yaml
  3e78e0d: components/schemas/Authentication-Challenge-v2.yaml
  00ce429: components/schemas/Address-v2.yaml
  24b2457: components/schemas/Payment-Risk-Level.yaml
  87bb99b: components/schemas/Fees.yaml
  b19be60: components/schemas/Payer.yaml
  b3c410a: components/schemas/Order-Customer-v2.yaml
  6b57408: components/schemas/Browser-Environment.yaml
  35cad8b: components/schemas/Three-Ds.yaml
  2d92828: components/schemas/Three-Ds-Fingerprint.yaml
  7ddfc2b: components/schemas/RPay-Account.yaml
  f193828: components/schemas/RPay-Card.yaml
  a32ab53: components/schemas/Payment-Method-Type.yaml
  b4be48a: components/schemas/Sepa-Direct-Debit-Debtor-Iban-Last-Four.yaml
  910c00d: components/schemas/Sepa-Direct-Debit-Debtor-Name.yaml
  ff0c6e3: components/schemas/Sepa-Direct-Debit-Mandate-Reference.yaml
  a631133: components/schemas/Payment-Method-Type-v2.yaml
  1b326c5: components/schemas/Saved-For.yaml
  1ef9782: components/schemas/Payment-Method-Created-At.yaml
  4e1db17: components/schemas/Card-Bin.yaml
  "2205e29": components/schemas/Card-Last-Four.yaml
  e69b245: components/schemas/Card-Expiry-Month.yaml
  b5d31bc: components/schemas/Card-Expiry-Year.yaml
  6f06909: components/schemas/Cardholder-Name.yaml
  2d85eab: components/schemas/Card-Brand-v2.yaml
  5c18a1a: components/schemas/Card-Funding-v2.yaml
  274093f: components/schemas/Card-Issuer.yaml
  372badf: components/schemas/Card-Issuer-Country.yaml
  f6ede59: components/schemas/Billing-Address.yaml
  f4132b2: components/schemas/Dispute-Payment-Id.yaml
  e9a0cb1: components/schemas/Dispute-Payment-Order-Id.yaml
  8c76515: components/schemas/Dispute-Payment-Created-At.yaml
  bf0957e: components/schemas/Dispute-Payment-Arn.yaml
  0fd0216: components/schemas/Dispute-Payment-Amount.yaml
  a409034: components/schemas/Dispute-Payment-Method.yaml
  4fc3b5d: components/schemas/Subscription-Plan-Phase-Creation.yaml
  7eb47cd: components/schemas/Subscription-Plan-Phase.yaml
  97cd1fe: components/schemas/Subscription-Scheduled-Action-Cancel.yaml
  f5fcfbb: components/schemas/Subscription-Scheduled-Action-Change-Plan.yaml
  3104eb3: components/schemas/Report-Run-From.yaml
  3b5796b: components/schemas/Report-Run-To.yaml
  3dfaa9a: components/schemas/Report-Run-Entity-Types.yaml
  dab0a46: components/schemas/Report-Run-Entity-States.yaml
  aacd9d1: components/schemas/Report-Run-Currency.yaml
  4fa5d34: components/schemas/Report-Run-Location-Id.yaml
  fd1b3d8: components/schemas/Report-Run-Timezone.yaml
  4aad94b: components/schemas/Report-Run-Payments-Entity-States.yaml
  a376209: components/schemas/Icpp-Charge-Id.yaml
  840a457: components/schemas/Webhook-Callback-Event.yaml
  c1e66bb: components/schemas/Location-Name.yaml
  fc3b5f1: components/schemas/Location-Type.yaml
  7f31e02: components/schemas/Location-Online-Details.yaml
  874157f: components/schemas/Location-Physical-Details.yaml
  d594899: components/schemas/Terminal.yaml
  990fbe0: components/schemas/Quantity.yaml
  e7c4087: components/schemas/Discount.yaml
  0dd3cd4: components/schemas/Tax.yaml
  daab7f0: components/schemas/Image-Url.yaml
  91fdcb6: components/schemas/Booking-Id.yaml
  111a824: components/schemas/Refundability.yaml
  4ab1712: components/schemas/Passengers.yaml
  bf1b821: components/schemas/Journey-Legs.yaml
  45b3738: components/schemas/Shipment.yaml
  a448e4a: components/schemas/Crypto-Transaction.yaml
  a4df7da: components/schemas/Seller.yaml
  ffbe862: components/schemas/Event.yaml
  4b967ce: components/schemas/Lodging-Item.yaml
  30ffe89: components/schemas/Apple-Pay.yaml
  4282f0c: components/schemas/Card.yaml
  6b05d26: components/schemas/Google-Pay.yaml
  9146afc: components/schemas/Revolut-Pay-Card.yaml
  861939a: components/schemas/Revolut-Pay-Account.yaml
  2f0ed56: components/schemas/Three-Ds-Fingerprint-v2.yaml
  fa3eb14: components/schemas/Fee.yaml
  8f4fd3d: components/schemas/Authentication-Challenge-Type.yaml
  3894c9a: components/schemas/Dispute-Payment-Method-Apple-Pay.yaml
  387ce55: components/schemas/Dispute-Payment-Method-Apple-Tap-To-Pay.yaml
  04afbe6: components/schemas/Dispute-Payment-Method-Card.yaml
  22ecf3d: components/schemas/Dispute-Payment-Method-Google-Pay.yaml
  a4df84d: components/schemas/Dispute-Payment-Method-Revolut-Pay-Account.yaml
  13faa8b: components/schemas/Dispute-Payment-Method-Revolut-Pay-Card.yaml
  b3c6de6: components/schemas/Dispute-Payment-Method-Sepa-Direct-Debit.yaml
  dda9908: components/schemas/Subscription-Plan-Ordinal.yaml
  ac8b01b: components/schemas/Cycle-Duration.yaml
  ec64f3c: components/schemas/Cycle-Count.yaml
  4ec08a4: components/schemas/Subscription-Amount.yaml
  e1e949a: components/schemas/Subscription-Items-Creation.yaml
  2b77ff9: components/schemas/Subscription-Items.yaml
  b8ffdcd: components/schemas/Subscription-Scheduled-Action-Type.yaml
  d4c2387: components/schemas/Geo-Location.yaml
  51f7943: components/schemas/Opening-Hours.yaml
  9ab4dd9: components/schemas/Terminal-Name.yaml
  a651264: components/schemas/Terminal-Type.yaml
  b5263b8: components/schemas/Terminal-Serial-Number.yaml
  519b915: components/schemas/Terminal-Battery-Level.yaml
  be470bf: components/schemas/Terminal-Online.yaml
  25d3924: components/schemas/Terminal-Last-Online-At.yaml
  fb0171f: components/schemas/Passenger.yaml
  db10c08: components/schemas/Journey-Leg.yaml
  73478d8: components/schemas/Address-v4.yaml
  6a1e83e: components/schemas/Supplier-Payment-Date.yaml
  613db16: components/schemas/Ticket.yaml
  2014c75: components/schemas/Lodging-Check-In-Date.yaml
  f11bbb5: components/schemas/Lodging-Check-Out-Date.yaml
  22df96c: components/schemas/Lodging-Category.yaml
  6b47cf2: components/schemas/Lodging-Supplier.yaml
  "9183e30": components/schemas/Lodging-Booking-Type.yaml
  656af02: components/schemas/Lodging-Location.yaml
  d0bd4f7: components/schemas/Guests.yaml
  c7dd364: components/schemas/Card-Checks-v2.yaml
  81aebf6: components/schemas/Authorisation-Code.yaml
  a164737: components/schemas/Arn.yaml
  3cfba3a: components/schemas/Capture-Deadline.yaml
  1a4ec64: components/schemas/Fingerprint.yaml
  9bbb548: components/schemas/Network-Transaction-Id.yaml
  d6c34b8: components/schemas/Dispute-Payment-Method-Type.yaml
  b7e5d5c: components/schemas/Subscription-Item-Creation.yaml
  8a0325b: components/schemas/Subscription-Item.yaml
  bd72d25: components/schemas/Day-Opening-Hours.yaml
  ae9a74f: components/schemas/Guest.yaml
  e57c867: components/schemas/Subscription-Item-Flat-Creation.yaml
  6c68f10: components/schemas/Subscription-Item-Usage-Creation.yaml
  68fd494: components/schemas/Subscription-Item-Flat.yaml
  a27b9b4: components/schemas/Subscription-Item-Usage.yaml
  316120c: components/schemas/Subscription-Item-Name.yaml
  0cf68e9: components/schemas/Subscription-Item-Type.yaml
  5faf289: components/schemas/Subscription-Item-Package-Size.yaml
  925e2ad: components/schemas/Subscription-Item-Unit.yaml
  81ae8b8: components/schemas/Subscription-Item-Quantity.yaml
  e381635: components/schemas/Usage-Aggregation-Method.yaml
  a978337: components/schemas/Subscription-Item-Tier.yaml
  12b8a92: components/schemas/Subscription-Item-Id.yaml
x-ext:
  90b9838:
    name: Authorization
    in: header
    schema:
      type: string
      format: Bearer <yourSecretApiKey>
      examples:
        - Bearer
          sk_1234567890ABCdefGHIjklMNOpqrSTUvwxYZ_1234567890-Ab_cdeFGHijkLMNopq
    required: true
    description: >-
      This parameter accepts the [Merchant API Secret
      key](https://business.revolut.com/settings/apis?tab=merchant-api) to
      authorise requests coming from the merchant's backend. 


      It ensures that ensures that each request is authenticated and authorised
      by verifying the secret key. The secret key should be included in all
      request headers as a `Bearer` token.


      :::info

      For more information, see:
      [Authentication](/docs/api/merchant#authentication)

      :::
  2e8f60f:
    parameters:
      - $ref: "#/x-ext/90b9838"
    post:
      summary: Register domain for Apple Pay
      operationId: registerDomainApplePay
      description: |-
        Register your website's domain to accept payments via Apple Pay. 

        Before you call this endpoint, make sure that you have completed the following steps:

        1. Download the latest [domain validation file](https://assets.revolut.com/api-docs/merchant-api/files/apple-developer-merchantid-domain-association).
        1. Upload the domain validation file to your website in the following folder `/.well-known/`. For example, if your website is `example.com`, the file should be available on `example.com/.well-known/apple-developer-merchantid-domain-association`, where `apple-developer-merchantid-domain-association` indicates the name of the file.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                domain:
                  type: string
                  description: Domain name of your website without the scheme (i.e. without
                    `http://` or `https://`).
                  examples:
                    - revolut.com
              required:
                - domain
            examples:
              example_request:
                summary: Example domain registration request for Apple Pay
                value:
                  domain: revolut.com
      responses:
        "204":
          description: Domain registered successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: >-
                      An identifier that can be used to determine what went
                      wrong.


                      Error codes are not globally unique, but uniqueness is
                      guaranteed within endpoints.
                  message:
                    type: string
                    description: Human readable text describing what went wrong.
                required:
                  - code
              examples:
                error_message:
                  summary: Error message
                  value:
                    code: validation
                    message: Exactly one value must be supplied for client_id
      security:
        - Api-Key: []
      tags:
        - Apple Pay merchant registration
  13f2186:
    name: Revolut-Api-Version
    in: header
    schema:
      type: string
      format: date
      enum:
        - 2023-09-01
        - 2024-05-01
        - 2024-09-01
        - 2025-10-16
        - 2025-12-04
        - 2026-03-12
        - 2026-04-20
      examples:
        - 2026-04-20
    required: true
    description: >-
      The version of the Merchant API, specified in `YYYY-MM-DD` format.


      If not specified, you will receive an error.



      :::info

      For more information about API versioning, see: [API
      versions](/docs/guides/merchant/reference/versioning/api-versions).

      :::
    x-config-always-visible-in-example: true
  4349f60:
    name: limit
    in: query
    schema:
      type: integer
      minimum: 1
      maximum: 500
      default: 100
    description: Maximum number of records to return. Used for **pagination**.
    required: false
  cff174f:
    name: from
    in: query
    schema:
      type: string
      format: date-time
    description: Filter records created from this date/time. Used for **filtering**.
    required: false
  d10b9fd:
    name: to
    in: query
    schema:
      type: string
      format: date-time
    description: Filter records created until this date/time. Used for **filtering**.
    required: false
  f24b8ce:
    name: customer_id
    in: query
    schema:
      type: string
      format: uuid
    description: Filter orders by the ID of the customer.
    required: false
  aef1bf5:
    name: location_id
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    in: query
    required: false
    description: Filter results by location ID.
  e37bb36:
    summary: Example order with minimal required parameters
    value:
      amount: 500
      currency: GBP
  49aaa46:
    summary: Example order with additional parameters
    value:
      amount: 500
      currency: GBP
      capture_mode: manual
      cancel_authorised_after: PT30M
      expire_pending_after: PT15M
      customer:
        email: example@example.com
        date_of_birth: 1990-01-01
      description: Example product
      shipping:
        address:
          street_line_1: 7 Westferry Circus
          city: London
          country_code: GB
          postcode: E14 4HD
      enforce_challenge: forced
      metadata:
        product_type: Example
      merchant_order_data:
        url: https://www.example.com/orders/12345
      redirect_url: https://www.example.com/redirect
      statement_descriptor_suffix: "12345"
  "95e8559":
    summary: Example order with pre-authorisation
    value:
      amount: 5000
      currency: GBP
      capture_mode: manual
      authorisation_type: pre_authorisation
      description: Hotel reservation deposit
      cancel_authorised_after: PT72H
  15a16ad:
    summary: Example order with line items
    value:
      amount: 770
      currency: GBP
      line_items:
        - name: Example item 1
          type: physical
          quantity:
            value: 2
            unit: kg
          unit_price_amount: 100
          total_amount: 170
          external_id: external_id_123
          discounts:
            - name: Discount 1
              amount: 50
          taxes:
            - name: 10% VAT
              amount: 20
          image_urls:
            - https://www.example.com/line-item-image1
            - https://www.example.com/line-item-image2
          description: First line item
          url: https://www.example.com
        - name: Example item 2
          type: service
          quantity:
            value: 10
            unit: pieces
          unit_price_amount: 100
          total_amount: 600
          external_id: external_id_456
          discounts:
            - name: Discount 2
              amount: 500
          taxes:
            - name: 10% VAT
              amount: 100
          image_urls:
            - https://www.example.com/line-item-image3
            - https://www.example.com/line-item-image4
          description: Second line item
          url: https://www.example.com
  1edb9c3:
    summary: Example order with shipping details
    value:
      amount: 500
      currency: GBP
      shipping:
        address:
          street_line_1: Example Street 123
          street_line_2: II/123
          region: London
          city: London
          country_code: GB
          postcode: "123456"
        contact:
          name: Example Contact
          email: example.contact@example.com
          phone: "+441234567890"
        shipments:
          - shipping_company_name: Example Shipping Co.
            tracking_number: "123456789"
            estimated_delivery_date: 2024-12-03T10:15:30+02:00[Europe/Paris]
            tracking_url: https://www.example.com/tracking/123456789
  a298482:
    summary: Example order with additional airline data
    value:
      amount: 500
      currency: GBP
      settlement_currency: EUR
      description: Example order description
      customer:
        full_name: Example Customer
        phone: "+441234567890"
        email: example@example.com
      enforce_challenge: forced
      capture_mode: manual
      cancel_authorised_after: PT30M
      industry_data:
        airline:
          type: airline
          booking_id: unique-booking-id-12345
          fulfillment_date: 2025-12-10T14:00:00.069624Z
          ticket_type: flexible
          crs_code: DATS
          ticket_change_indicator: new
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
            - first_name: John
              last_name: Doe
          journey_legs:
            - sequence: 1
              departure_airport_code: FRA
              arrival_airport_code: LHR
              flight_number: "670"
              fare_base_code: J
              travel_date: 2025-12-10T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 2
              departure_airport_code: LHR
              arrival_airport_code: DUB
              flight_number: "678"
              fare_base_code: J
              travel_date: 2025-12-10T15:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 3
              departure_airport_code: DUB
              arrival_airport_code: LHR
              flight_number: "679"
              fare_base_code: F
              travel_date: 2025-12-15T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 4
              departure_airport_code: LHR
              arrival_airport_code: FRA
              flight_number: "671"
              fare_base_code: F
              travel_date: 2025-12-15T14:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
          booking_url: https://example.com/bookings/1234
      merchant_order_data:
        url: https://www.example.com/ticketnumber-12345
        reference: example_airline_reference
      redirect_url: https://www.example.com/redirect
  30235cd:
    summary: Example order with additional car rental data
    value:
      amount: 500
      currency: GBP
      settlement_currency: GBP
      description: Example car rental order
      customer:
        full_name: Example Customer
        phone: "+447700900000"
        email: example@example.com
      enforce_challenge: forced
      capture_mode: manual
      cancel_authorised_after: PT30M
      industry_data:
        car_rental:
          type: car_rental
          booking_id: example_booking_id
          pick_up_date: 2026-03-01T11:00:00Z
          drop_off_date: 2026-03-05T16:30:00Z
          refundability: partially_refundable
          pick_up_location:
            street_line_1: 1 Example Street
            city: London
            country_code: GB
            postcode: SW1A 1AA
          drop_off_location:
            street_line_1: 10 Another Road
            city: Manchester
            country_code: GB
            postcode: M1 1AA
          distance_limit:
            limit: 500
            unit: miles
            additional_distance_cost:
              amount: 150
              currency: GBP
      merchant_order_data:
        url: https://www.example.com/rental/example_booking_id
        reference: example_car_rental_reference
      redirect_url: https://www.example.com/redirect
  150521e:
    summary: Example order with additional crypto transaction data
    value:
      amount: 26100
      currency: EUR
      settlement_currency: EUR
      description: Customer wants to buy 0.01 BTC
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
      capture_mode: manual
      cancel_authorised_after: PT30M
      industry_data:
        crypto:
          type: crypto
          transactions:
            - id: 7b2a8ed4-5889-4c0c-a8cc-299aff1c881b
              status: pending
              recipient_wallet_id: 64a6f159-0a60-a446-880e-e449a1f62f7c
          seller:
            id: a13638ab-3e90-4b05-9f69-23abc655775b
            name: Ramp Provider Company Name
            website: https://example.com
            phone: "123456789"
            mcc: "6051"
            address:
              street_line_1: 456 Crypto Ave
              city: New York
              postcode: "10001"
              country_code: US
      merchant_order_data:
        url: https://www.example.com/cryptotransactionnumber-12345
        reference: example_crypto_reference
      redirect_url: https://www.example.com/redirect
  bcaf3e4:
    summary: Example order with additional marketplace data
    value:
      amount: 10000
      currency: EUR
      industry_data:
        marketplace:
          type: marketplace
          seller:
            id: 123-45-67
            name: Example Seller
            website: https://example.com/123-45-67
            phone: "+441234567890"
            address:
              street_line_1: 1 Canada Square
              street_line_2: Revolut LTD, Level 39
              postcode: E14 4HD
              country_code: GB
              country_subdivision_code: GB-LND
              city: London
              region: Greater London
  a02f1c8:
    summary: Example order with additional event data
    value:
      amount: 100
      currency: GBP
      industry_data:
        event:
          type: event
          booking_id: example_booking_123
          events:
            - start_date: 2025-12-20T14:00:00Z
              end_date: 2025-12-20T17:00:00Z
              supplier: Example Supplier
              supplier_payment_date: 2025-12-19T14:00:15Z
              name: Example Event
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              category: exhibition
              market: primary
              tickets:
                - id: example_ticket_1
                  transferable: false
                  refundability: partially_refundable
                - id: example_ticket_2
                  transferable: true
                  refundability: non_refundable
                - id: example_ticket_3
                  transferable: false
                  refundability: refundable
  8919d30:
    summary: Example order with additional lodging data
    value:
      amount: 100
      currency: GBP
      industry_data:
        lodging:
          type: lodging
          booking_id: example_booking_123
          lodgings:
            - check_in_date: 2025-12-05T15:00:00Z
              check_out_date: 2025-12-10T11:00:00Z
              category: bed_and_breakfast
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: partially_refundable
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              guests:
                - first_name: First
                  last_name: Guest
                - first_name: Second
                  last_name: Guest
  e4ad330:
    summary: Example order with multiple industry types
    value:
      amount: 1500
      currency: GBP
      description: Flight + Hotel Package
      customer:
        full_name: Example Customer
        phone: "+441234567890"
        email: example@example.com
      capture_mode: manual
      industry_data:
        airline:
          type: airline
          booking_id: flight-booking-456
          fulfillment_date: 2026-01-20T18:00:00Z
          ticket_type: flexible
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
          journey_legs:
            - sequence: 1
              departure_airport_code: LHR
              arrival_airport_code: BCN
              flight_number: "123"
              travel_date: 2026-01-15T08:00:00Z
              airline_name: Example Airlines
              airline_code: EX
            - sequence: 2
              departure_airport_code: BCN
              arrival_airport_code: LHR
              flight_number: "456"
              travel_date: 2026-01-20T16:00:00Z
              airline_name: Example Airlines
              airline_code: EX
          booking_url: https://example.com/bookings/flight-456
        lodging:
          type: lodging
          booking_id: hotel-booking-789
          lodgings:
            - check_in_date: 2026-01-15T15:00:00Z
              check_out_date: 2026-01-20T11:00:00Z
              category: hotel
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: refundable
              location:
                street_line_1: 123 Barcelona Street
                city: Barcelona
                country_code: ES
                postcode: "08001"
              guests:
                - first_name: Example
                  last_name: Customer
  3c2231c:
    title: Order v7
    type: object
    description: To process the order from a credit or debit card, you create an
      `Order` object. You can then retrieve, capture, cancel, refund, or pay an
      order using its unique `id`. Alternatively, you can use its unique `token`
      to process a card payment with the Revolut Checkout Widget.
    properties:
      id:
        $ref: "#/x-ext/8ada47f"
      token:
        $ref: "#/x-ext/db8ab7a"
      type:
        $ref: "#/x-ext/704e5bd"
      state:
        $ref: "#/x-ext/e512ba4"
      created_at:
        type: string
        description: The date and time the order was created.
        format: date-time
      updated_at:
        type: string
        description: The date and time the order was last updated.
        format: date-time
      description:
        $ref: "#/x-ext/a0887df"
      capture_mode:
        $ref: "#/x-ext/e3d4819"
      authorisation_type:
        $ref: "#/x-ext/60768e8"
      cancel_authorised_after:
        $ref: "#/x-ext/bd14ecb"
      amount:
        $ref: "#/x-ext/7dfa842"
      outstanding_amount:
        $ref: "#/x-ext/6758f6f"
      refunded_amount:
        $ref: "#/x-ext/c660be4"
      currency:
        $ref: "#/x-ext/1b2472a"
      settlement_currency:
        $ref: "#/x-ext/4da391a"
      customer:
        $ref: "#/x-ext/f66f113"
      payments:
        type: array
        description: The details of all the payments that have been made towards this
          order (successful or unsuccessful).
        items:
          $ref: "#/x-ext/6b94aa2"
      incremental_authorisations:
        $ref: "#/x-ext/a869377"
      location_id:
        $ref: "#/x-ext/38a61e6"
      metadata:
        $ref: "#/x-ext/c146ad0"
      industry_data:
        $ref: "#/x-ext/f93fd93"
      merchant_order_data:
        $ref: "#/x-ext/31aea79"
      upcoming_payment_data:
        $ref: "#/x-ext/7d308f4"
      checkout_url:
        $ref: "#/x-ext/a571331"
      redirect_url:
        $ref: "#/x-ext/25c3c73"
      shipping:
        $ref: "#/x-ext/a437221"
      enforce_challenge:
        $ref: "#/x-ext/d9d8857"
      line_items:
        $ref: "#/x-ext/bca3068"
      statement_descriptor_suffix:
        $ref: "#/x-ext/52074cd"
      related_order_id:
        $ref: "#/x-ext/c351b6d"
  a4a371d:
    title: Error
    type: object
    properties:
      code:
        type: string
        description: >-
          An identifier that can be used to determine what went wrong.


          Error codes are not globally unique, but uniqueness is guaranteed
          within endpoints.
      message:
        type: string
        description: Some human readable text describing what went wrong.
      timestamp:
        type: integer
        description: The [UNIX timestamp](https://www.unixtimestamp.com/) of the date
          and time the error happened.
  e8e192f:
    summary: Example order response with minimal required parameters
    value:
      id: 6516e61c-d279-a454-a837-bc52ce55ed49
      token: 0adc0e3c-ab44-4f33-bcc0-534ded7354ce
      type: payment
      state: pending
      created_at: 2023-09-29T14:58:36.079398Z
      updated_at: 2023-09-29T14:58:36.079398Z
      amount: 500
      currency: GBP
      outstanding_amount: 500
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/0adc0e3c-ab44-4f33-bcc0-534ded7354ce
      enforce_challenge: automatic
  8bef905:
    summary: Example order response with additional parameters
    value:
      id: 6516e6ec-c7f7-a0fb-a6d3-add05fa46d2f
      token: 1058031d-1e71-4d07-9f97-5ad388a1346c
      type: payment
      state: pending
      created_at: 2023-09-29T15:02:04.083787Z
      updated_at: 2023-09-29T15:02:04.083787Z
      amount: 500
      currency: GBP
      outstanding_amount: 500
      capture_mode: manual
      authorisation_type: final
      cancel_authorised_after: PT30M
      description: Example product
      checkout_url: https://checkout.revolut.com/payment-link/1058031d-1e71-4d07-9f97-5ad388a1346c
      redirect_url: https://www.example.com/redirect
      shipping:
        address:
          street_line_1: 7 Westferry Circus
          city: London
          country_code: GB
          postcode: E14 4HD
      metadata:
        product_type: Example
      enforce_challenge: forced
      customer:
        id: 467646d6-e452-4d1e-a401-703f09cd3818
        email: example@example.com
        date_of_birth: 1990-01-01
      merchant_order_data:
        url: https://example.com/orders/12345
      statement_descriptor_suffix: "12345"
  cfb7391:
    summary: Example order response with pre-authorisation and card payment
    value:
      id: 6516e61c-d279-a454-a837-bc52ce55ed49
      token: 0adc0e3c-ab44-4f33-bcc0-534ded7354ce
      type: payment
      state: authorised
      created_at: 2023-09-29T14:58:36.079398Z
      updated_at: 2023-09-29T14:58:36.079398Z
      amount: 5000
      currency: GBP
      outstanding_amount: 5000
      capture_mode: manual
      authorisation_type: pre_authorisation
      cancel_authorised_after: PT72H
      description: Hotel reservation deposit
      checkout_url: https://checkout.revolut.com/payment-link/0adc0e3c-ab44-4f33-bcc0-534ded7354ce
      enforce_challenge: automatic
      payments:
        - id: 6516f38a-a12b-aca3-83f2-6ed16d6ed246
          state: authorised
          created_at: 2023-09-29T14:55:54.579311Z
          updated_at: 2023-09-29T14:56:38.403232Z
          amount: 5000
          currency: GBP
          settled_amount: 5000
          settled_currency: GBP
          billing_address:
            country_code: GB
            postcode: SW1A 1AA
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            card_brand: visa
            funding: credit
            card_country_code: GB
            card_bin: "411111"
            card_last_four: "1111"
            card_expiry: 12/25
            cardholder_name: Example Holder
            capture_deadline: 2023-10-06T14:55:54.579311Z
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
            network_transaction_id: "1234567890123456"
  312ca55:
    description: Example order response with line items
    value:
      id: 66bcc998-4209-ac6e-96fe-2910b949c516
      token: 0bcfcc1d-9ee9-4476-b36c-cf4abba2e45a
      type: payment
      state: pending
      created_at: 2024-08-14T15:13:28.814729Z
      updated_at: 2024-08-14T15:13:28.814729Z
      amount: 770
      currency: GBP
      outstanding_amount: 770
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/0bcfcc1d-9ee9-4476-b36c-cf4abba2e45a
      enforce_challenge: automatic
      line_items:
        - name: Example item 1
          unit_price_amount: 100
          quantity:
            value: 2
            unit: kg
          type: physical
          discounts:
            - name: Discount 1
              amount: 50
          taxes:
            - name: 10% VAT
              amount: 20
          total_amount: 170
          image_urls:
            - https://www.example.com/line-item-image1
            - https://www.example.com/line-item-image2
          description: First line item
          external_id: external_id_123
          url: https://www.example.com
        - name: Example item 2
          unit_price_amount: 100
          quantity:
            value: 10
            unit: pieces
          type: service
          discounts:
            - name: Discount 2
              amount: 500
          taxes:
            - name: 10% VAT
              amount: 100
          total_amount: 600
          image_urls:
            - https://www.example.com/line_item_image3
            - https://www.example.com/line_item_image4
          description: Second line item
          external_id: external_id_456
          url: https://www.example.com
  72aed61:
    summary: Example order response with shipping details
    value:
      id: 66c5e449-36d3-af78-a832-328150ddc6a3
      token: b1145e3e-30c7-4dd6-b84c-680dccd39dde
      type: payment
      state: pending
      created_at: 2024-08-21T12:57:45.793605Z
      updated_at: 2024-08-21T12:57:45.793605Z
      amount: 770
      currency: GBP
      outstanding_amount: 770
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/b1145e3e-30c7-4dd6-b84c-680dccd39dde
      shipping:
        address:
          street_line_1: Example Street 123
          street_line_2: II/123
          region: London
          city: London
          country_code: GB
          postcode: "123456"
        contact:
          name: Example Contact
          email: example.contact@example.com
          phone: "+441234567890"
        shipments:
          - shipping_company_name: Example Shipping Co.
            tracking_number: "123456789"
            estimated_delivery_date: 2024-12-03T10:15:30+02:00[Europe/Paris]
            tracking_url: https://www.example.com/tracking/123456789
      enforce_challenge: automatic
  147ace7:
    summary: Example order response with additional airline data
    value:
      id: 6516ed0c-098f-aa19-80e5-9d92f52b35e0
      token: 061f2c63-e36b-421e-9ece-5adfcd580886
      type: payment
      state: pending
      created_at: 2025-12-01T15:28:12.114992Z
      updated_at: 2025-12-01T15:28:12.114992Z
      amount: 500
      currency: GBP
      outstanding_amount: 500
      settlement_currency: EUR
      capture_mode: manual
      authorisation_type: final
      description: Example order description
      checkout_url: https://checkout.revolut.com/payment-link/061f2c63-e36b-421e-9ece-5adfcd580886
      redirect_url: https://www.example.com/redirect
      cancel_authorised_after: PT30M
      industry_data:
        airline:
          type: airline
          booking_id: unique-booking-id-12345
          fulfillment_date: 2025-12-10T14:00:00.069624Z
          ticket_type: flexible
          crs_code: DATS
          ticket_change_indicator: new
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
            - first_name: John
              last_name: Doe
          journey_legs:
            - sequence: 1
              departure_airport_code: FRA
              arrival_airport_code: LHR
              flight_number: "670"
              fare_base_code: J
              travel_date: 2025-12-10T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 2
              departure_airport_code: LHR
              arrival_airport_code: DUB
              flight_number: "678"
              fare_base_code: J
              travel_date: 2025-12-10T15:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 3
              departure_airport_code: DUB
              arrival_airport_code: LHR
              flight_number: "679"
              fare_base_code: F
              travel_date: 2025-12-15T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 4
              departure_airport_code: LHR
              arrival_airport_code: FRA
              flight_number: "671"
              fare_base_code: F
              travel_date: 2025-12-15T14:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
          booking_url: https://example.com/bookings/1234
      enforce_challenge: forced
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+441234567890"
        full_name: Example Customer
      merchant_order_data:
        url: https://www.example.com/ticketnumber-12345
        reference: example_airline_reference
  11b2c83:
    summary: Example order response with additional car rental data
    value:
      id: 6516ed0c-098f-aa19-80e5-9d92f52b35e0
      token: 061f2c63-e36b-421e-9ece-5adfcd580886
      type: payment
      state: pending
      created_at: 2025-12-01T15:28:12.114992Z
      updated_at: 2025-12-01T15:28:12.114992Z
      amount: 500
      currency: GBP
      outstanding_amount: 500
      settlement_currency: GBP
      capture_mode: manual
      authorisation_type: final
      description: Example car rental order
      checkout_url: https://checkout.revolut.com/payment-link/061f2c63-e36b-421e-9ece-5adfcd580886
      redirect_url: https://www.example.com/redirect
      cancel_authorised_after: PT30M
      industry_data:
        car_rental:
          type: car_rental
          booking_id: example_booking_id
          pick_up_date: 2026-03-01T11:00:00Z
          drop_off_date: 2026-03-05T16:30:00Z
          refundability: partially_refundable
          pick_up_location:
            street_line_1: 1 Example Street
            city: London
            country_code: GB
            postcode: SW1A 1AA
          drop_off_location:
            street_line_1: 10 Another Road
            city: Manchester
            country_code: GB
            postcode: M1 1AA
          distance_limit:
            limit: 500
            unit: miles
            additional_distance_cost:
              amount: 150
              currency: GBP
      enforce_challenge: forced
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+447700900000"
        full_name: Example Customer
      merchant_order_data:
        url: https://www.example.com/rental/example_booking_id
        reference: example_car_rental_reference
  4f45ac1:
    summary: Example order response with additional crypto transaction data
    value:
      id: 6516edb9-74af-ae47-829b-1475e807a8d7
      token: 1e619c26-d954-4d45-94ab-aba1e407fcee
      type: payment
      state: pending
      created_at: 2025-12-01T15:31:05.746826Z
      updated_at: 2025-12-01T15:31:05.746826Z
      amount: 26100
      currency: EUR
      outstanding_amount: 26100
      settlement_currency: EUR
      capture_mode: manual
      authorisation_type: final
      description: Customer wants to buy 0.01 BTC
      checkout_url: https://checkout.revolut.com/payment-link/1e619c26-d954-4d45-94ab-aba1e407fcee
      redirect_url: https://www.example.com/redirect
      industry_data:
        crypto:
          type: crypto
          transactions:
            - id: 7b2a8ed4-5889-4c0c-a8cc-299aff1c881b
              status: pending
              recipient_wallet_id: 64a6f159-0a60-a446-880e-e449a1f62f7c
          seller:
            id: a13638ab-3e90-4b05-9f69-23abc655775b
            name: Ramp Provider Company Name
            website: https://example.com
            phone: "123456789"
            mcc: "6051"
            address:
              street_line_1: 456 Crypto Ave
              city: New York
              postcode: "10001"
              country_code: US
      enforce_challenge: automatic
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+44123456789"
        full_name: Example Customer
      merchant_order_data:
        url: https://www.example.com/cryptotransactionnumber-12345
        reference: example_crypto_reference
  d9c197e:
    summary: Example order response with additional marketplace data
    value:
      id: 670920dc-d343-abf8-963a-68ae1bc8ae58
      token: 41aabe45-b444-45e6-8363-f0433452e138
      type: payment
      state: pending
      created_at: 2025-12-01T12:58:04.826974Z
      updated_at: 2025-12-01T12:58:04.826974Z
      amount: 10000
      currency: EUR
      outstanding_amount: 10000
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/41aabe45-b444-45e6-8363-f0433452e138
      industry_data:
        marketplace:
          type: marketplace
          seller:
            id: 123-45-67
            name: Example Seller
            address:
              street_line_1: 1 Canada Square
              street_line_2: Revolut LTD, Level 39
              region: Greater London
              city: London
              country_code: GB
              country_subdivision_code: GB-LND
              postcode: E14 4HD
            website: https://example.com/123-45-67
            phone: "+441234567890"
      enforce_challenge: automatic
  10620c4:
    summary: Example order response with additional event data
    value:
      id: 67bf20c4-59a5-a7a9-81ad-052fda5f80eb
      token: 8737a497-9bae-4647-90bf-1abe2fd9162a
      type: payment
      state: pending
      created_at: 2025-12-01T14:10:12.804901Z
      updated_at: 2025-12-01T14:10:12.804901Z
      amount: 100
      currency: GBP
      outstanding_amount: 100
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/8737a497-9bae-4647-90bf-1abe2fd9162a
      industry_data:
        event:
          type: event
          booking_id: example_booking_123
          events:
            - start_date: 2025-12-20T14:00:00Z
              end_date: 2025-12-20T17:00:00Z
              supplier: Example Supplier
              supplier_payment_date: 2025-12-19T14:00:15Z
              name: Example Event
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              category: exhibition
              market: primary
              tickets:
                - id: example_ticket_1
                  transferable: false
                  refundability: partially_refundable
                - id: example_ticket_2
                  transferable: true
                  refundability: non_refundable
                - id: example_ticket_3
                  transferable: false
                  refundability: refundable
      enforce_challenge: automatic
  d17e5f9:
    summary: Example order response with additional lodging data
    value:
      id: 67c70d42-1545-a73d-a4a5-35b7ac49e1da
      token: 9effe2b6-8907-4954-9e9b-696f763f7e08
      type: payment
      state: pending
      created_at: 2025-12-01T14:25:06.099782Z
      updated_at: 2025-12-01T14:25:06.099782Z
      amount: 100
      currency: GBP
      outstanding_amount: 100
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/9effe2b6-8907-4954-9e9b-696f763f7e08
      industry_data:
        lodging:
          type: lodging
          booking_id: example_booking_123
          lodgings:
            - check_in_date: 2025-12-05T15:00:00Z
              check_out_date: 2025-12-10T11:00:00Z
              category: bed_and_breakfast
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: partially_refundable
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              guests:
                - first_name: First
                  last_name: Guest
                - first_name: Second
                  last_name: Guest
      enforce_challenge: automatic
  a613f42:
    summary: Example order response with multiple industry types
    value:
      id: 6516ed0c-098f-aa19-80e5-9d92f52b35e0
      token: 061f2c63-e36b-421e-9ece-5adfcd580886
      type: payment
      state: pending
      created_at: 2025-12-01T15:28:12.114992Z
      updated_at: 2025-12-01T15:28:12.114992Z
      amount: 1500
      currency: GBP
      outstanding_amount: 1500
      capture_mode: manual
      authorisation_type: final
      description: Flight + Hotel Package
      checkout_url: https://checkout.revolut.com/payment-link/061f2c63-e36b-421e-9ece-5adfcd580886
      industry_data:
        airline:
          type: airline
          booking_id: flight-booking-456
          fulfillment_date: 2026-01-20T18:00:00Z
          ticket_type: flexible
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
          journey_legs:
            - sequence: 1
              departure_airport_code: LHR
              arrival_airport_code: BCN
              flight_number: "123"
              travel_date: 2026-01-15T08:00:00Z
              airline_name: Example Airlines
              airline_code: EX
            - sequence: 2
              departure_airport_code: BCN
              arrival_airport_code: LHR
              flight_number: "456"
              travel_date: 2026-01-20T16:00:00Z
              airline_name: Example Airlines
              airline_code: EX
          booking_url: https://example.com/bookings/flight-456
        lodging:
          type: lodging
          booking_id: hotel-booking-789
          lodgings:
            - check_in_date: 2026-01-15T15:00:00Z
              check_out_date: 2026-01-20T11:00:00Z
              category: hotel
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: refundable
              location:
                street_line_1: 123 Barcelona Street
                city: Barcelona
                country_code: ES
                postcode: "08001"
              guests:
                - first_name: Example
                  last_name: Customer
      enforce_challenge: automatic
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+441234567890"
        full_name: Example Customer
  b98243c:
    summary: List of orders
    value:
      orders:
        - id: a1b2c3d4-0001-0000-0000-000000000001
          token: b2c3d4e5-0001-0000-0000-000000000001
          type: payment
          state: completed
          created_at: 2025-03-10T08:30:00Z
          updated_at: 2025-03-10T08:32:15Z
          amount: 4999
          currency: GBP
          outstanding_amount: 0
          capture_mode: automatic
          enforce_challenge: automatic
          description: Premium subscription
          customer:
            id: c3d4e5f6-0001-0000-0000-000000000001
            email: jane.doe@example.com
            full_name: Jane Doe
            phone: "+441234567890"
        - id: a1b2c3d4-0002-0000-0000-000000000002
          token: b2c3d4e5-0002-0000-0000-000000000002
          type: payment
          state: completed
          created_at: 2025-03-11T09:00:00Z
          updated_at: 2025-03-11T09:01:45Z
          amount: 12500
          currency: EUR
          outstanding_amount: 0
          capture_mode: automatic
          enforce_challenge: automatic
          description: Shopping cart
          customer:
            id: c3d4e5f6-0002-0000-0000-000000000002
            email: john.smith@example.com
            full_name: John Smith
          line_items:
            - name: Wireless headphones
              quantity: 1
              unit_price: 9900
              total_amount: 9900
            - name: Phone case
              quantity: 2
              unit_price: 1300
              total_amount: 2600
        - id: a1b2c3d4-0003-0000-0000-000000000003
          type: refund
          state: completed
          created_at: 2025-03-12T11:15:00Z
          updated_at: 2025-03-12T11:16:30Z
          amount: 4999
          currency: GBP
          outstanding_amount: 0
          capture_mode: automatic
          enforce_challenge: automatic
          related_order_id: a1b2c3d4-0001-0000-0000-000000000001
          merchant_order_data:
            order_id: ORD-2025-001
            description: Customer-requested refund
        - id: a1b2c3d4-0004-0000-0000-000000000004
          token: b2c3d4e5-0004-0000-0000-000000000004
          type: payment
          state: authorised
          created_at: 2025-03-13T14:00:00Z
          updated_at: 2025-03-13T14:00:30Z
          amount: 35000
          currency: USD
          outstanding_amount: 35000
          capture_mode: manual
          enforce_challenge: automatic
          description: Enterprise software licence
          cancel_authorised_after: 2025-03-20T14:00:00Z
          customer:
            id: c3d4e5f6-0003-0000-0000-000000000003
            email: alex.johnson@example.com
            full_name: Alex Johnson
        - id: a1b2c3d4-0005-0000-0000-000000000005
          token: b2c3d4e5-0005-0000-0000-000000000005
          type: payment
          state: completed
          created_at: 2025-03-14T16:45:00Z
          updated_at: 2025-03-14T16:46:00Z
          amount: 799
          currency: GBP
          outstanding_amount: 0
          capture_mode: automatic
          enforce_challenge: automatic
          description: Coffee and pastry
          location_id: d4e5f6a7-0001-0000-0000-000000000001
  6ebce25:
    name: order_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the `Order` object.
  c2c6e40:
    summary: Example increment with minimal required parameters
    value:
      amount: 600
  b947f42:
    summary: Example increment with additional parameters
    value:
      amount: 6000
      reference: CHG-67890
      line_items:
        - name: Minibar
          type: physical
          quantity:
            value: 1
          unit_price_amount: 2500
          total_amount: 2500
        - name: Room service
          type: physical
          quantity:
            value: 1
          unit_price_amount: 3500
          total_amount: 3500
  d840984:
    summary: Increment in progress
    value:
      id: 6920869a-8d8d-aefd-a3c3-8fe4690e4323
      token: 0823794d-28e9-4fdd-a130-3293ff9dd57b
      type: payment
      state: processing
      created_at: 2025-11-21T15:34:50.351537Z
      updated_at: 2025-11-21T15:35:12.123456Z
      amount: 500
      currency: EUR
      outstanding_amount: 500
      capture_mode: manual
      authorisation_type: pre_authorisation
      incremental_authorisations:
        - new_amount: 600
          old_amount: 500
          state: processing
          reference: "1263738"
      payments:
        - id: 696a4ce4-2aaf-a008-9f26-f47cf8ab1678
          state: authorisation_started
          created_at: 2025-11-21T15:34:50.474085Z
          updated_at: 2025-11-21T15:35:12.300608Z
          token: 928f25b1-121c-4669-ab9f-d0b7a5804576
          amount: 600
          authorised_amount: 500
          currency: EUR
          settled_amount: 500
          settled_currency: EUR
          billing_address:
            country_code: US
            postcode: "94102"
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            card_brand: visa
            funding: debit
            card_country_code: US
            card_bin: "424242"
            card_last_four: "4242"
            card_expiry: 12/35
            cardholder_name: Example Customer
            checks:
              three_ds:
                eci: "05"
                state: verified
                version: 2
              cvv_verification: not_processed
              address: n_a
              postcode: n_a
              cardholder: n_a
            fingerprint: aadDmPDArelhtk5QK3zqccaPi39zEDp6/uKuUsA9LHE=
            network_transaction_id: "1234567890123456"
            authorisation_code: "100000"
            arn: "12345678912345678912345"
            capture_deadline: 2025-11-28T15:34:50.513Z
      checkout_url: https://checkout.revolut.com/payment-link/0823794d-28e9-4fdd-a130-3293ff9dd57b
      enforce_challenge: automatic
  e19e106:
    summary: Increment authorised successfully
    value:
      id: 6920869a-8d8d-aefd-a3c3-8fe4690e4323
      token: 0823794d-28e9-4fdd-a130-3293ff9dd57b
      type: payment
      state: authorised
      created_at: 2025-11-21T15:34:50.351537Z
      updated_at: 2025-11-21T15:35:15.789012Z
      amount: 600
      currency: EUR
      outstanding_amount: 600
      capture_mode: manual
      authorisation_type: pre_authorisation
      incremental_authorisations:
        - new_amount: 600
          old_amount: 500
          state: authorised
          reference: "1263738"
      payments:
        - id: 696a4ce4-2aaf-a008-9f26-f47cf8ab1678
          state: authorised
          created_at: 2025-11-21T15:34:50.474085Z
          updated_at: 2025-11-21T15:35:15.789012Z
          token: 928f25b1-121c-4669-ab9f-d0b7a5804576
          amount: 600
          authorised_amount: 600
          currency: EUR
          settled_amount: 600
          settled_currency: EUR
          billing_address:
            country_code: US
            postcode: "94102"
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            card_brand: visa
            funding: debit
            card_country_code: US
            card_bin: "424242"
            card_last_four: "4242"
            card_expiry: 12/35
            cardholder_name: Example Customer
            checks:
              three_ds:
                eci: "05"
                state: verified
                version: 2
              cvv_verification: not_processed
              address: n_a
              postcode: n_a
              cardholder: n_a
            fingerprint: aadDmPDArelhtk5QK3zqccaPi39zEDp6/uKuUsA9LHE=
            network_transaction_id: "1234567890123456"
            authorisation_code: "100000"
            arn: "12345678912345678912345"
            capture_deadline: 2025-11-28T15:34:50.513Z
  8817c1e:
    summary: Increment declined
    value:
      id: 6920869a-8d8d-aefd-a3c3-8fe4690e4323
      token: 0823794d-28e9-4fdd-a130-3293ff9dd57b
      type: payment
      state: authorised
      created_at: 2025-11-21T15:34:50.351537Z
      updated_at: 2025-11-21T15:35:15.789012Z
      amount: 500
      currency: EUR
      outstanding_amount: 500
      capture_mode: manual
      authorisation_type: pre_authorisation
      incremental_authorisations:
        - new_amount: 600
          old_amount: 500
          state: declined
          reference: "1263738"
          reason: insufficient_funds
      payments:
        - id: 696a4ce4-2aaf-a008-9f26-f47cf8ab1678
          state: authorised
          created_at: 2025-11-21T15:34:50.474085Z
          updated_at: 2025-11-21T15:35:15.789012Z
          token: 928f25b1-121c-4669-ab9f-d0b7a5804576
          amount: 500
          authorised_amount: 500
          currency: EUR
          settled_amount: 500
          settled_currency: EUR
          billing_address:
            country_code: US
            postcode: "94102"
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            card_brand: visa
            funding: debit
            card_country_code: US
            card_bin: "424242"
            card_last_four: "4242"
            card_expiry: 12/35
            cardholder_name: Example Customer
            checks:
              three_ds:
                eci: "05"
                state: verified
                version: 2
              cvv_verification: not_processed
              address: n_a
              postcode: n_a
              cardholder: n_a
            fingerprint: aadDmPDArelhtk5QK3zqccaPi39zEDp6/uKuUsA9LHE=
            network_transaction_id: "1234567890123456"
            authorisation_code: "100000"
            arn: "12345678912345678912345"
            capture_deadline: 2025-11-28T15:34:50.513Z
  a441f72:
    summary: Capture with amount only
    value:
      amount: 100
  797e8ac:
    summary: Capture with amount and line items
    value:
      amount: 770
      line_items:
        - name: Example item 1
          type: physical
          quantity:
            value: 2
            unit: kg
          unit_price_amount: 100
          total_amount: 170
          external_id: external_id_123
          discounts:
            - name: Discount 1
              amount: 50
          taxes:
            - name: 10% VAT
              amount: 20
        - name: Example item 2
          type: service
          quantity:
            value: 10
            unit: pieces
          unit_price_amount: 100
          total_amount: 600
          external_id: external_id_456
          discounts:
            - name: Discount 2
              amount: 500
          taxes:
            - name: 10% VAT
              amount: 100
  a64baa6:
    summary: Captured order (minimal)
    value:
      id: 65c4c739-113d-a608-9128-47c7ca90cbe3
      token: ebc06202-061e-4d0f-8063-99195fad31fb
      type: payment
      state: completed
      created_at: 2024-02-08T12:21:13.022871Z
      updated_at: 2024-02-08T12:21:52.194601Z
      amount: 100
      currency: GBP
      refunded_amount: 0
      outstanding_amount: 0
      capture_mode: manual
      payments:
        - id: 65c4c748-bf0d-af8a-9d69-0fc92bc0ff94
          state: captured
          created_at: 2024-02-08T12:21:28.803165Z
          updated_at: 2024-02-08T12:21:52.191352Z
          token: 74af5a2b-6722-4353-aaf1-cd5926883b60
          amount: 100
          currency: GBP
          settled_amount: 100
          settled_currency: GBP
          billing_address:
            country_code: US
            postcode: "12345"
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: revolut_pay_card
            card_brand: visa
            funding: debit
            card_country_code: US
            card_bin: "529999"
            card_last_four: "0368"
            card_expiry: 12/28
            cardholder_name: Test Holder
            checks:
              three_ds:
                state: verified
                version: 2
            enforce_challenge: automatic
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
            network_transaction_id: "1234567890123456"
  de68965:
    summary: Captured order with line items
    value:
      id: 65c4c739-113d-a608-9128-47c7ca90cbe3
      token: ebc06202-061e-4d0f-8063-99195fad31fb
      type: payment
      state: completed
      created_at: 2024-02-08T12:21:13.022871Z
      updated_at: 2024-02-08T12:21:52.194601Z
      amount: 770
      currency: GBP
      refunded_amount: 0
      outstanding_amount: 0
      capture_mode: manual
      line_items:
        - name: Example item 1
          type: physical
          quantity:
            value: 2
            unit: kg
          unit_price_amount: 100
          total_amount: 170
          external_id: external_id_123
          discounts:
            - name: Discount 1
              amount: 50
          taxes:
            - name: 10% VAT
              amount: 20
        - name: Example item 2
          type: service
          quantity:
            value: 10
            unit: pieces
          unit_price_amount: 100
          total_amount: 600
          external_id: external_id_456
          discounts:
            - name: Discount 2
              amount: 500
          taxes:
            - name: 10% VAT
              amount: 100
      payments:
        - id: 65c4c748-bf0d-af8a-9d69-0fc92bc0ff94
          state: captured
          created_at: 2024-02-08T12:21:28.803165Z
          updated_at: 2024-02-08T12:21:52.191352Z
          token: 74af5a2b-6722-4353-aaf1-cd5926883b60
          amount: 770
          currency: GBP
          settled_amount: 770
          settled_currency: GBP
          billing_address:
            country_code: US
            postcode: "12345"
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: revolut_pay_card
            card_brand: visa
            funding: debit
            card_country_code: US
            card_bin: "529999"
            card_last_four: "0368"
            card_expiry: 12/28
            cardholder_name: Test Holder
            checks:
              three_ds:
                state: verified
                version: 2
            enforce_challenge: automatic
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
            network_transaction_id: "1234567890123456"
  a200791:
    name: Revolut-Api-Version
    in: header
    schema:
      type: string
      format: date
      enum:
        - 2023-09-01
        - 2024-05-01
        - 2024-09-01
        - 2025-10-16
        - 2025-12-04
        - 2026-03-12
        - 2026-04-20
      examples:
        - 2026-04-20
    description: >-
      The version of the Merchant API, specified in `YYYY-MM-DD` format.


      :::info

      For more information about API versioning, see: [API
      versions](/docs/guides/merchant/reference/versioning/api-versions).

      :::
    x-config-always-visible-in-example: true
  d246405:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
    post:
      summary: Unregister domain for Apple Pay
      operationId: unregisterDomainApplePay
      description: "Unregister your website from Apple Pay's registered domains. "
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                domain:
                  type: string
                  description: Domain name of your website without the scheme (i.e. without
                    `http://` or `https://`).
                  examples:
                    - revolut.com
                reason:
                  type: string
                  description: A short explanation why you remove the domain.
                  maxLength: 1024
              required:
                - domain
                - reason
            examples:
              example_request:
                summary: Example domain registration request for Apple Pay
                value:
                  domain: revolut.com
                  reason: Unregister due to domain change.
      responses:
        "204":
          description: Domain ungistered successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    description: >-
                      An identifier that can be used to determine what went
                      wrong.


                      Error codes are not globally unique, but uniqueness is
                      guaranteed within endpoints.
                  message:
                    type: string
                    description: Human readable text describing what went wrong.
                required:
                  - code
              examples:
                error_message:
                  summary: Error message
                  value:
                    code: validation
                    message: Exactly one value must be supplied for client_id
      security:
        - Api-Key: []
      tags:
        - Apple Pay merchant registration
  a354217:
    summary: Example order response with minimal required parameters
    value:
      id: 6516f565-c903-ae7d-8582-0bc70468ec29
      token: 579462b3-da89-4a46-8690-572d3968573f
      type: payment
      state: cancelled
      created_at: 2023-09-29T16:03:49.569437Z
      updated_at: 2023-09-29T16:04:30.727004Z
      amount: 500
      currency: GBP
      refunded_amount: 0
      outstanding_amount: 0
      capture_mode: automatic
      authorisation_type: final
      enforce_challenge: automatic
  2f919cb:
    summary: Example order response with additional parameters
    value:
      id: 6516f379-c03f-adf3-a2bf-24b328909731
      token: 91533c29-47d1-4ae9-a73f-74225fd4b176
      type: payment
      state: cancelled
      created_at: 2023-09-29T15:55:37.201407Z
      updated_at: 2023-09-29T15:56:38.398961Z
      amount: 500
      currency: GBP
      refunded_amount: 0
      outstanding_amount: 500
      capture_mode: manual
      authorisation_type: final
      cancel_authorised_after: PT30M
      description: Example product
      checkout_url: https://checkout.revolut.com/payment-link/91533c29-47d1-4ae9-a73f-74225fd4b176
      redirect_url: https://www.example.com/redirect
      shipping_address:
        street_line_1: 7 Westferry Circus
        city: London
        country_code: GB
        postcode: E14 4HD
      metadata:
        product_type: Example
      payments:
        - id: 6516f38a-a12b-aca3-83f2-6ed16d6ed246
          state: authorised
          created_at: 2023-09-29T15:55:54.579311Z
          updated_at: 2023-09-29T15:56:38.403232Z
          amount: 500
          currency: GBP
          settled_amount: 500
          settled_currency: GBP
          billing_address:
            street_line_1: 26 Atkins Avenue
            street_line_2: New York 42233
            city: SentinelFraudLow
            country_code: GB
            postcode: PE3 9UP
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: revolut_pay_account
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
      enforce_challenge: forced
      customer:
        id: 3c131306-0a0a-4f54-99d7-3fb2e027c6f7
        email: example@example.com
        phone: "+441234567890"
        full_name: Example Customer
      merchant_order_data:
        url: https://example.com/orders/12345
      statement_descriptor_suffix: "12345"
  6ceabeb:
    description: Example order response with line items
    value:
      id: 66bcc998-4209-ac6e-96fe-2910b949c516
      token: 0bcfcc1d-9ee9-4476-b36c-cf4abba2e45a
      type: payment
      state: cancelled
      created_at: 2024-08-14T15:13:28.814729Z
      updated_at: 2024-08-14T15:13:28.814729Z
      amount: 770
      currency: GBP
      outstanding_amount: 770
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/0bcfcc1d-9ee9-4476-b36c-cf4abba2e45a
      enforce_challenge: automatic
      line_items:
        - name: Example item 1
          unit_price_amount: 100
          quantity:
            value: 2
            unit: kg
          type: physical
          discounts:
            - name: Discount 1
              amount: 50
          taxes:
            - name: 10% VAT
              amount: 20
          total_amount: 170
          image_urls:
            - https://www.example.com/line-item-image1
            - https://www.example.com/line-item-image2
          description: First line item
          external_id: external_id_123
          url: https://www.example.com
        - name: Example item 2
          unit_price_amount: 100
          quantity:
            value: 10
            unit: pieces
          type: service
          discounts:
            - name: Discount 2
              amount: 500
          taxes:
            - name: 10% VAT
              amount: 100
          total_amount: 600
          image_urls:
            - https://www.example.com/line_item_image3
            - https://www.example.com/line_item_image4
          description: Second line item
          external_id: external_id_456
          url: https://www.example.com
  65d2c53:
    summary: Example order response with shipping details
    value:
      id: 66c5e449-36d3-af78-a832-328150ddc6a3
      token: b1145e3e-30c7-4dd6-b84c-680dccd39dde
      type: payment
      state: cancelled
      created_at: 2024-08-21T12:57:45.793605Z
      updated_at: 2024-08-21T12:57:45.793605Z
      amount: 770
      currency: GBP
      outstanding_amount: 770
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/b1145e3e-30c7-4dd6-b84c-680dccd39dde
      shipping:
        address:
          street_line_1: Example Street 123
          street_line_2: II/123
          region: London
          city: London
          country_code: GB
          postcode: "123456"
        contact:
          name: Example Contact
          email: example.contact@example.com
          phone: "+441234567890"
        shipments:
          - shipping_company_name: Example Shipping Co.
            tracking_number: "123456789"
            estimated_delivery_date: 2024-12-03T10:15:30+02:00[Europe/Paris]
            tracking_url: https://www.example.com/tracking/123456789
      enforce_challenge: automatic
  b1bc0d5:
    summary: Example cancelled order response with additional airline data
    value:
      id: 6516f2f3-fd2c-ac2c-9bf2-3e02711dd3fb
      token: 245e63f3-1e44-40db-bcd4-4448263d3fa2
      type: payment
      state: cancelled
      created_at: 2025-12-01T15:53:23.234913Z
      updated_at: 2025-12-01T16:24:39.366956Z
      amount: 500
      currency: GBP
      outstanding_amount: 500
      settlement_currency: EUR
      capture_mode: manual
      authorisation_type: final
      description: Example order description
      checkout_url: https://checkout.revolut.com/payment-link/245e63f3-1e44-40db-bcd4-4448263d3fa2
      redirect_url: https://www.example.com/redirect
      cancel_authorised_after: PT30M
      industry_data:
        airline:
          type: airline
          booking_id: unique-booking-id-12345
          fulfillment_date: 2025-12-10T14:00:00.069624Z
          ticket_type: flexible
          crs_code: DATS
          ticket_change_indicator: new
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
            - first_name: John
              last_name: Doe
          journey_legs:
            - sequence: 1
              departure_airport_code: FRA
              arrival_airport_code: LHR
              flight_number: "670"
              fare_base_code: J
              travel_date: 2025-12-10T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 2
              departure_airport_code: LHR
              arrival_airport_code: DUB
              flight_number: "678"
              fare_base_code: J
              travel_date: 2025-12-10T15:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 3
              departure_airport_code: DUB
              arrival_airport_code: LHR
              flight_number: "679"
              fare_base_code: F
              travel_date: 2025-12-15T10:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
            - sequence: 4
              departure_airport_code: LHR
              arrival_airport_code: FRA
              flight_number: "671"
              fare_base_code: F
              travel_date: 2025-12-15T14:00:00.069624Z
              airline_name: AerLingus
              airline_code: EI
          booking_url: https://example.com/bookings/1234
      payments:
        - id: 6516f315-f713-a5fd-8299-f28820937409
          state: failed
          created_at: 2025-12-01T15:53:57.268142Z
          updated_at: 2025-12-01T16:24:39.374460Z
          amount: 500
          currency: GBP
          settled_amount: 576
          settled_currency: EUR
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
            network_transaction_id: "1234567890123456"
            card_brand: mastercard
            funding: credit
            card_country_code: MT
            card_bin: "542071"
            card_last_four: "0016"
            card_expiry: 12/28
            cardholder_name: Example Holder
            checks:
              three_ds:
                state: verified
                version: 2
              cvv_verification: match
      enforce_challenge: forced
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+441234567890"
        full_name: Example Customer
      merchant_order_data:
        url: https://www.airline.com/ticketnumber-12345
        reference: example_airline_reference
  47f3fd1:
    summary: Example cancelled order response with additional crypto transaction data
    value:
      id: 6516edb9-74af-ae47-829b-1475e807a8d7
      token: 1e619c26-d954-4d45-94ab-aba1e407fcee
      type: payment
      state: cancelled
      created_at: 2025-12-01T15:31:05.746826Z
      updated_at: 2025-12-01T15:45:12.352147Z
      amount: 26100
      currency: EUR
      outstanding_amount: 26100
      settlement_currency: EUR
      capture_mode: manual
      authorisation_type: final
      description: Customer wants to buy 0.01 BTC
      checkout_url: https://checkout.revolut.com/payment-link/1e619c26-d954-4d45-94ab-aba1e407fcee
      redirect_url: https://www.example.com/redirect
      industry_data:
        crypto:
          type: crypto
          transactions:
            - id: 7b2a8ed4-5889-4c0c-a8cc-299aff1c881b
              status: cancelled
              recipient_wallet_id: 64a6f159-0a60-a446-880e-e449a1f62f7c
          seller:
            id: a13638ab-3e90-4b05-9f69-23abc655775b
            name: Ramp Provider Company Name
            website: https://example.com
            phone: "123456789"
            mcc: "6051"
            address:
              street_line_1: 456 Crypto Ave
              city: New York
              postcode: "10001"
              country_code: US
      enforce_challenge: automatic
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+44123456789"
        full_name: Example Customer
      merchant_order_data:
        url: https://www.example.com/cryptotransactionnumber-12345
        reference: example_crypto_reference
  0ba50e0:
    summary: Example cancelled order response with additional marketplace data
    value:
      id: 670920dc-d343-abf8-963a-68ae1bc8ae58
      token: 41aabe45-b444-45e6-8363-f0433452e138
      type: payment
      state: cancelled
      created_at: 2025-12-01T12:58:04.826974Z
      updated_at: 2025-12-01T13:15:22.145821Z
      amount: 10000
      currency: EUR
      outstanding_amount: 10000
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/41aabe45-b444-45e6-8363-f0433452e138
      industry_data:
        marketplace:
          type: marketplace
          seller:
            id: 123-45-67
            name: Example Seller
            address:
              street_line_1: 1 Canada Square
              street_line_2: Revolut LTD, Level 39
              region: Greater London
              city: London
              country_code: GB
              country_subdivision_code: GB-LND
              postcode: E14 4HD
            website: https://example.com/123-45-67
            phone: "+441234567890"
      enforce_challenge: automatic
  24e69d4:
    summary: Example cancelled order response with additional event data
    value:
      id: 67bf20c4-59a5-a7a9-81ad-052fda5f80eb
      token: 8737a497-9bae-4647-90bf-1abe2fd9162a
      type: payment
      state: cancelled
      created_at: 2025-12-01T14:10:12.804901Z
      updated_at: 2025-12-01T14:15:33.625184Z
      amount: 100
      currency: GBP
      outstanding_amount: 100
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/8737a497-9bae-4647-90bf-1abe2fd9162a
      industry_data:
        event:
          type: event
          booking_id: example_booking_123
          events:
            - start_date: 2025-12-20T14:00:00Z
              end_date: 2025-12-20T17:00:00Z
              supplier: Example Supplier
              supplier_payment_date: 2025-12-19T14:00:15Z
              name: Example Event
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              category: exhibition
              market: primary
              tickets:
                - id: example_ticket_1
                  transferable: false
                  refundability: partially_refundable
                - id: example_ticket_2
                  transferable: true
                  refundability: non_refundable
                - id: example_ticket_3
                  transferable: false
                  refundability: refundable
      enforce_challenge: automatic
  1b600a0:
    summary: Example cancelled order response with additional lodging data
    value:
      id: 67c70d42-1545-a73d-a4a5-35b7ac49e1da
      token: 9effe2b6-8907-4954-9e9b-696f763f7e08
      type: payment
      state: cancelled
      created_at: 2025-12-01T14:25:06.099782Z
      updated_at: 2025-12-01T14:35:18.254973Z
      amount: 100
      currency: GBP
      outstanding_amount: 100
      capture_mode: automatic
      authorisation_type: final
      checkout_url: https://checkout.revolut.com/payment-link/9effe2b6-8907-4954-9e9b-696f763f7e08
      industry_data:
        lodging:
          type: lodging
          booking_id: example_booking_123
          lodgings:
            - check_in_date: 2025-12-05T15:00:00Z
              check_out_date: 2025-12-10T11:00:00Z
              category: bed_and_breakfast
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: partially_refundable
              location:
                street_line_1: Example Street 123
                street_line_2: II/123
                region: London
                city: London
                country_code: GB
                postcode: "123456"
              guests:
                - first_name: First
                  last_name: Guest
                - first_name: Second
                  last_name: Guest
      enforce_challenge: automatic
  72a7463:
    summary: Example cancelled order response with multiple industry types
    value:
      id: 6516ed0c-098f-aa19-80e5-9d92f52b35e0
      token: 061f2c63-e36b-421e-9ece-5adfcd580886
      type: payment
      state: cancelled
      created_at: 2025-12-01T15:28:12.114992Z
      updated_at: 2025-12-01T15:45:35.842761Z
      amount: 1500
      currency: GBP
      outstanding_amount: 1500
      capture_mode: manual
      authorisation_type: final
      description: Flight + Hotel Package
      checkout_url: https://checkout.revolut.com/payment-link/061f2c63-e36b-421e-9ece-5adfcd580886
      industry_data:
        airline:
          type: airline
          booking_id: flight-booking-456
          fulfillment_date: 2026-01-20T18:00:00Z
          ticket_type: flexible
          refundability: refundable
          passengers:
            - first_name: Example
              last_name: Customer
          journey_legs:
            - sequence: 1
              departure_airport_code: LHR
              arrival_airport_code: BCN
              flight_number: "123"
              travel_date: 2026-01-15T08:00:00Z
              airline_name: Example Airlines
              airline_code: EX
            - sequence: 2
              departure_airport_code: BCN
              arrival_airport_code: LHR
              flight_number: "456"
              travel_date: 2026-01-20T16:00:00Z
              airline_name: Example Airlines
              airline_code: EX
          booking_url: https://example.com/bookings/flight-456
        lodging:
          type: lodging
          booking_id: hotel-booking-789
          lodgings:
            - check_in_date: 2026-01-15T15:00:00Z
              check_out_date: 2026-01-20T11:00:00Z
              category: hotel
              supplier:
                id: example_supplier_123
                name: Example Supplier
                payment_date: 2025-01-03T14:00:15Z
              booking_type: flexible
              refundability: refundable
              location:
                street_line_1: 123 Barcelona Street
                city: Barcelona
                country_code: ES
                postcode: "08001"
              guests:
                - first_name: Example
                  last_name: Customer
      enforce_challenge: automatic
      customer:
        id: db186257-3031-4726-98ea-f2260ea115f0
        email: example@example.com
        phone: "+441234567890"
        full_name: Example Customer
  382eec3:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Cancel an order
      operationId: cancelOrder
      description: >-
        Cancel an existing uncaptured order.


        You can only cancel an order that is in one of the following states:

          | Order state | Description |
          | ----------- | ----------- |
          | `pending` | The order does not have any successful payment. |
          | `authorised` | The `capture_mode` of an order is set to `manual` and the customer has made a successful payment. |

        :::info

        For more information about the order lifecycle, see: [Order and payment
        lifecycle](/docs/guides/merchant/reference/order-lifecycle).

        :::
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                example_order_min:
                  $ref: "#/x-ext/a354217"
                example_order_additional:
                  $ref: "#/x-ext/2f919cb"
                example_order_line_items:
                  $ref: "#/x-ext/6ceabeb"
                example_order_shipping:
                  $ref: "#/x-ext/65d2c53"
                example_order_airline:
                  $ref: "#/x-ext/b1bc0d5"
                example_order_crypto:
                  $ref: "#/x-ext/47f3fd1"
                example_order_marketplace:
                  $ref: "#/x-ext/0ba50e0"
                example_order_event:
                  $ref: "#/x-ext/24e69d4"
                example_order_lodging:
                  $ref: "#/x-ext/1b600a0"
                example_order_multi_industry:
                  $ref: "#/x-ext/72a7463"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                example-1:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order with id abfa5bbd-a20c-4a0e-be66-30e733454518 was not found
                    timestamp: 1721050063886
      security:
        - Api-Key: []
      tags:
        - Orders
  c0cdbbb:
    name: Idempotency-Key
    in: header
    schema:
      type: string
    required: false
    description: >-
      The `Idempotency-Key` ensures that requests are processed only once,
      preventing multiple executions of the same operation due to retries or
      duplicate requests.


      This header is optional and can accept any unique string value the
      merchant uses.


      A recommended practice is to use a unique identifier from your system
      (such as the entity's ID or a request UUID) as the idempotency key. This
      facilitates tracking and managing requests effectively.
  577a81b:
    summary: Refund order with minimal required parameters
    value:
      amount: 100
      currency: GBP
  c37b2bb:
    summary: Refund order with additional parameters
    value:
      amount: 100
      currency: GBP
      description: Example refund description
      merchant_order_data:
        reference: example_order_reference_123456
      metadata:
        example_metadata_1: Example metadata value 1
        example_metadata_2: Example metadata value 2
  a249556:
    summary: Refund order response with minimal required parameters
    value:
      id: 6852e9a6-5cf0-ac65-8182-6a9c251011ce
      type: refund
      state: processing
      created_at: 2025-06-18T16:30:30.792962Z
      updated_at: 2025-06-18T16:30:30.954966Z
      amount: 100
      currency: GBP
      outstanding_amount: 100
      capture_mode: automatic
      authorisation_type: final
      payments:
        - id: 6852e9a6-ca77-a25d-b0be-83191db96e68
          state: refund_validated
          created_at: 2025-06-18T16:30:30.821411Z
          updated_at: 2025-06-18T16:30:31.391153Z
          amount: 100
          currency: GBP
          settled_amount: -100
          settled_currency: GBP
          billing_address:
            country_code: GB
            postcode: E14 4HD
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: card
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
            network_transaction_id: "1234567890123456"
            card_brand: visa
            funding: credit
            card_country_code: GB
            card_bin: "123456"
            card_last_four: "1234"
            card_expiry: 12/33
            cardholder_name: Example Holder
      enforce_challenge: automatic
      related_order_id: 6852e963-d6a9-a5a4-9609-50b3addc5425
  9d28e53:
    summary: Refund order response with additional parameters
    value:
      id: 6852dd1f-32e1-a7ca-81c5-66e0dbc85122
      type: refund
      state: processing
      created_at: 2025-06-18T15:37:03.410996Z
      updated_at: 2025-06-18T15:37:07.691537Z
      amount: 100
      currency: GBP
      outstanding_amount: 0
      capture_mode: automatic
      authorisation_type: final
      description: Example refund description
      metadata:
        example_metadata_1: Example metadata value 1
        example_metadata_2: Example metadata value 2
      payments:
        - id: 6852dd1f-25df-a855-9481-f5405a03da67
          state: refund_validated
          created_at: 2025-06-18T15:37:03.557842Z
          updated_at: 2025-06-18T15:37:07.794313Z
          amount: 100
          currency: GBP
          settled_amount: -100
          settled_currency: GBP
          billing_address:
            street_line_1: 123 Example Street
            street_line_2: Example City 123456
            city: SentinelFraudLow
            country_code: GB
            postcode: AB1 C23
          risk_level: low
          fees: []
          payer:
            email: example.payer@example.com
            phone: "+447911123456"
          payment_method:
            type: revolut_pay_account
            fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
      enforce_challenge: automatic
      related_order_id: 6852dc49-b522-a7a2-89e0-09da07982e90
      customer:
        id: 03e12eee-ea3c-4282-bb61-221517c47882
        email: example.customer@example.com
        phone: "+441234567890"
        full_name: Example Customer
        date_of_birth: 1990-01-01
      merchant_order_data:
        reference: example_order_reference_123456
  3c1fa9d:
    name: Revolut-Api-Version
    in: header
    schema:
      type: string
      format: date
      enum:
        - 2024-09-01
        - 2025-10-16
        - 2025-12-04
        - 2026-03-12
        - 2026-04-20
      examples:
        - 2026-04-20
    required: true
    description: >-
      The version of the Merchant API, specified in `YYYY-MM-DD` format.


      This endpoint is available from version `2024-09-01`. If a version earlier
      than `2024-09-01` is provided, the endpoint returns a `404` response.


      If not specified, you will receive an error.



      :::info

      For more information about API versioning, see: [API
      versions](/docs/guides/merchant/reference/versioning/api-versions).

      :::
    x-config-always-visible-in-example: true
  0997c5b:
    name: page_token
    in: query
    schema:
      type: string
    description: >-
      Token for retrieving the next page of results. Used for **pagination**.


      To paginate through results:

        1. Make an initial request with the desired `limit`.
        1. The response will include a `next_page_token` if more results are available.
        1. Use that token in the `page_token` parameter of your next request.
        1. Repeat until `next_page_token` is not present.

      :::note

      When using `page_token`, you must include all query parameters from the
      initial request (such as `from`, `to`, or other filter parameters) to
      maintain consistent filtering across pages.

      :::
    required: false
  b1009bf:
    summary: Create a customer
    value:
      full_name: Example Customer
      email: example.customer@example.com
      phone: "+441234567890"
      date_of_birth: 1990-01-01
  cae70d3:
    summary: Customer
    value:
      id: 6c7c97a8-cfc1-4cf3-8b38-26a74fdf1fae
      full_name: Example Customer
      email: example.customer@example.com
      phone: "+441234567890"
      created_at: 2020-06-24T12:03:39.979397Z
      updated_at: 2020-06-24T12:03:39.979397Z
  f91d9e1:
    summary: List of customers
    value:
      next_page_token: 9e5d2caa-bb60-4b5b-b7cf-6345bbdff67e
      customers:
        - id: 9dfb8491-bfb0-4420-ad63-0fa7bdd3dffb
          full_name: First Customer
          email: first.customer@example.com
          created_at: 2020-06-24T12:12:56.596703Z
          updated_at: 2020-06-24T12:12:56.737082Z
        - id: 6c7c97a8-cfc1-4cf3-8b38-26a74fdf1fae
          full_name: Second Customer
          email: second.customer@example.com
          phone: "+441234567890"
          created_at: 2020-06-24T12:03:39.979397Z
          updated_at: 2020-06-25T10:03:39.134417Z
  11ca5af:
    type: object
    properties:
      id:
        $ref: "#/x-ext/a001704"
      order_id:
        $ref: "#/x-ext/8ada47f"
      payment_method:
        type: object
        description: The payment method used to pay for the order.
        discriminator:
          propertyName: type
          mapping:
            revolut_pay: ./Revolut-Pay.yaml
            card: ./Card-For-Payment-Details.yaml
            sepa_direct_debit: ./Sepa-Direct-Debit.yaml
        oneOf:
          - $ref: "#/x-ext/cc64bb8"
          - $ref: "#/x-ext/c7c0e23"
          - $ref: "#/x-ext/71cc49f"
      token:
        $ref: "#/x-ext/d21286a"
      amount:
        $ref: "#/x-ext/f26cba6"
      currency:
        $ref: "#/x-ext/1b2472a"
      state:
        $ref: "#/x-ext/9ebf295"
      decline_reason:
        $ref: "#/x-ext/67d79e0"
      authentication_challenge:
        $ref: "#/x-ext/faf3b7e"
    required:
      - id
      - order_id
      - payment_method
  5cb8929:
    name: customer_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the `Customer` object.
  23d9ec0:
    title: Customer
    type: object
    description: A customer object.
    properties:
      id:
        $ref: "#/x-ext/fbf1277"
      full_name:
        $ref: "#/x-ext/0b50233"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      created_at:
        type: string
        format: date-time
        description: The date and time the customer was created.
      updated_at:
        type: string
        format: date-time
        description: The date and time the customer was last updated.
      payment_methods:
        type: array
        description: >-
          Saved payment methods associated with this customer. Each entry
          represents a

          payment method authorised for future charges. Two types are supported:
          `card`

          (with full card details) and `revolut_pay` (covers both card-backed
          and

          account-to-account Revolut Pay variants). Use the `type` field on each
          item

          to identify the variant.
        items:
          $ref: "#/x-ext/d9d3db0"
    required:
      - id
      - created_at
      - updated_at
      - email
      - payment_methods
  d93a490:
    summary: Update a customer
    value:
      email: updated.customer@example.com
  aeb9711:
    summary: Customer
    value:
      id: 6c7c97a8-cfc1-4cf3-8b38-26a74fdf1fae
      full_name: Example Customer
      email: example.customer@example.com
      phone: "+441234567890"
      created_at: 2020-06-24T12:03:39.979397Z
      updated_at: 2020-06-25T10:03:39.134417Z
      payment_methods:
        - id: 648334a8-9546-a983-a81a-efc6d5bdd0be
          type: revolut_pay
          saved_for: merchant
          created_at: 2023-06-09T14:18:16.577888Z
        - id: edef3ba4-60a0-4df3-8f12-e5fc858c2420
          type: card
          saved_for: customer
          created_at: 2023-03-24T14:15:22Z
          bin: "459765"
          last_four: "6578"
          expiry_month: 2
          expiry_year: 2025
          cardholder_name: Example Customer
          brand: visa
          funding: debit
          issuer: EXAMPLE ISSUER
          issuer_country: GB
          billing_address:
            street_line_1: 7 Westferry Circus
            street_line_2: Columbus Building
            postcode: E144HD
            city: London
            region: Greater London
            country_code: GB
        - id: 6a0fe961-a961-a8b6-ad17-ab2779165a82
          type: sepa_direct_debit
          saved_for: merchant
          created_at: 2026-05-22T05:28:01.887482Z
          debtor_iban_last_four: "3273"
          debtor_name: John Doe
          mandate_reference: 69F1CB61BD99A32C8E20D7FB9E21E146
          billing_address:
            street_line_1: Bank of England
            street_line_2: Threadneedle St
            postcode: EC2R 8AH
            city: London
            region: Greater London
            country_code: GB
  534eeae:
    name: only_merchant
    in: query
    schema:
      type: boolean
    description: |-
      If `true`, returns only the saved payment methods that can be used for
      merchant-initiated transactions (MIT).
    required: false
  a125af9:
    summary: List of payment methods
    value:
      payment_methods:
        - id: 648334a8-9546-a983-a81a-efc6d5bdd0be
          type: revolut_pay
          saved_for: merchant
          created_at: 2023-06-09T14:18:16.577888Z
        - id: edef3ba4-60a0-4df3-8f12-e5fc858c2420
          type: card
          saved_for: customer
          created_at: 2023-03-24T14:15:22Z
          bin: "459678"
          last_four: "6896"
          expiry_month: 3
          expiry_year: 2025
          cardholder_name: Example Customer
          brand: visa
          funding: debit
          issuer: EXAMPLE ISSUER
          issuer_country: GB
          billing_address:
            street_line_1: "7"
            street_line_2: Westferry Circus
            postcode: E144HD
            city: London
            region: Greater London
            country_code: GB
        - id: a04406c4-05be-498b-8207-cc1e02a9b3ca
          type: card
          saved_for: merchant
          created_at: 2023-03-24T14:15:22Z
          bin: "459885"
          last_four: "7653"
          expiry_month: 12
          expiry_year: 2026
          cardholder_name: Example Holder
          brand: mastercard
          funding: credit
          issuer: EXAMPLE ISSUER
          issuer_country: GB
          billing_address:
            street_line_1: Revolut
            street_line_2: 1 Canada Square
            postcode: EC2V 6DN
            city: London
            region: Greater London
            country_code: GB
        - id: 6a0fe961-a961-a8b6-ad17-ab2779165a82
          type: sepa_direct_debit
          saved_for: merchant
          created_at: 2026-05-22T05:28:01.887482Z
          debtor_iban_last_four: "3273"
          debtor_name: John Doe
          mandate_reference: 69F1CB61BD99A32C8E20D7FB9E21E146
          billing_address:
            street_line_1: Bank of England
            street_line_2: Threadneedle St
            postcode: EC2R 8AH
            city: London
            region: Greater London
            country_code: GB
  afb87dc:
    name: payment_method_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the payment method.
  724b58d:
    title: Payment method update
    type: object
    description: Fields to update on a saved payment method.
    properties:
      saved_for:
        type: string
        enum:
          - customer
        description: >-
          Update the value of `saved_for` from `merchant` to `customer`.


          Once updated, this payment method can no longer be used for
          merchant-initiated transactions (MIT). It can only be used when the
          customer is present on the checkout page.


          | Value | Description |

          | ----- | ----------- |

          | `customer` | Restrict this payment method to customer-initiated
          transactions only. |
  d9d3db0:
    title: Payment method
    description: >-
      A saved payment method on a customer profile.


      Use the `type` field to determine the specific payment method variant.


      :::note

      This schema represents a stored credential available for future charges
      and supports three types: `card`, `revolut_pay`, and `sepa_direct_debit`.


      It differs from the `payment_method` object on a Payment, which is a
      transactional snapshot of how a specific charge was executed and includes
      additional detail such as wallet wrappers (`apple_pay`, `google_pay`) and
      Revolut Pay funding source (`revolut_pay_card` vs `revolut_pay_account`).

      :::
    discriminator:
      propertyName: type
      mapping:
        card: ./Card-v2.yaml
        revolut_pay: ./Revolut-Pay-v2.yaml
        sepa_direct_debit: ./Sepa-Direct-Debit-v2.yaml
    oneOf:
      - $ref: "#/x-ext/6c1e107"
      - $ref: "#/x-ext/e94efe3"
      - $ref: "#/x-ext/e43fa2c"
  fb597e6:
    type: object
    required:
      - payment_methods
    properties:
      payment_methods:
        type: array
        description: >-
          Saved payment methods associated with this customer. Each entry
          represents a

          payment method authorised for future charges. Two types are supported:
          `card`

          (with full card details) and `revolut_pay` (covers both card-backed
          and

          account-to-account Revolut Pay variants). Use the `type` field on each
          item

          to identify the variant.
        items:
          $ref: "#/x-ext/d9d3db0"
  62c310e:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
      - $ref: "#/x-ext/5cb8929"
    get:
      summary: Retrieve payment method list of a customer
      operationId: retrievePaymentMethodList
      description: >-
        Retrieve all the saved payment methods for a specific customer.

        This can be useful in the following example cases:


        - To show what payment information is stored for the customer.

        - To try a different payment method if the first payment method fails
        when a recurring transaction occurs.
      parameters:
        - $ref: "#/x-ext/534eeae"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/fb597e6"
              examples:
                list_of_payment_methods:
                  $ref: "#/x-ext/a125af9"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
  eea6040:
    summary: Update a payment method
    value:
      saved_for: customer
  4f8dfb5:
    retrieved_card:
      summary: Retrieved card payment method
      value:
        id: edef3ba4-60a0-4df3-8f12-e5fc858c2420
        type: card
        saved_for: customer
        created_at: 2023-03-24T14:15:22Z
        bin: "459678"
        last_four: "6896"
        expiry_month: 3
        expiry_year: 2025
        cardholder_name: Example Customer
        brand: visa
        funding: debit
        issuer: EXAMPLE ISSUER
        issuer_country: GB
        billing_address:
          street_line_1: "7"
          street_line_2: Westferry Circus
          postcode: E144HD
          city: London
          region: Greater London
          country_code: GB
    retrieved_revolut_pay:
      summary: Retrieved Revolut Pay payment method
      value:
        id: 648334a8-9546-a983-a81a-efc6d5bdd0be
        type: revolut_pay
        saved_for: merchant
        created_at: 2023-06-09T14:18:16.577888Z
    retrieved_sepa_direct_debit:
      summary: Retrieved SEPA Direct Debit payment method
      value:
        id: 6a0fe961-a961-a8b6-ad17-ab2779165a82
        type: sepa_direct_debit
        saved_for: merchant
        created_at: 2026-05-22T05:28:01.887482Z
        debtor_iban_last_four: "3273"
        debtor_name: John Doe
        mandate_reference: 69F1CB61BD99A32C8E20D7FB9E21E146
        billing_address:
          street_line_1: Bank of England
          street_line_2: Threadneedle St
          postcode: EC2R 8AH
          city: London
          region: Greater London
          country_code: GB
  7cfb07b:
    name: from_created_date
    in: query
    required: false
    schema:
      type: string
      format: date-time
    description: >-
      Retrieve records with a `created_at` value ≥ `from_created_date`.


      Use the [ISO 8601 date-time
      format](https://en.wikipedia.org/wiki/ISO_8601):
      `yyyy-MM-ddTHH:mm:ss[.SSSSSS]Z`.
  024cb7e:
    name: to_created_date
    in: query
    required: false
    schema:
      type: string
      format: date-time
    description: >-
      Retrieve records with a `created_at` value ≤ `to_created_date`.


      Use the [ISO 8601 date-time
      format](https://en.wikipedia.org/wiki/ISO_8601):
      `yyyy-MM-ddTHH:mm:ss[.SSSSSS]Z`.
  4331def:
    name: state
    in: query
    required: false
    schema:
      type: array
      items:
        type: string
        enum:
          - needs_response
          - under_review
          - won
          - lost
    style: form
    explode: true
    description: >-
      Filter disputes by state. Repeat the parameter to filter by multiple
      states.


      | Value | Description |

      |-------|-------------|

      | `needs_response` | Dispute requires your response |

      | `under_review` | Dispute is being reviewed |

      | `won` | Dispute resolved in your favour |

      | `lost` | Dispute resolved against you |


      The parameter is case sensitive.
  a7c4798:
    name: payment_id
    in: query
    required: false
    schema:
      type: array
      items:
        type: string
        format: uuid
    style: form
    explode: true
    description: >-
      Filter disputes by the ID of the associated payment. Repeat the parameter
      to filter by multiple payment IDs.


      ```

      https://merchant.revolut.com/api/disputes?payment_id=123&payment_id=456

      ```
  f864dc7:
    summary: List of disputes
    value:
      - id: ab934829-e4ba-4e7f-8a21-365cad85c763
        state: under_review
        substate: arbitration
        created_at: 2024-06-13T12:06:18.732706Z
        updated_at: 2024-09-12T22:27:10.005680Z
        response_due_date: 2024-10-12T22:27:10.005625Z
        reason_code: "50"
        reason_description: Fraud
        amount: 50
        currency: EUR
        payment:
          id: 6666f6c7-3898-a094-9c83-dc0152e0185c
          order_id: 6666f685-46a7-a7b9-9860-a28a4f3495a4
          created_at: 2024-06-10T12:51:19.960490Z
          amount: 50
          currency: EUR
          payment_method:
            type: revolut_pay_account
      - id: 340b85dc-da99-4c5f-9d47-37a45d52a455
        state: lost
        substate: lost_expired
        created_at: 2024-09-11T21:20:05.659978Z
        updated_at: 2024-09-12T22:35:31.721921Z
        response_due_date: 2024-09-22T22:35:31.721860Z
        reason_code: "12.4"
        reason_description: Incorrect Account Number
        amount: 40
        currency: EUR
        payment:
          id: 66e1fc66-7606-a7fb-b2e8-b48fb637783a
          order_id: 66e1fc4d-5cbe-a692-80aa-1cb912291d55
          created_at: 2024-09-11T20:24:06.271746Z
          amount: 40
          currency: EUR
          payment_method:
            type: card
            card_brand: visa
            card_last_four: "1234"
      - id: e9b5472b-7308-4aea-86a0-d4427bc04c24
        state: lost
        substate: lost_pre_arbitration
        created_at: 2026-05-22T09:00:00Z
        updated_at: 2026-05-22T10:15:00Z
        response_due_date: 2030-12-15T00:00:00Z
        reason_code: OTHER
        reason_description: merchant_dispute
        amount: 91700
        currency: GBP
        payment:
          id: 6a0f2bc4-2137-a1ad-9eb6-b34cf4ca6597
          order_id: 2bcaf93a-aa87-4d3d-b5c6-62e06051cff2
          created_at: 2026-05-21T15:59:00.451602Z
          amount: 1000
          currency: GBP
          payment_method:
            type: sepa_direct_debit
            debtor_iban_last_four: "3273"
            debtor_name: John Doe
            mandate_reference: 69F1CB61BD99A32C8E20D7FB9E21E146
  eb2136b:
    name: dispute_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the `Dispute` object.
  b446e94:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/eb2136b"
    post:
      summary: Accept a dispute
      operationId: acceptDispute
      servers:
        - description: Production server (uses live data)
          url: https://merchant.revolut.com
      description: |-
        Marks a specific dispute as accepted.

        After accepting a dispute, you cannot challenge it.

        :::note
        This endpoint is only available in **Production** environment.
        :::
      responses:
        "204":
          description: Dispute accepted successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Missing Revolut-Api-Version header
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested operation is forbidden
                    timestamp: 1721050063886
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested resource is not found
                    timestamp: 1721050063886
        "422":
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Disputes
  81cce34:
    type: object
    properties:
      id:
        type: string
        format: uuid
        description: Unique identifier of the dispute.
      state:
        type: string
        enum:
          - needs_response
          - under_review
          - won
          - lost
        description: >-
          Represents the state of the dispute.


          It indicates either the final outcome of the dispute or if further
          action is required.


          | Parameter value | Description |

          | --------------- | ----------- |

          | `needs_response` | Indicates that the dispute requires a response or
          action from the merchant. |

          | `under_review` | Indicates that the dispute is currently under
          review, and the outcome is pending. |

          | `won` | Indicates that the dispute has been resolved in favor of the
          merchant. |

          | `lost` | Indicates that the dispute has been resolved against the
          merchant. |
      substate:
        type: string
        enum:
          - arbitration
          - lost_accepted
          - lost_arbitration
          - lost_expired
          - lost_pre_arbitration
          - lost_representment
          - new
          - pre_arbitration
          - representment
          - won_arbitration
          - won_pre_arbitration
          - won_representment
          - won_reversal
        description: >-
          Provides additional granularity about the dispute state.


          It details the progression of the dispute process, showing the current
          stage or phase.


          | Parameter value | Description |

          | --------------- | ----------- |

          | `new` | The dispute has been recently created and is in the initial
          phase, awaiting further processing. |

          | `lost_expired` | The dispute has been lost due to expiration, likely
          because the merchant did not respond within the required timeframe. |

          | `pre_arbitration` | The dispute is in the pre-arbitration phase,
          where preliminary evidence is being gathered before a formal
          arbitration process. |

          | `won_pre_arbitration`| The merchant secured a win during the
          pre-arbitration phase based on the evidence provided. |

          | `lost_pre_arbitration` | The dispute was lost during the
          pre-arbitration phase, indicating that the preliminary review did not
          favor the merchant. |

          | `lost_accepted` | The loss has been accepted as final, implying that
          no further contestation is likely or needed. |

          | `arbitration` | The dispute has escalated to the arbitration stage,
          where a neutral third party is reviewing the evidence. |

          | `won_arbitration` | The merchant won the dispute during the
          arbitration process. |

          | `lost_arbitration` | The merchant lost the dispute during the
          arbitration process. |
      created_at:
        type: string
        format: date-time
        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
          when the dispute was created."
      updated_at:
        type: string
        format: date-time
        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
          when the dispute was last updated."
      response_due_date:
        type: string
        format: date-time
        description: >-
          [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time until
          when the merchant needs to respond to the dispute.


          The response time by default is 15 days after the dispute is created.
          If no response is provided by this date, the dispute transitions to:
            - `state: lost`
            - `substate: lost_expired` 
      reason_code:
        type: string
        description: |-
          Dispute reason code from the payment scheme, following standard formats defined by individual providers.

          :::info
          For complete, official lists of dispute codes, see:  
          - **Visa**: [Visa Core Rules and Visa Product and Service Rules](https://corporate.visa.com/content/dam/VCOM/download/about-visa/visa-rules-public.pdf) 
          - **Mastercard**: [Chargeback Guide - Merchant Edition](https://www.mastercard.com/content/dam/public/mastercardcom/na/global-site/documents/chargeback-guide.pdf)
          - **American Express**: [Chargeback Codes](https://www.americanexpress.com/content/dam/amex/au/en/merchant/static/chargebackcodeguide.pdf)
          :::
      reason_description:
        type: string
        description: Provides a human-readable explanation for the dispute reason codes.
      amount:
        type: integer
        description: >-
          Disputed amount expressed in minor currency units, according to the
          [ISO 4217 standard](https://en.wikipedia.org/wiki/ISO_4217). For
          example, `7034` in `EUR` corresponds to €70.34.


          :::info

          Conversion 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).

          :::
      currency:
        $ref: "#/x-ext/1b2472a"
      payment:
        $ref: "#/x-ext/d9f57d1"
  826461a:
    type: array
    description: An array containing a list of disputes.
    items:
      $ref: "#/x-ext/81cce34"
  b1b877e:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    get:
      summary: Retrieve a dispute list
      operationId: retrieveDisputeList
      servers:
        - description: Production server (uses live data)
          url: https://merchant.revolut.com
      description: >-
        Retrieve a list of disputes associated with your merchant account. 


        :::note

        This endpoint is only available in **Production** environment.

        :::


        You can also use the query parameters for:
          
          | Filtering | Pagination |
          | --------- | ---------- |
          | Filter the diputes that you want to retrieve, for example, only retrieve the disputes that have a specific state. <br/><br/>Parameters used for filtering:<br/><ul><li>`from_created_date`</li><li>`to_created_date`</li><li>`payment_id`</li><li>`state`</li></ul> | View the disputes without loading all of them at once, for example, return a specified number of disputes per page. <br/><br/>Parameters used for pagination: <br/><ul><li>`limit`</li><li>`from_created_date` or `to_created_date`</li></ul> |
      parameters:
        - $ref: "#/x-ext/4349f60"
        - $ref: "#/x-ext/7cfb07b"
        - $ref: "#/x-ext/024cb7e"
        - $ref: "#/x-ext/4331def"
        - $ref: "#/x-ext/a7c4798"
      responses:
        "200":
          description: List of disputes retrieved
          content:
            application/json:
              schema:
                $ref: "#/x-ext/826461a"
              examples:
                dispute_list:
                  $ref: "#/x-ext/f864dc7"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: validation
                    message: limit must be between 1 and 500
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
      security:
        - Api-Key: []
      tags:
        - Disputes
  62ed9e2:
    summary: Dispute for a card payment
    value:
      id: fccc53e9-00e0-4847-9d54-6938e9cdd3ef
      state: lost
      substate: lost_accepted
      created_at: 2025-03-12T07:00:00.000000Z
      updated_at: 2025-03-13T10:00:00.000000Z
      response_due_date: 2025-03-15T12:00:00.000000Z
      reason_code: "50"
      reason_description: Fraud
      amount: 1500
      currency: EUR
      payment:
        id: 67810850-4c48-a25d-8765-d03d36ca6719
        order_id: 38bd1186-a276-4b14-91b4-5da886481f85
        created_at: 2025-01-02T10:00:00Z
        arn: P58PC241502Q7800000000A
        amount: 3000
        currency: EUR
        payment_method:
          type: card
          card_brand: visa
          card_last_four: "1234"
  95f25ba:
    summary: Dispute for a SEPA Direct Debit payment
    value:
      id: 7a2d8f4b-1c3e-4a56-b789-0d1e2f3a4b5c
      state: needs_response
      substate: new
      created_at: 2026-05-22T09:00:00Z
      updated_at: 2026-05-22T09:00:00Z
      response_due_date: 2026-06-05T09:00:00Z
      reason_code: OTHER
      reason_description: merchant_dispute
      amount: 10000
      currency: EUR
      payment:
        id: 6a0f2bc4-2137-a1ad-9eb6-b34cf4ca6597
        order_id: 2bcaf93a-aa87-4d3d-b5c6-62e06051cff2
        created_at: 2026-05-21T15:59:00.451602Z
        amount: 10000
        currency: EUR
        payment_method:
          type: sepa_direct_debit
          debtor_iban_last_four: "3273"
          debtor_name: John Doe
          mandate_reference: 69F1CB61BD99A32C8E20D7FB9E21E146
  f7bceb5:
    name: Content-Type
    in: header
    required: true
    schema:
      type: string
    description: The content type sent in the request.
    examples:
      default:
        value: multipart/form-data
  4422bf3:
    type: object
    properties:
      file:
        type: string
        description: >-
          The single evidence file to upload.


          The client must ensure this part has its own `Content-Type` header
          specifying the media type of the file (e.g., `application/pdf`,
          `image/png`, `image/jpeg`).


          Must be one of the allowed types: `PDF`, `PNG`, `JPEG`.
        contentMediaType: application/octet-stream
    required:
      - file
  6399cfb:
    type: object
    properties:
      id:
        type: string
        format: uuid
        description: The ID of the uploaded evidence.
        examples:
          - ad2ca3d0-67e9-4cea-b455-e39dd319113d
    required:
      - id
  53b3839:
    summary: Uploaded evidence
    value:
      id: 121ac27c-b00a-44d0-9120-efeeec7c912d
  f5e53f8:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/f7bceb5"
      - $ref: "#/x-ext/eb2136b"
    post:
      summary: Upload evidence for a dispute
      operationId: uploadDisputeEvidence
      servers:
        - description: Production server (uses live data)
          url: https://merchant.revolut.com
      description: >-
        Allows uploading a single evidence file for a specific dispute. 


        Use these evidences to provide proof for claims when challenging a
        dispute.


        :::warning

        **Limitations:**
          - Maximum `100` uploaded files are allowed per dispute.
          - Maximum file size: `10MB`.
          - Allowed file types: `PDF`, `PNG`, `JPEG`.
        :::


        :::note

        This endpoint is only available in **Production** environment.

        :::
      requestBody:
        required: true
        content:
          multipart/form-data:
            encoding:
              file:
                contentType: application/pdf, image/png, image/jpeg
            schema:
              $ref: "#/x-ext/4422bf3"
      responses:
        "201":
          description: Evidence uploaded successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/6399cfb"
              examples:
                evidence_uploaded:
                  $ref: "#/x-ext/53b3839"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Missing Revolut-Api-Version header
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested operation is forbidden
                    timestamp: 1721050063886
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested resource is not found
                    timestamp: 1721050063886
        "422":
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Disputes
  d84d919:
    summary: Minimal dispute challenge with reason and evidence
    value:
      reason: refund_already_issued
      evidences:
        - 121ac27c-b00a-44d0-9120-efeeec7c912d
  88bddbd:
    summary: Dispute challenge with reason, multiple evidences, and comment
    value:
      reason: product_already_delivered
      comment: The customer received the product on 2026-05-10 as confirmed by our
        delivery records.
      evidences:
        - 121ac27c-b00a-44d0-9120-efeeec7c912d
        - 0010e98d-0653-4dbe-8a4f-70cd5e9491f2
  ca9e6a1:
    name: payment_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the `Payment` object.
  28df10f:
    summary: Payment with 3DS fingerprint challenge
    value:
      id: d4aa447c-b9ef-4a0b-86ac-59bc4e8d590e
      order_id: b2da1805-94c3-4f66-8bae-4fc927d33990
      state: authentication_challenge
      created_at: 2026-03-12T10:00:00.000000Z
      updated_at: 2026-03-12T10:00:05.000000Z
      token: 3f7a9b2c-1d4e-5f6a-7b8c-9d0e1f2a3b4c
      amount: 1000
      currency: GBP
      settled_amount: 1000
      settled_currency: GBP
      risk_level: low
      fees: []
      payment_method:
        type: card
        card_brand: visa
        funding: credit
        card_country_code: GB
        card_bin: "411111"
        card_last_four: "1111"
        card_expiry: 12/28
        cardholder_name: Example Customer
      authentication_challenge:
        type: three_ds_fingerprint
        fingerprint_html: PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KCjwvYm9keT4KPC9odG1sPg==
  2d1cb43:
    summary: Simple yearly and monthly plan
    value:
      name: Enterprise Pro Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1Y
              amount: 99900
              currency: GBP
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              amount: 9900
              currency: GBP
  1ee0f2a:
    summary: Plan with trial duration
    value:
      name: Premium Plan with 14-day Trial
      trial_duration: P14D
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              amount: 9900
              currency: GBP
  bf216c8:
    summary: Plan that ends after 12 months
    value:
      name: 12-month Limited Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              cycle_count: 12
              amount: 1000
              currency: GBP
  "3e66982":
    summary: Usage-based plan with tiered pricing
    value:
      name: API Usage Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: API Calls
                  type: usage
                  currency: GBP
                  unit: calls
                  code: api_calls
                  usage_aggregation_method: sum
                  tiers:
                    - upper_quantity_threshold: 1000
                      amount: 0
                    - upper_quantity_threshold: 10000
                      amount: 10
                    - amount: 5
  ecc203e:
    summary: Hybrid plan with flat base fee and usage-based items
    value:
      name: Professional Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: Base Subscription
                  type: flat
                  quantity: 1
                  amount: 2900
                  currency: GBP
                  unit: subscription
                - name: API Calls
                  type: usage
                  currency: GBP
                  unit: calls
                  code: api_calls
                  usage_aggregation_method: sum
                  amount: 10
                - name: Storage
                  type: usage
                  currency: GBP
                  unit: gb
                  code: storage_gb
                  usage_aggregation_method: max
                  package_size: 1
                  tiers:
                    - upper_quantity_threshold: 10
                      amount: 0
                    - upper_quantity_threshold: 100
                      amount: 50
                    - amount: 30
  c8ea6ed:
    summary: Usage-based plan with block pricing (price per 1000 units)
    value:
      name: SMS Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: SMS Messages
                  type: usage
                  currency: GBP
                  unit: messages
                  code: sms_messages
                  usage_aggregation_method: sum
                  package_size: 1000
                  amount: 500
  a43de5c:
    summary: Plan with flat and usage-based subscription items
    value:
      name: Professional Platform Plan
      variations:
        - phases:
            - ordinal: 1
              cycle_duration: P1M
              amount: 4900
              currency: GBP
              subscription_items:
                - type: flat
                  name: Platform License
                  unit: subscription
                  quantity: 1
                  amount: 4900
                  currency: GBP
                - type: usage
                  name: API Calls
                  unit: call
                  code: api_calls
                  usage_aggregation_method: sum
                  amount: 1
                  currency: GBP
  67bcd73:
    type: object
    required:
      - id
      - name
      - state
      - created_at
      - updated_at
      - variations
    properties:
      id:
        $ref: "#/x-ext/f14ed36"
      name:
        $ref: "#/x-ext/a325319"
      trial_duration:
        $ref: "#/x-ext/cab1828"
      state:
        $ref: "#/x-ext/7f8b6df"
      created_at:
        $ref: "#/x-ext/eca5f6a"
      updated_at:
        $ref: "#/x-ext/826b3a4"
      variations:
        type: array
        description: List of subscription plan variations.
        items:
          $ref: "#/x-ext/bb8fa9e"
  6efd23a:
    type: object
    required:
      - subscription_plans
    properties:
      next_page_token:
        type:
          - string
          - "null"
        description: |-
          Token for retrieving the next page of results.

          If not present, there are no more results to retrieve.
      subscription_plans:
        type: array
        description: List of subscription plans.
        items:
          $ref: "#/x-ext/67bcd73"
  f0b24c8:
    summary: Simple yearly and monthly plan
    value:
      id: f757b068-f287-43c8-8d05-9c073fecbe73
      name: Enterprise Pro Plan
      state: active
      created_at: 2026-01-26T08:59:09.433527Z
      updated_at: 2026-01-26T08:59:09.433527Z
      variations:
        - id: f4e0a171-4f4e-484b-b0a2-22085059af65
          phases:
            - id: 23319d04-4b23-4ae7-ba54-82112c752683
              ordinal: 1
              cycle_duration: P1M
              amount: 990
              currency: GBP
        - id: 7cf47b0d-3da9-496b-a4e9-fbbe43c33ee3
          phases:
            - id: feed2491-c895-4bfa-ba05-a3a088842d5c
              ordinal: 1
              cycle_duration: P1Y
              amount: 9990
              currency: GBP
  915beaa:
    summary: Plan with trial duration
    value:
      id: 750e8400-e29b-41d4-a716-446655440010
      name: Premium Plan with 14-day Trial
      trial_duration: P14D
      state: active
      created_at: 2025-06-04T21:00:00.036001Z
      updated_at: 2025-06-04T21:00:00.036001Z
      variations:
        - id: 850e8400-e29b-41d4-a716-446655440011
          phases:
            - id: 950e8400-e29b-41d4-a716-446655440012
              ordinal: 1
              cycle_duration: P1M
              amount: 9900
              currency: GBP
  ec7a584:
    summary: Plan that ends after 12 months
    value:
      id: 550e8400-e29b-41d4-a716-446655440003
      name: 12-month Limited Plan
      state: active
      created_at: 2025-06-05T21:00:00.036001Z
      updated_at: 2025-06-05T21:00:00.036001Z
      variations:
        - id: 550e8400-e29b-41d4-a716-446655440004
          phases:
            - id: 550e8400-e29b-41d4-a716-446655440005
              ordinal: 1
              cycle_duration: P1M
              cycle_count: 12
              amount: 1000
              currency: GBP
  3febf78:
    summary: Usage-based plan with tiered pricing
    value:
      id: 8d2c8872-9e8a-4b1a-827c-3f78e1234abc
      name: API Usage Plan
      state: active
      created_at: 2026-04-15T17:58:36.000Z
      updated_at: 2026-04-15T17:58:36.000Z
      variations:
        - id: a4e0a171-4f4e-484b-b0a2-22085059df99
          phases:
            - id: ceed2491-c895-4bfa-ba05-a3a088842e11
              ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: API Calls
                  type: usage
                  currency: GBP
                  unit: calls
                  code: api_calls
                  usage_aggregation_method: sum
                  tiers:
                    - upper_quantity_threshold: 1000
                      amount: 0
                    - upper_quantity_threshold: 10000
                      amount: 10
                    - amount: 5
  dc0b51f:
    summary: Hybrid plan with flat base fee and usage-based items
    value:
      id: b22198c4-724d-4e9e-b9e3-827c3f78e456
      name: Professional Plan
      state: active
      created_at: 2026-04-15T18:02:11.000Z
      updated_at: 2026-04-15T18:02:11.000Z
      variations:
        - id: d4e0a171-4f4e-484b-b0a2-22085059df77
          phases:
            - id: ffeed491-c895-4bfa-ba05-a3a088842e22
              ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: Base Subscription
                  type: flat
                  quantity: 1
                  amount: 2900
                  currency: GBP
                  unit: subscription
                - name: API Calls
                  type: usage
                  currency: GBP
                  unit: calls
                  code: api_calls
                  usage_aggregation_method: sum
                  amount: 10
                - name: Storage
                  type: usage
                  currency: GBP
                  unit: gb
                  code: storage_gb
                  usage_aggregation_method: max
                  package_size: 1
                  tiers:
                    - upper_quantity_threshold: 10
                      amount: 0
                    - upper_quantity_threshold: 100
                      amount: 50
                    - amount: 30
  ce946e6:
    summary: Usage-based plan with block pricing (price per 1000 units)
    value:
      id: e33198c4-124d-4e9e-b9e3-827c3f78e789
      name: SMS Plan
      state: active
      created_at: 2026-04-15T18:05:42.000Z
      updated_at: 2026-04-15T18:05:42.000Z
      variations:
        - id: c4e0a171-4f4e-484b-b0a2-22085059df44
          phases:
            - id: ddeed491-c895-4bfa-ba05-a3a088842e33
              ordinal: 1
              cycle_duration: P1M
              subscription_items:
                - name: SMS Messages
                  type: usage
                  currency: GBP
                  unit: messages
                  code: sms_messages
                  usage_aggregation_method: sum
                  package_size: 1000
                  amount: 500
  34858b1:
    summary: Plan with flat and usage-based subscription items
    value:
      id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
      name: Professional Platform Plan
      state: active
      created_at: 2026-01-10T09:00:00.000000Z
      updated_at: 2026-01-10T09:00:00.000000Z
      variations:
        - id: b2c3d4e5-f6a7-8901-bcde-f12345678901
          phases:
            - id: c3d4e5f6-a7b8-9012-cdef-123456789012
              ordinal: 1
              cycle_duration: P1M
              amount: 4900
              currency: GBP
              subscription_items:
                - id: d4e5f6a7-b8c9-0123-defa-234567890123
                  type: flat
                  name: Platform License
                  unit: subscription
                  quantity: 1
                  amount: 4900
                  currency: GBP
                - id: e5f6a7b8-c9d0-1234-efab-345678901234
                  type: usage
                  name: API Calls
                  unit: call
                  code: api_calls
                  usage_aggregation_method: sum
                  amount: 1
                  currency: GBP
  9f78c60:
    summary: List of subscription plans
    value:
      next_page_token: 9e5d2caa-bb60-4b5b-b7cf-6345bbdff67e
      subscription_plans:
        - id: 550e8400-e29b-41d4-a716-446655440000
          name: Premium Plan with 14-days Trial
          state: active
          trial_duration: P14D
          created_at: 2025-06-05T21:00:00.036001Z
          updated_at: 2025-06-05T21:00:00.036001Z
          variations:
            - id: 550e8400-e29b-41d4-a716-446655440001
              phases:
                - id: 550e8400-e29b-41d4-a716-446655440002
                  ordinal: 1
                  cycle_duration: P1Y
                  amount: 99900
                  currency: GBP
        - id: f757b068-f287-43c8-8d05-9c073fecbe73
          name: Enterprise Pro Plan
          state: active
          created_at: 2026-01-26T08:59:09.433527Z
          updated_at: 2026-01-26T08:59:09.433527Z
          variations:
            - id: f4e0a171-4f4e-484b-b0a2-22085059af65
              phases:
                - id: 23319d04-4b23-4ae7-ba54-82112c752683
                  ordinal: 1
                  cycle_duration: P1M
                  amount: 990
                  currency: GBP
            - id: 7cf47b0d-3da9-496b-a4e9-fbbe43c33ee3
              phases:
                - id: feed2491-c895-4bfa-ba05-a3a088842d5c
                  ordinal: 1
                  cycle_duration: P1Y
                  amount: 9990
                  currency: GBP
  4d0880a:
    name: subscription_plan_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the subscription plan.
  a551532:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/4d0880a"
    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: "#/x-ext/67bcd73"
              examples:
                simple_plan:
                  $ref: "#/x-ext/f0b24c8"
                trial_plan_with_duration:
                  $ref: "#/x-ext/915beaa"
                limited_plan:
                  $ref: "#/x-ext/ec7a584"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription plan not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  7ee7838:
    summary: Subscription with redirect URL
    value:
      plan_variation_id: 550e8400-e29b-41d4-a716-446655440000
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      setup_order_redirect_url: https://example.com/subscription/setup/complete
      external_reference: ext-ref-12345
  e1b67f4:
    summary: Subscription without redirect URL
    value:
      plan_variation_id: 550e8400-e29b-41d4-a716-446655440000
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      external_reference: ext-ref-12345
  bd0d8f6:
    summary: Subscription with trial period overriding the trial duration from plan
    value:
      plan_variation_id: 550e8400-e29b-41d4-a716-446655440000
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      payment_method_id: 6689e244-8af7-4ada-9448-a91f02d4f192
      trial_duration: P14D
      external_reference: ext-ref-12345
  40b394b:
    summary: Subscription skipping trial predefined in plan
    value:
      plan_variation_id: 550e8400-e29b-41d4-a716-446655440000
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      payment_method_id: 6689e244-8af7-4ada-9448-a91f02d4f192
      trial_duration: P0D
      external_reference: ext-ref-12345
  5815e4b:
    type: object
    required:
      - id
      - state
      - customer_id
      - plan_id
      - plan_variation_id
      - payment_method_type
      - created_at
      - updated_at
      - current_cycle_id
    properties:
      id:
        $ref: "#/x-ext/bb5e5cf"
      external_reference:
        $ref: "#/x-ext/8d556f9"
      state:
        $ref: "#/x-ext/92afcdb"
      customer_id:
        $ref: "#/x-ext/fbf1277"
      plan_id:
        $ref: "#/x-ext/f14ed36"
      plan_variation_id:
        $ref: "#/x-ext/8ee29c2"
      payment_method_type:
        $ref: "#/x-ext/34d32bc"
      payment_method_id:
        $ref: "#/x-ext/9e48916"
      created_at:
        $ref: "#/x-ext/e882e42"
      updated_at:
        $ref: "#/x-ext/a5009b7"
      start_date:
        $ref: "#/x-ext/1c92981"
      current_cycle_id:
        $ref: "#/x-ext/c147906"
      trial_duration:
        $ref: "#/x-ext/6032c49"
      trial_end_date:
        $ref: "#/x-ext/eaaea6b"
      setup_order_id:
        $ref: "#/x-ext/dd59dc7"
      scheduled_action:
        $ref: "#/x-ext/1ec7a53"
  11fb27f:
    summary: Subscription created with setup order
    value:
      id: 550e8400-e29b-41d4-a716-446655440000
      external_reference: ext-ref-12345
      state: pending
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      plan_id: 750e8400-e29b-41d4-a716-446655440002
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      payment_method_type: automatic
      created_at: 2025-06-05T21:00:00.036001Z
      updated_at: 2025-06-05T21:00:00.036001Z
      setup_order_id: a50e8400-e29b-41d4-a716-446655440005
      current_cycle_id: a31627fb-b037-4566-8d7b-f380c1f44653
  f6a4312:
    summary: Subscription created with setup order (no redirect URL)
    value:
      id: 550e8400-e29b-41d4-a716-446655440006
      external_reference: ext-ref-12345
      state: pending
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      plan_id: 750e8400-e29b-41d4-a716-446655440002
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      payment_method_type: automatic
      created_at: 2025-06-05T21:00:00.036001Z
      updated_at: 2025-06-05T21:00:00.036001Z
      setup_order_id: a50e8400-e29b-41d4-a716-446655440007
      current_cycle_id: a31627fb-b037-4566-8d7b-f380c1f44654
  99763f4:
    summary: List of subscriptions
    value:
      next_page_token: 9e5d2caa-bb60-4b5b-b7cf-6345bbdff67e
      subscriptions:
        - id: 550e8400-e29b-41d4-a716-446655440000
          external_reference: ext-ref-12345
          state: active
          customer_id: 650e8400-e29b-41d4-a716-446655440001
          plan_id: 750e8400-e29b-41d4-a716-446655440002
          plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
          payment_method_type: automatic
          payment_method_id: 6689e244-8af7-4ada-9448-a91f02d4f192
          created_at: 2025-06-05T21:00:00.036001Z
          updated_at: 2025-06-05T21:00:00.036001Z
          start_date: 2025-06-05T21:00:00.036001Z
          current_cycle_id: 950e8400-e29b-41d4-a716-446655440004
        - id: 550e8400-e29b-41d4-a716-446655440010
          state: pending
          customer_id: 650e8400-e29b-41d4-a716-446655440011
          plan_id: 750e8400-e29b-41d4-a716-446655440012
          plan_variation_id: 850e8400-e29b-41d4-a716-446655440013
          payment_method_type: automatic
          created_at: 2025-06-04T21:00:00.036001Z
          updated_at: 2025-06-04T21:00:00.036001Z
          current_cycle_id: a31627fb-b037-4566-8d7b-f380c1f44653
  11ded8f:
    name: subscription_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the subscription.
  6a0e6c8:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
    servers:
      - description: Production server (uses live data)
        url: https://merchant.revolut.com
    post:
      summary: Cancel a subscription
      operationId: cancelSubscription
      description: >-
        Cancel a subscription.


        You can cancel a subscription in any state except `cancelled` or
        `finished`. When you cancel a subscription, it will be marked as
        `cancelled` and no further billing cycles will be created. Any pending
        orders will be cancelled.
      tags:
        - Subscriptions
      responses:
        "204":
          description: Subscription cancelled successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  ddbfd78:
    summary: Update subscription
    value:
      external_reference: ext-ref-12345
  60b5674:
    summary: Active subscription
    value:
      id: 550e8400-e29b-41d4-a716-446655440000
      external_reference: ext-ref-12345
      state: active
      customer_id: 650e8400-e29b-41d4-a716-446655440001
      plan_id: 750e8400-e29b-41d4-a716-446655440002
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      payment_method_type: automatic
      payment_method_id: 6689e244-8af7-4ada-9448-a91f02d4f192
      created_at: 2025-06-05T21:00:00.036001Z
      updated_at: 2025-06-05T21:00:00.036001Z
      start_date: 2025-06-05T21:00:00.036001Z
      current_cycle_id: 950e8400-e29b-41d4-a716-446655440004
      trial_duration: P14D
      trial_end_date: 2025-06-19T21:00:00.036001Z
  89af57b:
    summary: Schedule plan change at cycle end
    value:
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      scheduled: at_cycle_end
  ea489ca:
    summary: Schedule plan change with reason
    value:
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      scheduled: at_cycle_end
      reason: customer_request
  96bc43f:
    summary: Schedule plan change to a specific phase
    value:
      plan_variation_id: 850e8400-e29b-41d4-a716-446655440003
      plan_variation_phase_id: 950e8400-e29b-41d4-a716-446655440004
      scheduled: at_cycle_end
  bcdf7e9:
    type: object
    properties:
      renewal_date:
        type: string
        format: date-time
        description: >-
          The new renewal date for the subscription, expressed as a UTC
          date-time value.


          Must be set to a date later than the current renewal date; earlier
          dates are rejected.
        examples:
          - 2026-07-01T00:00:00Z
    required:
      - renewal_date
  a565828:
    summary: Update renewal date
    value:
      renewal_date: 2026-07-01T00:00:00Z
  903a4a5:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
    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`.


        ### Use cases


        - **Payment extensions:** Granting a customer more time to pay.

        - **Service delays:** Adjusting the billing date if service delivery is
        delayed.

        - **Billing alignment:** Moving a payment date to better suit a
        customer's financial schedule.


        ### How it works


        Extending 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.


        The relationship between the cycle end and the billing execution depends
        on the plan type:


        - **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.

        - **Usage-based plans (buffer & overlap):** To allow merchants time to
        finalize usage data, the billing date is scheduled after the cycle
        `end_date`.
            - Usage continues to be aggregated until the updated `end_date`.
            - When the current cycle (Cycle 1) reaches its updated `end_date`, **Cycle 2 starts immediately** to ensure no service interruption.
            - 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.
            - 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.

        Subsequent cycles resume the original plan cadence (e.g., monthly) from
        the new date.
      tags:
        - Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/bcdf7e9"
            examples:
              simple_plan:
                $ref: "#/x-ext/a565828"
      responses:
        "204":
          description: Renewal date updated successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable entity (business rule violation)
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              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
                  value:
                    code: subscription_cycle_next_cycle_exists
                    message: Cannot change cycle end date when next cycle already exists
                    timestamp: 1601296792533
                end_date_too_early:
                  summary: Renewal date is too early
                  value:
                    code: subscription_cycle_end_date_too_early
                    message: The end date is too early
                    timestamp: 1601296792533
                end_date_too_far:
                  summary: Renewal date is too far in the future
                  value:
                    code: subscription_cycle_end_date_too_far
                    message: The end date is too far in the future
                    timestamp: 1601296792533
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  cf1142c:
    summary: List of subscription cycles
    value:
      next_page_token: 9e5d2caa-bb60-4b5b-b7cf-6345bbdff67e
      cycles:
        - id: 550e8400-e29b-41d4-a716-446655440010
          subscription_id: 650e8400-e29b-41d4-a716-446655440001
          plan_variation_id: 750e8400-e29b-41d4-a716-446655440002
          plan_variation_phase_id: 850e8400-e29b-41d4-a716-446655440003
          number: 2
          previous_cycle_id: 550e8400-e29b-41d4-a716-446655440000
          state: active
          start_date: 2025-07-05T21:00:00.036001Z
          end_date: 2025-08-05T21:00:00.036001Z
          order_id: a50e8400-e29b-41d4-a716-446655440015
          trial: false
        - id: 550e8400-e29b-41d4-a716-446655440000
          subscription_id: 650e8400-e29b-41d4-a716-446655440001
          plan_variation_id: 750e8400-e29b-41d4-a716-446655440002
          number: 1
          state: finished
          start_date: 2025-06-05T21:00:00.036001Z
          end_date: 2025-07-05T21:00:00.036001Z
          order_id: a50e8400-e29b-41d4-a716-446655440005
          trial: true
  bf2b7a1:
    name: cycle_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the subscription cycle.
  d97bee6:
    type: object
    required:
      - id
      - subscription_id
      - plan_variation_id
      - number
      - state
    properties:
      id:
        $ref: "#/x-ext/c147906"
      subscription_id:
        $ref: "#/x-ext/bb5e5cf"
      plan_variation_id:
        $ref: "#/x-ext/8ee29c2"
      plan_variation_phase_id:
        $ref: "#/x-ext/2a76ad9"
      number:
        $ref: "#/x-ext/f4b26ad"
      previous_cycle_id:
        $ref: "#/x-ext/4e3ece3"
      state:
        $ref: "#/x-ext/0c885e7"
      start_date:
        $ref: "#/x-ext/6905b6b"
      end_date:
        $ref: "#/x-ext/e3212ad"
      usage_cutoff_date:
        $ref: "#/x-ext/e82403e"
      order_id:
        $ref: "#/x-ext/8ada47f"
      post_billing_order_id:
        $ref: "#/x-ext/e657068"
      trial:
        $ref: "#/x-ext/ba0fe2a"
  964dcb5:
    type: object
    required:
      - cycles
    properties:
      next_page_token:
        type:
          - string
          - "null"
        description: |-
          Token for retrieving the next page of results.

          If not present, there are no more results to retrieve.
      cycles:
        type: array
        description: List of subscription cycles.
        items:
          $ref: "#/x-ext/d97bee6"
  7de7bb2:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
    servers:
      - description: Production server (uses live data)
        url: https://merchant.revolut.com
    get:
      summary: Retrieve a subscription cycle list
      operationId: retrieveSubscriptionCycleList
      description: >-
        Retrieve all billing cycles for a specific subscription. 


        You can use the query parameters for:

          | Filtering | Pagination |
          | --------- | ---------- |
          | Filter the subscription cycles that you want to retrieve, for example, only retrieve cycles that started within a specific date range. <br/><br/>Parameters used for filtering:<br/><ul><li>`from`</li><li>`to`</li></ul> | View the subscription cycles without loading all of them at once, for example, return a specified number of cycles per page. <br/><br/>Parameters used for pagination: <br/><ul><li>`limit`</li><li>`page_token`</li></ul> |
      tags:
        - Subscriptions
      parameters:
        - $ref: "#/x-ext/4349f60"
        - $ref: "#/x-ext/cff174f"
        - $ref: "#/x-ext/d10b9fd"
        - $ref: "#/x-ext/0997c5b"
      responses:
        "200":
          description: List of subscription cycles retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/964dcb5"
              examples:
                cycles_list:
                  $ref: "#/x-ext/cf1142c"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  564d792:
    summary: Finished subscription cycle
    value:
      id: 950e8400-e29b-41d4-a716-446655440004
      subscription_id: 650e8400-e29b-41d4-a716-446655440001
      plan_variation_id: 750e8400-e29b-41d4-a716-446655440002
      plan_variation_phase_id: 850e8400-e29b-41d4-a716-446655440003
      number: 1
      state: finished
      start_date: 2025-06-05T21:00:00.036001Z
      end_date: 2025-07-05T21:00:00.036001Z
      order_id: b50e8400-e29b-41d4-a716-446655440006
      trial: true
  5e171ae:
    name: Idempotency-Key
    in: header
    schema:
      type: string
    required: true
    description: >-
      The `Idempotency-Key` ensures that requests are processed only once,
      preventing multiple executions of the same operation due to retries or
      duplicate requests.


      This header is required. It can accept any unique string value the
      merchant uses.


      A recommended practice is to use a unique identifier from your system
      (such as the entity's ID or a request UUID) as the idempotency key. This
      facilitates tracking and managing requests effectively.
  0588a64:
    name: from_usage_date
    in: query
    schema:
      type: string
      format: date-time
    description: Filter usage records with a `usage_date` on or after this date and time.
    required: false
  5764b3a:
    name: to_usage_date
    in: query
    schema:
      type: string
      format: date-time
    description: Filter usage records with a `usage_date` before this date and time.
    required: false
  fc6df64:
    name: subscription_id
    in: query
    schema:
      type: string
      format: uuid
    description: Filter usages by the ID of the subscription.
    required: false
  32f5b41:
    name: subscription_cycle_id
    in: query
    schema:
      type: string
      format: uuid
    description: Filter usages by the ID of the subscription cycle.
    required: false
  19229f6:
    type: object
    required:
      - id
      - subscription_id
      - subscription_cycle_id
      - subscription_item_code
      - usage_date
      - quantity
      - created_at
      - updated_at
    properties:
      id:
        $ref: "#/x-ext/a579556"
      subscription_id:
        $ref: "#/x-ext/bb5e5cf"
      subscription_cycle_id:
        $ref: "#/x-ext/c147906"
      subscription_item_code:
        $ref: "#/x-ext/42f1cfe"
      usage_date:
        $ref: "#/x-ext/7c6239f"
      quantity:
        $ref: "#/x-ext/36ec192"
      metadata:
        $ref: "#/x-ext/b1ecd7f"
      created_at:
        $ref: "#/x-ext/5815cf1"
      updated_at:
        $ref: "#/x-ext/ab3ed2e"
  0f3fe67:
    summary: Report active license seats
    description: Reporting active seats used during a period
    value:
      subscription_id: 550e8400-e29b-41d4-a716-446655440000
      subscription_item_code: active_seats
      usage_date: 2026-03-15T09:30:00Z
      quantity: 12
      metadata:
        department: engineering
        update_type: onboarding
  60fc9a8:
    summary: Successful usage record creation
    description: Returns the reported usages
    value:
      id: 750e8400-e29b-41d4-a716-446655440000
      subscription_id: 550e8400-e29b-41d4-a716-446655440000
      subscription_cycle_id: 850e8400-e29b-41d4-a716-446655440000
      subscription_item_code: api_calls
      usage_date: 2026-03-01T21:00:00Z
      quantity: 100
      metadata:
        user_id: "12345"
        api_version: v2
      created_at: 2026-03-01T21:05:00Z
      updated_at: 2026-03-01T21:05:00Z
  ea795a9:
    summary: Retrieve a list of usage records
    value:
      next_page_token: 9e5d2caa-bb60-4b5b-b7cf-6345bbdff67e
      subscription_usages:
        - id: 750e8400-e29b-41d4-a716-446655440000
          subscription_id: 550e8400-e29b-41d4-a716-446655440000
          subscription_cycle_id: 850e8400-e29b-41d4-a716-446655440000
          subscription_item_code: api_calls
          usage_date: 2026-03-01T21:00:00Z
          quantity: 100
          metadata:
            user_id: "12345"
            api_version: v2
          created_at: 2026-03-01T21:05:00Z
          updated_at: 2026-03-01T21:05:00Z
        - id: bc903328-9f37-4d7a-8f56-02e5b7c76891
          subscription_id: 550e8400-e29b-41d4-a716-446655440000
          subscription_cycle_id: 850e8400-e29b-41d4-a716-446655440000
          subscription_item_code: api_calls
          usage_date: 2026-03-01T22:15:00Z
          quantity: 50
          metadata:
            user_id: "12345"
            api_version: v2
          created_at: 2026-03-01T22:20:00Z
          updated_at: 2026-03-01T22:20:00Z
  1907c6e:
    name: usage_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the usage record.
  5859d34:
    summary: Update quantity
    value:
      quantity: 150
  31f122d:
    summary: Update metadata
    value:
      metadata:
        user_id: "67890"
        api_version: v3
  baf00b2:
    summary: Update both quantity and metadata
    value:
      quantity: 200
      metadata:
        user_id: "54321"
  fdb8216:
    type: object
    properties:
      id:
        $ref: "#/x-ext/8de5ed9"
      state:
        $ref: "#/x-ext/842508a"
      created_at:
        type: string
        format: date-time
        description: The date and time the payout was created.
      destination_type:
        $ref: "#/x-ext/09d73a0"
      amount:
        $ref: "#/x-ext/05718b6"
      currency:
        $ref: "#/x-ext/1b2472a"
    required:
      - id
      - state
      - created_at
      - destination_type
  ea52751:
    name: payout_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the `Payout` object.
  6a3beee:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/ea52751"
    get:
      summary: Retrieve a payout
      operationId: retrievePayout
      description: Retrieve the details of a payout. Provide the unique payout ID, and
        the corresponding payout information is returned.
      responses:
        "200":
          description: Payout retrieved
          content:
            application/json:
              schema:
                $ref: "#/x-ext/fdb8216"
              examples:
                default:
                  value:
                    id: a830020e-090c-4717-836d-37941a27ad12
                    state: completed
                    created_at: 2024-02-27T00:16:39.079285Z
                    destination_type: current_pocket
                    amount: 50000
                    currency: GBP
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Missing Revolut-Api-Version header
                    timestamp: 1721049596461
          headers: {}
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested resource is not found
                    timestamp: 1721050063886
      security:
        - Api-Key: []
      tags:
        - Payouts
  ae49498:
    title: ReportRunDetails
    type: object
    description: The `ReportRunDetails` object contains all information associated
      with a specific report run, identified by the `report_run_id`.
    properties:
      report_run_id:
        type: string
        format: uuid
        description: Unique ID used for accessing report details. Use this to check
          report generation status.
      status:
        type: string
        description: >-
          Current status of the report run.


          | Value | Description |

          | ----- | ----------- |

          | `processing` | Report generation is still in progress. |

          | `completed` | Report generation finished successfully and the file
          is available to download for 24 hours via `file_url`. |

          | `failed` | Report generation failed and no report file is available.
          |

          | `expired` | Report generation previously completed, but the 24-hour
          file availability window has elapsed and the file can no longer be
          downloaded. |
        enum:
          - processing
          - completed
          - failed
          - expired
      file_url:
        type: string
        description: Use this link to download the report file. Available only when
          `status` is `completed`, and only for 24 hours after report generation
          finishes.
    required:
      - report_run_id
      - status
  6b43969:
    name: report_run_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: Unique ID of the report run.
  d599abc:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/6b43969"
    get:
      summary: Retrieve a report run
      operationId: retrieveReportRun
      description: >-
        Retrieve details of a report run, based on the `report_run_id`. 


        Use this method to check the status of a report run.


        If a report run's `status` is `completed`, the report file can be
        downloaded using the `file_url` for 24 hours after report generation
        finishes.


        Once that 24-hour window elapses, the report run remains retrievable but
        transitions to `expired`, and the file can no longer be downloaded.
      responses:
        "200":
          description: Report run found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ae49498"
              examples:
                report_run_processing:
                  summary: Report run processing
                  value:
                    report_run_id: d6f6ef64-f668-4e64-8967-1cdf8afb2561
                    status: processing
                report_run_completed:
                  summary: Report run completed
                  value:
                    report_run_id: d6f6ef64-f668-4e64-8967-1cdf8afb2561
                    status: completed
                    file_url: https://merchant.revolut.com/api/report-runs/d6f6ef64-f668-4e64-8967-1cdf8afb2561/file
                report_run_expired:
                  summary: Report run expired
                  value:
                    report_run_id: d6f6ef64-f668-4e64-8967-1cdf8afb2561
                    status: expired
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Report runs
  f589cea:
    summary: Custom report (filtered columns)
    value: |-
      transaction_id,order_id,payment_created_date,payment_captured_date,payment_method,amount,currency,state,updated_date
      649ae37f-99ca-a7db-a4fb-5924af14ad7c,649ae35c-2558-adea-bf98-3a7156a764e7,2023-06-28T13:20:46.07498Z,2023-06-28T13:30:46.07498Z,PAY_WITH_REVOLUT,0.05,GBP,COMPLETED,2023-06-28T13:30:46.07498Z
      649ae3de-e945-af9f-98c8-1d6172e350b5,649ae3ab-3998-ab2b-ad95-41b48346be69,2023-06-28T13:22:46.075569Z,2023-06-28T13:30:46.075569Z,PAY_WITH_REVOLUT,0.05,GBP,COMPLETED,2023-06-28T13:30:46.075569Z
      649ae48b-37f6-a097-9cb0-4fc2a89d9e5a,649ae479-d7e8-a139-993b-bf75865c5059,2023-06-28T13:35:46.084289Z,2023-06-28T13:38:46.084289Z,PAY_WITH_REVOLUT,0.05,GBP,COMPLETED,2023-06-28T13:38:46.084289Z
  4d33cb1:
    summary: Settlement report
    value: |-
      transaction_id,order_id,original_order_id,started_date,updated_date,completed_date,payment_created_date,payment_captured_date,type,state,description,merchant_order_ext_ref,customer_id,amount,currency,settlement_amount,settlement_currency,payment_method,fee_amount,fee_currency,processing_fee_amount,processing_fee_currency,browser_url,location_id
      67f66fa6-200c-aaef-8708-cb78366f8a30,67f66f41-3022-a623-827e-e0616c0d04e7,67f66f41-3022-a623-827e-e0616c0d04e7,2025-04-09T13:01:26.288638Z,2025-04-10T13:02:09.843018Z,2025-04-10T13:02:09.837719Z,2025-04-09T13:01:26.186Z,2025-04-10T13:02:09.837719Z,SETTLEMENT,COMPLETED,Summer hat,ORD-2025-0042,,100.00,GBP,99.00,GBP,CARD,1.00,GBP,1.00,GBP,https://sandbox-checkout.revolut.com/payment-link/1ae44a1c-3ea8-47ac-b736-7d7d4c992bb4,
      67f66fb7-300d-bbff-9819-dc89477a9b41,67f67052-4133-b734-938f-f1727d1e15f8,67f66f41-3022-a623-827e-e0616c0d04e7,2025-04-10T09:10:00.000000Z,2025-04-10T09:12:00.000000Z,2025-04-10T09:12:00.000000Z,,,REFUND,COMPLETED,Refund for Summer hat,ORD-2025-0042-R1,,25.00,GBP,-25.00,GBP,CARD,0.00,GBP,0.00,GBP,https://sandbox-checkout.revolut.com/payment-link/1ae44a1c-3ea8-47ac-b736-7d7d4c992bb4,
      67f66fc8-411e-cc10-a92a-ed9a588b0c52,67f67063-5244-c845-a49a-a2838e2f26a9,67f66f41-3022-a623-827e-e0616c0d04e7,2025-04-11T08:30:00.000000Z,2025-04-11T08:45:00.000000Z,2025-04-11T08:45:00.000000Z,,,CHARGEBACK,COMPLETED,Chargeback for Summer hat,ORD-2025-0042-CB1,,75.00,GBP,-75.00,GBP,CARD,0.00,GBP,0.00,GBP,https://sandbox-checkout.revolut.com/payment-link/1ae44a1c-3ea8-47ac-b736-7d7d4c992bb4,
      67f66fd9-522f-dd21-ba3b-feab699a1d63,67f67074-6355-d956-b50a-a3949f3a37a0,67f66f41-3022-a623-827e-e0616c0d04e7,2025-04-15T10:00:00.000000Z,2025-04-15T10:05:00.000000Z,2025-04-15T10:05:00.000000Z,,,CHARGEBACK_REVERSAL,COMPLETED,Chargeback reversal for Summer hat,ORD-2025-0042-CBR1,,75.00,GBP,75.00,GBP,CARD,0.00,GBP,0.00,GBP,https://sandbox-checkout.revolut.com/payment-link/1ae44a1c-3ea8-47ac-b736-7d7d4c992bb4,
  a8d0fd0:
    summary: Payments report
    value: |-
      payment_id,type,description,original_payment_id,order_id,state,reason,amount,currency,surcharge_amount,tip_amount,refunded_amount,created_date,captured_date,merchant_order_ext_ref,payment_method,location_id,customer_id,customer_card_number,customer_card_country,customer_card_brand,customer_card_type,customer_card_category,customer_email,fee_amount,fee_currency
      67f66fa6-7e98-ae73-9570-50583cec116d,PAYMENT,Payment from customer,,67f66f41-3022-a623-827e-e0616c0d04e7,COMPLETED,,1.00,GBP,,0.00,0.00,2025-04-09T13:01:26.186Z,2025-04-10T13:02:09.837Z,ORD-2025-0042,CARD,,cust-0001-0000-0000-000000000001,528143******4148,GB,VISA,DEBIT,consumer,customer@example.com,0.01,GBP
      6807b0a5-a367-afbf-b31f-353730b788b5,PAYMENT,Payment from customer,,6807b09c-c62a-a656-818e-f071ef67ee36,DECLINED,,10.01,GBP,,0.00,0.00,2025-04-22T15:07:17.352Z,,,PAY_WITH_REVOLUT,,,,,,,,customer@example.com,,
      67efa316-db8a-aec6-8eb4-46e47b6ebdc4,PAYMENT,Payment from customer,,67efa305-be19-a456-a6a2-154b218ac386,FAILED,INSUFFICIENT_FUNDS,0.57,USD,,0.00,0.00,2025-04-04T09:15:02.13Z,,,CARD,,,222300******9399,GB,VISA,DEBIT,consumer,customer@example.com,,
  768a897:
    summary: Payout statement report
    value: |-
      created_date,completed_date,payout_affected_date,affected_payout_amount,transaction_id,order_id,dispute_id,merchant_order_reference,type,related_icpp_charge_id,transaction_amount,transaction_currency,billing_amount,billing_currency,state,original_transaction_id,original_transaction_amount,original_transaction_currency,original_order_id,original_order_channel,original_merchant_order_reference,fee_amount,fee_currency,settlement_amount,settlement_currency,location_id,location_name,submerchant_id,payout_transfer_reference,payout_total_amount,payout_date
      2025-03-25T14:34:05.708899Z,2025-03-26T14:34:38.06903Z,2025-03-26T14:34:38.06903Z,true,67e2bedd-0e79-a8ea-ac4c-e9fd13693286,67e2be76-89c5-ae4f-9103-a152ae6f0584,,ORD-2025-0042,Settlement,,0.57,USD,0.57,USD,COMPLETED,67e2bedd-0e79-a8ea-ac4c-e9fd13693286,0.57,USD,67e2be76-89c5-ae4f-9103-a152ae6f0584,API,ORD-2025-0042,0.00,USD,0.57,USD,4a0f98a6-0f61-4e85-9ef0-7e5d0cb92ef0,Store London,,Revolut USD payout 2025-03-26 MerchantName,0.17,2025-03-26T15:00:00Z
      2025-03-25T15:38:45.162946Z,2025-03-26T15:39:58.03824Z,2025-03-26T15:39:58.03824Z,true,67e2ce05-1a16-abeb-b05b-5059073bcdaa,67e2ce00-6665-a52b-9f10-368f886054d7,a81bba54-e3f9-450f-aa50-7aea8e4e5b9a,ORD-2025-0042-CB1,Customer dispute - withdrawal,,-0.40,USD,-0.40,USD,COMPLETED,67e2bedd-0e79-a8ea-ac4c-e9fd13693286,0.57,USD,67e2be76-89c5-ae4f-9103-a152ae6f0584,API,ORD-2025-0042,0.00,USD,-0.40,USD,4a0f98a6-0f61-4e85-9ef0-7e5d0cb92ef0,Store London,,Revolut USD payout 2025-03-26 MerchantName,0.17,2025-03-26T15:00:00Z
  8921dd0:
    title: Settlement report CSV
    type: object
    description: >-
      CSV output for `settlement_report`. Contains settled transactions
      associated with a Merchant account.


      The first row is a header row with column names. Subsequent rows contain
      transaction data, one row per transaction.


      A partial-settlement is represented by separate `SETTLEMENT` and `REFUND`
      rows instead of a dedicated type.


      :::note

      The actual response is a raw `text/csv` string. The object schema below is
      a documentation convention only: OpenAPI's schema language (JSON Schema)
      describes JSON data shapes and has no native construct for typed CSV
      columns, so each property here corresponds to a CSV column header rather
      than a JSON field.

      :::
    properties:
      transaction_id:
        type: string
        format: uuid
        description: Unique identifier of the ledger transaction in the core settlement
          system. Matches `transaction_id` in the payout statement report for
          the same event. Not the same as `payment_id` in the payments report —
          a payment and its resulting ledger transaction have different UUIDs.
          Use `order_id` to cross-reference with the payments report.
      order_id:
        type: string
        format: uuid
        description: Unique identifier of the order. An order is the top-level entity
          that groups one or more payment attempts against it. `order_id` is
          consistent across all report types and can be used to cross-reference
          between the payments report and the settlement or payout reports.
      original_order_id:
        type: string
        format: uuid
        description: For refunds and chargebacks, the order ID of the original payment
          that this transaction reverses. Refunds and chargebacks create their
          own order in the system, so `order_id` refers to the refund or
          chargeback order while `original_order_id` points back to the original
          payment's order. For settlement transactions, matches `order_id`.
      started_date:
        type: string
        format: date-time
        description: Date and time the row's source record was started. For payment
          rows, this is the payment start timestamp. For non-payment rows such
          as refunds and chargebacks, this is the transaction start timestamp.
          This displayed value is separate from the report filter timeframe.
      updated_date:
        type: string
        format: date-time
        description: Date and time the row's source record was last updated. For payment
          rows, this is the payment update timestamp. For non-payment rows such
          as refunds and chargebacks, this is the transaction update timestamp.
          This displayed value is separate from the report filter timeframe.
      completed_date:
        type: string
        format: date-time
        description: Date and time the row's source record was completed. For payment
          rows, this is the payment completion timestamp. For non-payment rows
          such as refunds and chargebacks, this is the transaction completion
          timestamp. This displayed value is separate from the report filter
          timeframe.
      payment_created_date:
        type: string
        format: date-time
        description: Payment authorisation or creation timestamp for rows linked to a
          payment, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC
          date-time format. Empty for refunds and non-payment-related rows where
          no payment timestamp applies. This displayed value is separate from
          the report filter timeframe.
      payment_captured_date:
        type: string
        format: date-time
        description: Payment capture timestamp for rows linked to a captured payment, in
          [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time
          format. Empty for refunds, non-payment-related rows, or payments not
          captured. This displayed value is separate from the report filter
          timeframe.
      type:
        type: string
        description: >-
          Type of the settlement report row.


          A partial-settlement is represented by separate `SETTLEMENT` and
          `REFUND` rows instead of a dedicated type.


          | Value | Description |

          | ----- | ----------- |

          | `SETTLEMENT` | Settlement of a payment into the merchant balance. |

          | `REFUND` | Refund entry reducing the merchant balance. |

          | `CHARGEBACK` | Dispute withdrawal entry reducing the merchant
          balance. |

          | `CHARGEBACK_REVERSAL` | Reversal of a previous chargeback, restoring
          funds to the merchant balance. |
        enum:
          - SETTLEMENT
          - REFUND
          - CHARGEBACK
          - CHARGEBACK_REVERSAL
      state:
        type: string
        description: State of the transaction.
      description:
        type: string
        description: Description of the order.
      merchant_order_ext_ref:
        type: string
        description: Merchant's order reference. The value of the
          `merchant_order_data.reference` field set when the order was created.
      customer_id:
        type: string
        format: uuid
        description: Unique identifier of the customer related to an order.
      amount:
        type: number
        description: Total amount of the order.
      currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code that represents the currency of the order.
        examples:
          - GBP
      settlement_amount:
        type: number
        description: Total amount settled on the merchant's account.
      settlement_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code that represents the currency of the settled amount.
        examples:
          - GBP
      payment_method:
        type: string
        description: Type of the payment method the customer used to pay for the order.
        examples:
          - CARD
      fee_amount:
        type: number
        description: Total fee amount applied to the order, aggregated across all fee
          components (acquiring markup + interchange + scheme fees).
      fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code that represents the currency of the total fee.
        examples:
          - GBP
      processing_fee_amount:
        type: number
        description: Acquiring markup fee only — a subset of `fee_amount`. Represents
          Revolut's service fee, excluding interchange and scheme fees.
      processing_fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code that represents the currency of the acquiring markup fee.
        examples:
          - GBP
      browser_url:
        type: string
        format: uri
        description: The URL where the customer initiated the payment.
      location_id:
        type: string
        format: uuid
        description: Unique identifier of the location related to the transaction.
  a67071a:
    title: Custom report CSV
    type: object
    description: >-
      CSV output for `custom_report` report type. Contains settled and
      processing transactions with a configurable set of columns.


      The first row is a header row with column names. Subsequent rows contain
      transaction data, one row per transaction.


      The columns included in the response depend on the `options.columns` list
      specified in the request. If no columns list was provided, all available
      columns are included.


      Custom metadata columns can also be requested using the `metadata.`
      prefix, for example `metadata.custom_attribute`.


      :::note

      The actual response is a raw `text/csv` string. The object schema below is
      a documentation convention only: OpenAPI's schema language (JSON Schema)
      describes JSON data shapes and has no native construct for typed CSV
      columns, so each property here corresponds to a CSV column header rather
      than a JSON field.

      :::
    properties:
      transaction_id:
        type: string
        format: uuid
        description: Unique identifier of the ledger transaction in the core settlement
          system. Matches `transaction_id` in the settlement and payout reports
          for the same event. Not the same as `payment_id` in the payments
          report — a payment and its resulting ledger transaction have different
          UUIDs. Use `order_id` to cross-reference with the payments report.
      related_transaction_id:
        type: string
        format: uuid
        description: For refund and chargeback transactions, the ledger transaction ID
          of the original payment that this transaction reverses. Corresponds to
          `original_transaction_id` in the payout statement report.
      transaction_description:
        type: string
        description: Description of the transaction.
      order_id:
        type: string
        format: uuid
        description: Unique identifier of the order. An order is the top-level entity
          that groups one or more payment attempts against it. `order_id` is
          consistent across all report types and can be used to cross-reference
          between the payments report and the settlement or payout reports.
      original_order_id:
        type: string
        format: uuid
        description: For refunds and chargebacks, the order ID of the original payment
          that this transaction reverses. Refunds and chargebacks create their
          own order in the system, so `order_id` refers to the refund or
          chargeback order while `original_order_id` points back to the original
          payment's order. For settlement transactions, matches `order_id`.
      original_order_ext_ref:
        type: string
        description: Merchant's order identifier of the original order for external
          reference.
      order_description:
        type: string
        description: Description of the order.
      order_channel:
        type: string
        description: >-
          Channel through which the order was created.


          The value depends on the order source and integration. It may reflect
          platform-specific or externally provided values, so the set of
          returned values should not be treated as a fixed enum.
      order_customer_note:
        type: string
        description: Note added by the customer at the time of the order.
      order_tip_amount:
        type: number
        description: Tip amount set at the order level.
      order_created_by:
        type: string
        description: Identifier of the user who created the order.
      payment_initiated_by:
        type: string
        description: Identifier of who initiated the payment.
      order_line_items:
        type: string
        description: Line items included in the order, if any.
      payout_id:
        type: string
        format: uuid
        description: Unique identifier of the payout that this transaction contributed
          to. Use to cross-reference with the payout statement report.
      payout_reference:
        type: string
        description: Reference of the payout transfer associated with the transaction.
      invoice_reference:
        type: string
        description: Invoice reference associated with the order, if any.
      dispute_id:
        type: string
        format: uuid
        description: Unique identifier of the dispute, if applicable.
      account_id:
        type: string
        format: uuid
        description: Unique identifier of the merchant account.
      account_balance:
        type: number
        description: Account balance at the time of the transaction.
      started_date:
        type: string
        format: date-time
        description: Date and time the row's source record was started. For payment
          rows, this is the payment start timestamp. For non-payment rows such
          as refunds and chargebacks, this is the transaction start timestamp.
          This displayed value is separate from the report filter timeframe.
      created_date:
        type: string
        format: date-time
        description: Date and time the order was created.
      updated_date:
        type: string
        format: date-time
        description: Date and time the row's source record was last updated. For payment
          rows, this is the payment update timestamp. For non-payment rows such
          as refunds and chargebacks, this is the transaction update timestamp.
          This displayed value is separate from the report filter timeframe.
      completed_date:
        type: string
        format: date-time
        description: Date and time the row's source record was completed. For payment
          rows, this is the payment completion timestamp. For non-payment rows
          such as refunds and chargebacks, this is the transaction completion
          timestamp. This displayed value is separate from the report filter
          timeframe.
      payment_created_date:
        type: string
        format: date-time
        description: Payment authorisation or creation timestamp for rows linked to a
          payment, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC
          date-time format. Empty for refunds and non-payment-related rows where
          no payment timestamp applies. This displayed value is separate from
          the report filter timeframe.
      payment_captured_date:
        type: string
        format: date-time
        description: Payment capture timestamp for rows linked to a captured payment, in
          [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time
          format. Empty for refunds, non-payment-related rows, or payments not
          captured. This displayed value is separate from the report filter
          timeframe.
      type:
        type: string
        description: >-
          Type of the transaction.


          | Value | Description |

          | ----- | ----------- |

          | `SETTLEMENT` | Settlement of a payment into the merchant balance. |

          | `RESERVE` | Reserve entry holding funds on the merchant balance. |

          | `REFUND` | Refund entry reducing the merchant balance. |

          | `TOPUP` | Balance top-up entry. |

          | `TOPUP_RETURN` | Reversal of a top-up entry. |

          | `CHARGEBACK` | Dispute withdrawal from the merchant balance. |

          | `CHARGEBACK_REVERSAL` | Reversal of a previous chargeback. |

          | `CREDIT_REIMBURSEMENT` | Credit reimbursement entry. |

          | `FEE` | Fee charged against the merchant balance. |

          | `PAYOUT` | Payout-related ledger entry. |

          | `TRANSFER` | Balance transfer entry. |

          | `REVOLUT_REFUND` | Refund-related entry specific to Revolut internal
          flows. |

          | `REVOLUT_FEE` | Fee-related entry specific to Revolut internal
          flows. |

          | `WRITE_OFF` | Write-off entry. |

          | `CHARGE` | Charge entry posted to the merchant balance. |
        enum:
          - SETTLEMENT
          - RESERVE
          - REFUND
          - TOPUP
          - TOPUP_RETURN
          - CHARGEBACK
          - CHARGEBACK_REVERSAL
          - CREDIT_REIMBURSEMENT
          - FEE
          - PAYOUT
          - TRANSFER
          - REVOLUT_REFUND
          - REVOLUT_FEE
          - WRITE_OFF
          - CHARGE
      legacy_type:
        type: string
        description: Legacy type value for backwards compatibility.
      state:
        type: string
        description: State of the transaction.
      description:
        type: string
        description: Description of the transaction.
      merchant_order_ext_ref:
        type: string
        description: Merchant's order reference. The value of the
          `merchant_order_data.reference` field set when the order was created.
      customer_id:
        type: string
        format: uuid
        description: Unique identifier of the customer related to the order.
      amount:
        type: number
        description: Total amount of the order.
      currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the order.
        examples:
          - GBP
      settlement_amount:
        type: number
        description: Total amount settled on the merchant's account.
      settlement_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the settled amount.
        examples:
          - GBP
      exchange_rate:
        type: number
        description: Exchange rate applied if currency conversion occurred.
      refunded_amount:
        type: number
        description: Amount refunded for the order.
      statement_descriptor:
        type: string
        description: Statement descriptor shown on the customer's bank statement.
      tip_amount:
        type: number
        description: Tip amount included in the transaction.
      surcharge_amount:
        type: number
        description: Surcharge amount applied to the transaction. Omitted when no
          surcharge applies.
      order_surcharge_amount:
        type: number
        description: Surcharge amount set at the order level.
      terminal_hardware_id:
        type: string
        description: Identifier of the card reader hardware used, for in-person payments.
      customer_name:
        type: string
        description: Name of the customer.
      customer_email:
        type: string
        format: email
        description: Email address of the customer.
      customer_card_number:
        type: string
        description: Masked card number used for the payment.
        examples:
          - 492942******5709
      customer_card_brand:
        type: string
        description: Card brand used for the payment. Derived from BIN data. Example
          values include `VISA`, `MASTERCARD`, `MASTERCARD_DEBIT`, `MAESTRO`,
          `AMEX`, `DINERS`, `DISCOVER`, `JCB`.
        examples:
          - VISA
      customer_card_type:
        type: string
        description: |-
          Card funding type.

          | Value | Description |
          | ----- | ----------- |
          | `DEBIT` | Debit card. |
          | `CREDIT` | Credit card. |
          | `PREPAID` | Prepaid card. |
          | `DEFERRED_DEBIT` | Deferred debit card. |
          | `CHARGE` | Charge card. |
        enum:
          - DEBIT
          - CREDIT
          - PREPAID
          - DEFERRED_DEBIT
          - CHARGE
      customer_card_category:
        type: string
        description: |-
          Card commercial category.

          | Value | Description |
          | ----- | ----------- |
          | `consumer` | Personal card. |
          | `commercial` | Business or corporate card. |
        enum:
          - consumer
          - commercial
      payment_method:
        type: string
        description: Payment method the customer used to pay for the order.
        examples:
          - CARD
      fee_amount:
        type: number
        description: Total fee amount applied to the order, aggregated across all fee
          components (acquiring markup + interchange + scheme fees).
      fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the total fee.
        examples:
          - GBP
      processing_fee_amount:
        type: number
        description: Acquiring markup fee only — a subset of `fee_amount`. Represents
          Revolut's service fee, excluding interchange and scheme fees.
      processing_fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the acquiring markup fee.
        examples:
          - GBP
      fx_fee_amount:
        type: number
        description: Foreign exchange fee amount, if applicable.
      fx_fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the FX fee.
        examples:
          - GBP
      browser_url:
        type: string
        format: uri
        description: The URL where the customer initiated the payment.
      beneficiary_name:
        type: string
        description: Name of the beneficiary, for bank transfer payments.
      beneficiary_account_number:
        type: string
        description: Account number of the beneficiary, for bank transfer payments.
      location_id:
        type: string
        format: uuid
        description: Unique identifier of the location related to the transaction.
      location_name:
        type: string
        description: Name of the location related to the transaction.
      order_custom_field_name:
        type: string
        description: Name of a custom field set on the order.
      order_custom_field_value:
        type: string
        description: Value of a custom field set on the order.
      offline_payment_state:
        type: string
        description: State of an offline payment, if applicable.
      order_authorisation_type:
        type: string
        description: Authorisation type of the order, for example `FULL` or `PRE_AUTH`.
  556244c:
    title: Payments report CSV
    type: object
    description: >-
      CSV output for `payments_report` report type. Contains all payments
      including failed and declined ones.


      The first row is a header row with column names. Subsequent rows contain
      payment data, one row per payment.


      For failed and declined payments, `fee_amount` and `fee_currency` are
      omitted. For payments made without a card, card-related columns are
      omitted.


      :::note

      The actual response is a raw `text/csv` string. The object schema below is
      a documentation convention only: OpenAPI's schema language (JSON Schema)
      describes JSON data shapes and has no native construct for typed CSV
      columns, so each property here corresponds to a CSV column header rather
      than a JSON field.

      :::
    properties:
      payment_id:
        type: string
        format: uuid
        description: Unique identifier of the payment attempt in the acquiring system.
          Corresponds to `id` in the IC++ fee breakdown report for the same
          payment. Not the same as `transaction_id` in the settlement or payout
          reports — a payment and its resulting ledger transaction have
          different UUIDs. Use `order_id` to cross-reference with the settlement
          or payout reports.
      type:
        type: string
        description: >-
          Type of the payment.


          | Value | Description |

          | ----- | ----------- |

          | `PAYMENT` | A payment attempt made against the order. |

          | `REFUND` | A refund record reversing a previously completed payment.
          |
        enum:
          - PAYMENT
          - REFUND
      description:
        type: string
        description: Description of the payment.
      original_payment_id:
        type: string
        format: uuid
        description: For refunds, the acquiring ID of the original payment that this
          record reverses. Corresponds to `payment_id` on the original payment
          row. Populated only when `type` is `REFUND`.
      order_id:
        type: string
        format: uuid
        description: Unique identifier of the order associated with this payment. An
          order can have multiple payment attempts — for example, a retry after
          a declined payment. Use `order_id` to cross-reference with the
          settlement or payout reports.
      state:
        type: string
        description: >-
          State of the payment.


          | Value | Description |

          | ----- | ----------- |

          | `COMPLETED` | The payment completed successfully. |

          | `FAILED` | The payment failed during processing. |

          | `DECLINED` | The payment was rejected by the issuer or payment flow.
          |

          | `CANCELLED` | The payment was cancelled before completion. |

          | `PROCESSING` | The payment is still being processed. |
        enum:
          - COMPLETED
          - FAILED
          - DECLINED
          - CANCELLED
          - PROCESSING
      reason:
        type: string
        description: >-
          Reason code for a failed or declined payment. Present only when
          `state` is `FAILED` or `DECLINED`.


          Example values: `INSUFFICIENT_FUNDS`, `DO_NOT_HONOUR`, `EXPIRED_CARD`,
          `INVALID_CVV`, `THREE_DS_CHALLENGE_FAILED`, `SUSPECTED_FRAUD`,
          `LOST_CARD`, `STOLEN_CARD`, `TECHNICAL_ERROR`.
      amount:
        type: number
        description: Total amount of the payment.
      currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the payment.
        examples:
          - GBP
      surcharge_amount:
        type: number
        description: Surcharge amount applied to the payment. Empty when no surcharge
          applies — this field is empty, not set to `0`.
      tip_amount:
        type: number
        description: Tip amount included in the payment, if any.
      refunded_amount:
        type: number
        description: Amount refunded for the payment.
      created_date:
        type: string
        format: date-time
        description: Date and time the payment was created.
      captured_date:
        type: string
        format: date-time
        description: Date and time the payment was captured, in [ISO
          8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time format.
          Empty when the payment has not been captured.
      merchant_order_ext_ref:
        type: string
        description: Merchant's order reference. The value of the
          `merchant_order_data.reference` field set when the order was created.
      payment_method:
        type: string
        description: Payment method used.
        examples:
          - CARD
      location_id:
        type: string
        format: uuid
        description: Unique identifier of the location where the payment was made.
      customer_id:
        type: string
        format: uuid
        description: Unique identifier of the customer.
      customer_card_number:
        type: string
        description: Masked card number used for the payment.
        examples:
          - 492942******5709
      customer_card_country:
        type: string
        description: Country of the card used for the payment, as an [ISO 3166-1
          alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
        examples:
          - GB
      customer_card_brand:
        type: string
        description: Card brand used for the payment. Derived from BIN data. Example
          values include `VISA`, `MASTERCARD`, `MASTERCARD_DEBIT`, `MAESTRO`,
          `AMEX`, `DINERS`, `DISCOVER`, `JCB`.
        examples:
          - VISA
      customer_card_type:
        type: string
        description: |-
          Card funding type.

          | Value | Description |
          | ----- | ----------- |
          | `DEBIT` | Debit card. |
          | `CREDIT` | Credit card. |
          | `PREPAID` | Prepaid card. |
          | `DEFERRED_DEBIT` | Deferred debit card. |
          | `CHARGE` | Charge card. |
        enum:
          - DEBIT
          - CREDIT
          - PREPAID
          - DEFERRED_DEBIT
          - CHARGE
      customer_card_category:
        type: string
        description: |-
          Card commercial category.

          | Value | Description |
          | ----- | ----------- |
          | `consumer` | Personal card. |
          | `commercial` | Business or corporate card. |
        enum:
          - consumer
          - commercial
      customer_email:
        type: string
        format: email
        description: Email address of the customer.
      fee_amount:
        type: number
        description: Total fee amount charged for the payment. Omitted for failed and
          declined payments.
      fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the fee. Omitted for failed and declined payments.
        examples:
          - GBP
  58d8019:
    title: IC++ fee breakdown report CSV
    type: object
    description: >-
      CSV output for `icpp_fee_breakdown_report` report type. Contains IC++ fee
      components broken down per transaction for a specific IC++ charge.


      The first row is a header row with column names. Subsequent rows contain
      one row per transaction.


      `card_interchange_fee_amount` and `card_scheme_fee_amount` are omitted for
      Revolut Pay transactions.


      :::note

      The actual response is a raw `text/csv` string. The object schema below is
      a documentation convention only: OpenAPI's schema language (JSON Schema)
      describes JSON data shapes and has no native construct for typed CSV
      columns, so each property here corresponds to a CSV column header rather
      than a JSON field.


      `payment_method` in this report returns `REVOLUT_PAY` for Revolut Pay
      transactions. Other reports use `PAY_WITH_REVOLUT` for the same payment
      method.

      :::
    properties:
      id:
        type: string
        format: uuid
        description: Unique identifier of the payment in the acquiring system.
          Corresponds to `payment_id` in the payments report for the same
          payment.
      created_at:
        type: string
        format: date-time
        description: Date and time the payment was created.
      operation:
        type: string
        description: |-
          Type of the IC++ transaction.

          | Value | Description |
          | ----- | ----------- |
          | `SALE` | Fee breakdown for a payment sale. |
          | `REFUND` | Fee breakdown for a refund. |
          | `DISPUTE` | Fee breakdown for a dispute-related transaction. |
        enum:
          - SALE
          - REFUND
          - DISPUTE
      amount:
        type: number
        description: Transaction amount.
      currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the transaction.
        examples:
          - GBP
      settlement_amount:
        type: number
        description: Amount settled on the merchant's account.
      settlement_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the settled amount.
        examples:
          - GBP
      payment_method:
        type: string
        description: Payment method used. Returns `REVOLUT_PAY` for Revolut Pay, or the
          card scheme name for card payments.
        examples:
          - REVOLUT_PAY
      card_scheme:
        type: string
        description: Card BIN scheme.
        examples:
          - VISA
      card_funding:
        type: string
        description: Card funding type.
        examples:
          - DEBIT
      order_description:
        type: string
        description: Description of the order.
      order_merchant_external_ref:
        type: string
        description: Merchant's order reference. The value of the
          `merchant_order_data.reference` field set when the order was created.
      original_operation_id:
        type: string
        format: uuid
        description: For refunds and disputes, the acquiring ID of the original payment.
          Corresponds to `original_payment_id` in the payments report.
      acquiring_fee_amount:
        type: number
        description: IC++ acquiring markup fee component.
      card_interchange_fee_amount:
        type: number
        description: Interchange fee component. Omitted for Revolut Pay transactions.
      card_scheme_fee_amount:
        type: number
        description: Card scheme fee component. Omitted for Revolut Pay transactions.
      card_type:
        type: string
        description: |-
          Card commercial category.

          | Value | Description |
          | ----- | ----------- |
          | `COMMERCIAL` | Business or corporate card. |
          | `CONSUMER` | Personal card. |
        enum:
          - COMMERCIAL
          - CONSUMER
      order_channel:
        type: string
        description: Channel through which the order was created.
        examples:
          - API
      card_country:
        type: string
        description: Country of the card, as an [ISO 3166-1
          alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
        examples:
          - GB
  fdeec3b:
    title: Payout statement report CSV
    type: object
    description: >-
      CSV output for `payout_statement_report` report type. Contains all
      transactions that contributed to a specific payout.


      The first row is a header row with column names. Subsequent rows contain
      transaction data, one row per transaction.


      :::note

      The actual response is a raw `text/csv` string. The object schema below is
      a documentation convention only: OpenAPI's schema language (JSON Schema)
      describes JSON data shapes and has no native construct for typed CSV
      columns, so each property here corresponds to a CSV column header rather
      than a JSON field.

      :::
    properties:
      created_date:
        type: string
        format: date-time
        description: Date and time the transaction was created.
      completed_date:
        type: string
        format: date-time
        description: Date and time the transaction was completed.
      payout_affected_date:
        type: string
        format: date-time
        description: Date and time the payout was affected by this transaction.
      affected_payout_amount:
        type: boolean
        description: >-
          Indicates whether this transaction contributed to the payout amount
          (`true`) or not (`false`).


          Note: despite the name implying a monetary amount, this field is a
          boolean flag. A rename is planned for a future API version.
      transaction_id:
        type: string
        format: uuid
        description: Unique identifier of the ledger transaction in the core settlement
          system. Matches `transaction_id` in the settlement report for the same
          event. Use `order_id` to cross-reference with the payments report.
      order_id:
        type: string
        format: uuid
        description: Unique identifier of the order associated with this transaction.
          Use `order_id` to cross-reference with the payments report or
          settlement report.
      dispute_id:
        type: string
        format: uuid
        description: Unique identifier of the dispute associated with a chargeback or
          chargeback reversal transaction. Empty for rows not related to a
          dispute.
      merchant_order_reference:
        type: string
        description: Merchant's order reference. The value of the
          `merchant_order_data.reference` field set when the order was created.
      type:
        type: string
        description: >-
          Type of the transaction.


          | Value | Description |

          | ----- | ----------- |

          | `Settlement` | Settlement of a payment into the merchant balance. |

          | `Refund` | Refund entry reducing the merchant balance. |

          | `External transfer money return` | Return of an external transfer
          entry. |

          | `Topup` | Balance top-up entry. |

          | `Topup Return` | Reversal of a top-up entry. |

          | `Customer dispute - withdrawal` | Chargeback or dispute withdrawal
          from the merchant balance. |

          | `Customer dispute - won` | Reversal of a previous dispute
          withdrawal. |

          | `Transfer from linked pocket` | Transfer from a linked balance
          pocket. |

          | `Automatic negative balance recovery` | Automatic recovery entry for
          a negative balance. |

          | `Payout` | Payout-related ledger entry. |

          | `Payout to an external account` | Transfer of payout funds to an
          external account. |

          | `Transfer from linked pocket with FX` | Transfer from a linked
          pocket involving FX conversion. |

          | `Payout with FX` | Payout-related entry involving FX conversion. |

          | `Money reserve block` | Reserve block entry withholding funds. |

          | `Money reserve unblock` | Release of previously blocked reserve
          funds. |

          | `IC++ post-billing fee` | IC++ fee charged after billing. |

          | `Fee refund` | Reversal of a previously charged fee. |

          | `Unrecognised transaction` | Transaction that does not map to a more
          specific category. |
        enum:
          - Settlement
          - Refund
          - External transfer money return
          - Topup
          - Topup Return
          - Customer dispute - withdrawal
          - Customer dispute - won
          - Transfer from linked pocket
          - Automatic negative balance recovery
          - Payout
          - Payout to an external account
          - Transfer from linked pocket with FX
          - Payout with FX
          - Money reserve block
          - Money reserve unblock
          - IC++ post-billing fee
          - Fee refund
          - Unrecognised transaction
      related_icpp_charge_id:
        type: string
        format: uuid
        description: Unique identifier of the IC++ charge related to the transaction, if
          applicable.
      transaction_amount:
        type: number
        description: Amount of the transaction in the transaction currency.
      transaction_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the transaction.
        examples:
          - GBP
      billing_amount:
        type: number
        description: Amount of the transaction in the billing currency.
      billing_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the billing amount.
        examples:
          - GBP
      state:
        type: string
        description: State of the transaction.
        examples:
          - COMPLETED
      original_transaction_id:
        type: string
        format: uuid
        description: >-
          For refunds and chargebacks, the ledger transaction ID of the original
          payment that this transaction reverses. Corresponds to
          `transaction_id` on the original settlement row. 


          :::note

          Populated only for reversal-type rows — for example, when `type` is
          `Refund` or `Customer dispute - withdrawal`.

          :::
      original_transaction_amount:
        type: number
        description: Amount of the original transaction.
      original_transaction_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the original transaction.
        examples:
          - GBP
      original_order_id:
        type: string
        format: uuid
        description: For refunds and chargebacks, the order ID of the original payment
          that this transaction reverses. Refunds and chargebacks create their
          own order in the system, so `order_id` refers to the refund or
          chargeback order while `original_order_id` points back to the original
          payment's order. For settlement transactions, matches `order_id`.
      original_order_channel:
        type: string
        description: >-
          Channel through which the original order was created.


          The value depends on the original order source and integration. It may
          reflect platform-specific or externally provided values, so the set of
          returned values should not be treated as a fixed enum.
        examples:
          - API
      original_merchant_order_reference:
        type: string
        description: Merchant's order reference for the original order. The value of the
          `merchant_order_data.reference` field set when the original order was
          created.
      fee_amount:
        type: number
        description: Total fee amount charged for the transaction.
      fee_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the fee.
        examples:
          - GBP
      settlement_amount:
        type: number
        description: Total amount settled on the merchant's account.
      settlement_currency:
        type: string
        description: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency
          code of the settled amount.
        examples:
          - GBP
      location_id:
        type: string
        format: uuid
        description: Unique identifier of the location associated with the transaction.
      location_name:
        type: string
        description: Name of the location associated with the transaction.
      submerchant_id:
        type: string
        format: uuid
        description: Unique identifier of the submerchant associated with the transaction.
      payout_transfer_reference:
        type: string
        description: Reference of the bank transfer for this payout. This value is the
          same across all rows in the report, as each report covers a single
          payout.
      payout_total_amount:
        type: number
        description: Total amount of this payout. This value is the same across all rows
          in the report, as each report covers a single payout.
      payout_date:
        type: string
        format: date-time
        description: Date and time the payout covered by this report was created, in
          [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC date-time
          format. This value is the same across all rows in the report, as each
          report covers a single payout.
  4fef0ad:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/6b43969"
    get:
      summary: Download report file
      operationId: downloadReportFile
      description: >-
        Use this endpoint to download the generated report file.


        A generated report file is available for 24 hours after report
        generation finishes. After that, the report run becomes `expired` and
        the file can no longer be downloaded.


        The response is a raw `text/csv` file. The first row contains the column
        headers. The columns included depend on the report type used when
        creating the report run, and the `options.columns` list if specified.


        ### IDs across report types


        Revolut uses two separate ID systems across report types:


        | ID column | System | Report types |

        | --------- | ------ | ------------ |

        | `payment_id`, `id` | **Acquiring system** - identifies a payment
        attempt | `payments_report`, `icpp_fee_breakdown_report` |

        | `transaction_id` | **Core ledger** - identifies the settlement entry
        created when a payment is captured | `settlement_report`,
        `payout_statement_report`, `custom_report` |

        | `order_id` | **Both systems** - bridges the acquiring and ledger
        perspectives | `settlement_report`, `payments_report`,
        `payout_statement_report`, `custom_report` |


        :::tip

        A payment and its resulting ledger transaction represent the same event
        but have **different UUIDs**. To reconcile `payments_report` data
        against `settlement_report` data, join on `order_id`.

        :::


        Use the schema selector below to see the available columns for each
        report type.
      responses:
        "200":
          description: OK
          content:
            text/csv:
              schema:
                oneOf:
                  - $ref: "#/x-ext/8921dd0"
                  - $ref: "#/x-ext/a67071a"
                  - $ref: "#/x-ext/556244c"
                  - $ref: "#/x-ext/fdeec3b"
                  - $ref: "#/x-ext/58d8019"
              examples:
                settlement_report:
                  $ref: "#/x-ext/4d33cb1"
                custom_report:
                  $ref: "#/x-ext/f589cea"
                payments_report:
                  $ref: "#/x-ext/a8d0fd0"
                payout_statement_report:
                  $ref: "#/x-ext/768a897"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Report runs
  1bde473:
    summary: Example webhook request
    value:
      url: https://example.com/webhooks
      events:
        - ORDER_COMPLETED
        - ORDER_AUTHORISED
  ac8c9d5:
    title: Webhook
    type: object
    description: >-
      A webhook object.


      Unlike the legacy API, `signing_secret` is included in all webhook
      responses, not only on creation.
    properties:
      id:
        $ref: "#/x-ext/dd0635b"
      url:
        $ref: "#/x-ext/e740564"
      events:
        $ref: "#/x-ext/a725038"
      signing_secret:
        $ref: "#/x-ext/48d07ca"
    required:
      - id
      - url
      - events
      - signing_secret
  "605e636":
    type: object
    required:
      - webhooks
    properties:
      webhooks:
        type: array
        description: List of webhooks.
        maxItems: 10
        items:
          $ref: "#/x-ext/ac8c9d5"
  a880249:
    summary: Webhook
    value:
      id: c6b981f4-53b3-47d5-9b24-4f87af1160eb
      url: https://example.com/webhooks
      events:
        - ORDER_AUTHORISED
        - ORDER_COMPLETED
      signing_secret: wsk_4jETWMz1g1b37gCONjNp84t2KSSIT7dK
  610feef:
    summary: List of webhooks
    value:
      webhooks:
        - id: 6fc8db62-6489-4470-a9e0-84b462fe3908
          url: https://revolut.com/webhooks
          events:
            - ORDER_COMPLETED
        - id: b466ab77-4932-4850-beb0-113bfc1166f8
          url: https://business.revolut.com/webhooks
          events:
            - ORDER_COMPLETED
            - ORDER_AUTHORISED
        - id: c6b981f4-53b3-47d5-9b24-4f87af1160eb
          url: https://example.com/webhooks
          events:
            - ORDER_AUTHORISED
            - ORDER_COMPLETED
  18e1dc1:
    name: webhook_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the webhook.
  329b2d1:
    title: Error
    type: object
    properties:
      errorId:
        type: string
        description: The ID of the error. You can share this ID with Revolut support for
          troubleshooting.
      timestamp:
        type: integer
        description: The date and time the error happened.
    required:
      - errorId
      - timestamp
  b2bc6d3:
    summary: Update a webhook
    value:
      url: https://example.com/webhooks/updated
      events:
        - ORDER_COMPLETED
        - ORDER_AUTHORISED
        - ORDER_CANCELLED
  275f608:
    summary: Webhook signing secret rotation request
    value:
      expiration_period: PT5H30M
  00efd08:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
      - $ref: "#/x-ext/18e1dc1"
    post:
      summary: Rotate a webhook signing secret
      operationId: rotateWebhookSigningSecret
      description: |-
        Rotate the `signing_secret` for a specific webhook.

        The updated signing secret is returned in the response as part of the full webhook object.

        :::info
        For more information, see [Tutorials: Verify the payload signature](/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature).
        :::
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                expiration_period:
                  type: string
                  format: duration
                  description: >-
                    The expiration period of the signing secret in the [ISO 8601
                    format](https://en.wikipedia.org/wiki/ISO_8601#Durations).


                    If defined, when the signing secret is rotated, it continues
                    to be valid until the expiration period passes.


                    Otherwise, it is invalidated immediately.


                    Maximum expiration period is 7 days.
                  examples:
                    - PT5H30M
            examples:
              webhook_signing_secret_rotate_request:
                $ref: "#/x-ext/275f608"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ac8c9d5"
              examples:
                updated_webhook:
                  $ref: "#/x-ext/a880249"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Webhooks
  6b0ce4e:
    title: SynchronousWebhook
    type: object
    properties:
      id:
        type: string
        format: uuid
        description: The ID of the synchronous webhook object.
      signing_key:
        type: string
        pattern: ^swsk_[a-zA-Z0-9]{32}$
        description: "A randomly generated signing key, which can be used by merchants
          to authenticate requests from Revolut by verifying the signature. For
          more information, see: [Payload
          Signature](/docs/api/merchant#authentication)."
      url:
        type: string
        format: uri
        pattern: ^https:\/{2}.+/gi
        maxLength: 2000
        description: >-
          The valid URL of the endpoint, that uses HTTPS URL schema. Revolut
          sends the shipping address of the customer to this URL for validation.


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `2000`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
      event_type:
        type: string
        enum:
          - fast_checkout.validate_address
        description: >-
          Type of event this synchronous webhook is configured for.


          :::note

          At the moment, synchronous webhooks only support address validation
          events. 

          :::
      location_id:
        $ref: "#/x-ext/38a61e6"
    required:
      - id
      - signing_key
      - url
      - event_type
  94aad59:
    name: synchronous_webhook_id
    in: path
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    required: true
    description: The ID of the synchronous webhook.
  048a83d:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/94aad59"
    delete:
      summary: Delete a synchronous webhook
      operationId: deleteSynchronousWebhook
      description: Delete a specific synchronous webhook registration, based on its ID.
      responses:
        "204":
          description: Synchronous webhook deleted
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Other
  741a418:
    name: type
    in: query
    schema:
      type: string
      enum:
        - online
        - physical
    description: Filter the list by location type.
  363f6bd:
    summary: Online location request example
    value:
      name: Grocery website
      type: online
      details:
        domain: groceries.example.com
  4a64a36:
    summary: Physical location request example
    value:
      name: Example Street Store
      type: physical
      details:
        address:
          street_line_1: 123 Example Street
          city: Example city
          postcode: "12345"
          country_code: GB
        geo_location:
          lat: 12.3456
          lon: -12.3456
        opening_hours:
          monday:
            - from: 09:00
              to: 15:00
            - from: 16:00
              to: 18:00
          tuesday:
            - from: 10:00
              to: 13:00
            - from: 16:00
              to: 18:00
  cf5e7ce:
    title: Location
    type: object
    description: Location object represents merchant locations depending on type.
    oneOf:
      - $ref: "#/x-ext/7acd6e0"
      - $ref: "#/x-ext/0cc5e9d"
    discriminator:
      propertyName: type
      mapping:
        online: ./Location-Online.yaml
        physical: ./Location-Physical.yaml
  dd56a7e:
    summary: Online location request example
    value:
      id: 8d9a7125-805f-40f3-a405-bc89765db996
      name: Grocery website
      type: online
      details:
        domain: groceries.example.com
  9ca09cb:
    summary: Physical location request example
    value:
      id: 8d9a7125-805f-40f3-a405-bc89765db996
      name: Example Street Store
      type: physical
      details:
        address:
          street_line_1: 123 Example Street
          city: Example city
          postcode: "12345"
          country_code: GB
        geo_location:
          lat: 12.3456
          lon: -12.3456
        opening_hours:
          monday:
            - from: 09:00
              to: 15:00
            - from: 16:00
              to: 18:00
          tuesday:
            - from: 10:00
              to: 13:00
            - from: 16:00
              to: 18:00
  4814d6b:
    name: location_id
    schema:
      type: string
      format: uuid
      description: A UUID string, typically used to identify resources.
    in: path
    required: true
    description: The ID of the location.
  fc6d57b:
    summary: List of terminals at a location
    value:
      terminals:
        - id: 0e53f673-7705-473a-a263-89a3e7647c3d
          name: Terminal 1
          type: newland_n950
          serial_number: RT-00123456
          battery_level: 85
          online: true
          last_online_at: 2025-01-15T14:30:00Z
        - id: a7b2c8d1-4e5f-6a7b-8c9d-0e1f2a3b4c5d
          name: Terminal 2
          type: newland_n950
          serial_number: RT-00123457
          battery_level: 92
          online: true
          last_online_at: 2025-01-15T14:32:00Z
  bdb9bd1:
    summary: Create payment intent request example
    value:
      amount: 2500
      terminal_id: 0e53f673-7705-473a-a263-89a3e7647c3d
  3375bfc:
    title: Payment Intent
    type: object
    description: >-
      Represents a payment intent that has been pushed to a Revolut Terminal
      device.


      When the payment intent reaches `completed` state, it includes a
      `payment_id` that can be used to [retrieve the final payment
      status](/docs/api/merchant#retrieve-payment-details).
    properties:
      id:
        $ref: "#/x-ext/021590b"
      state:
        $ref: "#/x-ext/826a913"
      terminal_id:
        $ref: "#/x-ext/6b77b6c"
      order_id:
        $ref: "#/x-ext/8ada47f"
      payment_id:
        $ref: "#/x-ext/a001704"
      amount:
        $ref: "#/x-ext/9730fdd"
      currency:
        $ref: "#/x-ext/1b2472a"
      created_at:
        type: string
        format: date-time
        description: The date and time the payment intent was created.
      updated_at:
        type: string
        format: date-time
        description: The date and time the payment intent was last updated.
    required:
      - id
      - order_id
      - state
      - amount
      - currency
      - terminal_id
      - created_at
      - updated_at
  a5e454b:
    summary: Payment intent pending
    value:
      id: b4d58add-b3fe-40e4-a70a-8c78df977888
      state: pending
      order_id: 5c9fc54e-11b4-4f7f-8686-4a64d4d20db4
      amount: 2500
      currency: GBP
  c639151:
    name: payment_intent_id
    in: path
    required: true
    description: The unique identifier of the payment intent.
    schema:
      $ref: "#/x-ext/021590b"
  693f7fa:
    summary: Payment intent processing
    value:
      id: b4d58add-b3fe-40e4-a70a-8c78df977888
      order_id: 5c9fc54e-11b4-4f7f-8686-4a64d4d20db4
      state: processing
      amount: 2500
      currency: GBP
      terminal_id: 0e53f673-7705-473a-a263-89a3e7647c3d
      created_at: 2025-01-15T11:01:00Z
      updated_at: 2025-01-15T11:02:15Z
  1934f11:
    summary: Payment intent completed
    value:
      id: b4d58add-b3fe-40e4-a70a-8c78df977888
      state: completed
      terminal_id: 0e53f673-7705-473a-a263-89a3e7647c3d
      order_id: 5c9fc54e-11b4-4f7f-8686-4a64d4d20db4
      payment_id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
      amount: 2500
      currency: GBP
      created_at: 2025-01-15T11:01:00Z
      updated_at: 2025-01-15T11:02:30Z
  3a33638:
    summary: Payment intent cancelled
    value:
      id: b4d58add-b3fe-40e4-a70a-8c78df977888
      state: cancelled
      terminal_id: 0e53f673-7705-473a-a263-89a3e7647c3d
      order_id: 5c9fc54e-11b4-4f7f-8686-4a64d4d20db4
      amount: 2500
      currency: GBP
      created_at: 2025-01-15T11:01:00Z
      updated_at: 2025-01-15T11:01:45Z
  3637d02:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
      - $ref: "#/x-ext/c639151"
    post:
      summary: Cancel a payment intent
      operationId: cancelPaymentIntent
      description: |-
        Cancel a payment intent while it's still in `pending` state, before the customer has completed the payment.

        This is useful if the customer changes their mind or if there's an issue with the order before payment is completed.

        :::warning
        **Requirements:**
        - Payment intent must be in `pending` state
        - Cannot cancel payment intents that are already `completed`, `cancelled`, or `failed`
        :::

        :::info
        For the complete push payments flow, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
        :::
      responses:
        "200":
          description: Payment intent cancelled
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3375bfc"
              examples:
                payment_intent_cancelled:
                  $ref: "#/x-ext/3a33638"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Payment intents
  59d80c8:
    summary: Payment intent failed
    value:
      id: b4d58add-b3fe-40e4-a70a-8c78df977888
      state: failed
      terminal_id: 0e53f673-7705-473a-a263-89a3e7647c3d
      order_id: 5c9fc54e-11b4-4f7f-8686-4a64d4d20db4
      amount: 2500
      currency: GBP
      created_at: 2025-01-15T11:01:00Z
      updated_at: 2025-01-15T11:03:00Z
  331c186:
    type: string
    description: >-
      Merchant order ID for external reference.


      Use this field to set the ID that your own system can use to easily track
      orders.
  4d4a20f:
    name: merchant_order_data_reference
    in: query
    schema:
      $ref: "#/x-ext/331c186"
    description: Filter orders by your own order reference set in
      `merchant_order_data.reference`.
    required: false
  e512ba4:
    type: string
    description: >-
      The state of the order in its lifecycle.


      | State | Description |

      |-------|-------------|

      | `pending` | Order created, awaiting payment |

      | `processing` | Payment is being processed |

      | `authorised` | Payment authorised but not yet captured (for manual
      capture) |

      | `completed` | Payment successfully captured and settled |

      | `cancelled` | Order was cancelled |

      | `failed` | Payment failed |


      For more information, see: [Order and payment
      lifecycle](/docs/guides/merchant/reference/order-lifecycle)
    enum:
      - pending
      - processing
      - authorised
      - completed
      - cancelled
      - failed
    examples:
      default:
        value: authorised
  e19a240:
    name: state
    in: query
    required: false
    explode: true
    description: >-
      Filter orders by state. Repeat the parameter to filter by multiple states.


      | Value | Description |

      |-------|-------------|

      | `pending` | Order created, awaiting payment |

      | `processing` | Payment is being processed |

      | `authorised` | Payment authorised but not yet captured (for manual
      capture) |

      | `completed` | Payment successfully captured and settled |

      | `cancelled` | Order was cancelled |

      | `failed` | Payment failed |
    schema:
      type: array
      items:
        $ref: "#/x-ext/e512ba4"
  7dfa842:
    type: integer
    description: >-
      The order total expressed in minor currency units, according to the [ISO
      4217 standard](https://en.wikipedia.org/wiki/ISO_4217). For example,
      `7034` in `EUR` corresponds to €70.34.


      :::info

      - Conversion 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).

      - If `line_items` are provided, the order `amount` must equal the sum of
      all line items' `total_amount`.

      - For card payments with a non-zero amount, the order `amount` must be at
      least **$0.005** (or equivalent in different currencies, calculated using
      Revolut's exchange rate on the payment date). Otherwise, card payments
      can't be performed.

      :::
  1b2472a:
    type: string
    format: ISO 4217
    minLength: 3
    maxLength: 3
    description: |-
      [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

      :::info
      For 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/).
      :::
  4da391a:
    type: string
    description: |-
      [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case. 

      If `settlement_currency` is different from the value of `currency`, the money will be exchanged when the amount is settled to your merchant account. In case of a refund or chargeback, the money will be exchanged to the order's initial `currency`.

      If `settlement_currency` is not specified, this value is taken from `currency`.

      :::info
      For 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/).
      :::
  a0887df:
    type: string
    description: The description of the order.
  f66f113:
    type: object
    description: >-
      Object containing information about a customer.


      If you have it, we strongly advise providing at least either `id`,
      `phone`, or `email`.


      Using the [Customers operations](/docs/api/merchant#tag-customers), you
      can manage customer instances.


      The following behaviours apply to different use cases:

        | Use case | API behavior |
        | -------- | ------------ |
        | Existing customer | If `id` was provided, we ignore other customer details and associate the customer with the order.<br/><br/>If either `email`, `phone`, or `full_name` was provided (without an existing customer's `id`), we always create a new customer, irrespective of another, existing customer object having the same details. |
        | New customer | If either `email`, `phone`, or `full_name` was provided, we create a new customer, irrespective of another customer object having the same details. <br/><br/>If `id` of a non-existent customer was provided, we return a `404` error, irrespective of other details provided. |

      :::note

      To avoid unintentional duplication of customer records, search for an
      existing customer by email or phone using the [List
      customers](/docs/api/merchant#retrieve-customer-list) endpoint first, then
      provide `customer.id` in the order.

      :::
    properties:
      id:
        type: string
        format: uuid
        description: >-
          Permanent ID of a customer used to retrieve, update, delete a
          customer. This ID can also be used to link customer to an order.


          :::note

          If you provide the customer's ID during order creation, no other
          customer data is required, they will be parsed automatically from the
          referenced customer object.

          :::
      full_name:
        $ref: "#/x-ext/0b50233"
      phone:
        $ref: "#/x-ext/e3f9143"
      email:
        $ref: "#/x-ext/7c3734e"
      date_of_birth:
        $ref: "#/x-ext/8f22aa4"
  d9d8857:
    type: string
    description: >-
      The enforce challenge mode. `automatic` is used by default.


      | Parameter value | Description |

      | --------------- | ----------- |

      | `automatic` | The payments created for an order will have challenge
      requirement calculated by our fraud mechanisms. Not all payments will
      trigger a 3DS challenge. |

      | `forced` | The payments created for an order will always require a 3DS
      challenge. Currently only supported for card payments. |
    default: automatic
    enum:
      - automatic
      - forced
  bca3068:
    type: array
    maxItems: 250
    description: >-
      An array of line items included in the order. Each line item represents an
      individual product or service, along with its quantity, price, taxes, and
      discounts.


      :::info

      Required for merchants collecting payment for one or multiple
      products/services in one transaction. Omitting this information may
      trigger additional scrutiny and risk mitigation actions by Revolut.

      :::
    items:
      $ref: "#/x-ext/a0e71d2"
  a437221:
    type: object
    description: >-
      Details about the shipping related to the order, including address,
      contact information, and individual shipments.


      :::info

      Required for merchants shipping physical goods. Omitting this information
      may trigger additional scrutiny and risk mitigation actions by Revolut.

      :::
    properties:
      address:
        $ref: "#/x-ext/7e82680"
      contact:
        $ref: "#/x-ext/1e4d41d"
      shipments:
        $ref: "#/x-ext/2c330f1"
  e3d4819:
    type: string
    description: >-
      The capture mode of the order. `automatic` is used by default.


      | Parameter value | Description |

      | --------------- | ----------- |

      | `automatic` | The order is captured automatically after payment
      authorisation. |

      | `manual` | The order is not captured automatically. You must manually
      capture the order later. |


      :::info

      For more information, see [Capture an
      order](/docs/api/merchant#capture-order).

      :::
    default: automatic
    enum:
      - automatic
      - manual
  "60768e8":
    type: string
    description: >-
      The type of authorisation for the order. Used with manual capture mode. If
      omitted, `final` is used by default.


      ### Pre-authorisation


      Pre-authorisation allows you to reserve funds on a customer's card without
      immediately capturing them. This is useful for scenarios like:


      - Hotel bookings where the final amount may vary

      - Car rentals where additional charges may apply

      - Deposits that need to be held temporarily


      | Parameter value | Description |

      | --------------- | ----------- |

      | `final` | Standard authorisation for immediate or near-immediate
      capture. |

      | `pre_authorisation` | Reserve funds for later capture, used with manual
      capture mode. |


      :::note

      Pre-authorisation must be used with `capture_mode: manual`. For more
      information, see [Capture an order](/docs/api/merchant#capture-order).

      :::
    default: final
    enum:
      - final
      - pre_authorisation
  bd14ecb:
    type: string
    format: duration
    description: >-
      Automatic cancellation period for uncaptured orders, specified in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format. 


      After this period, the authorised payment is automatically cancelled and
      the order is cancelled. Maximum: 7 days = `P7D`.


      :::note

      The following limitations apply:
        - Cannot be a negative value.
        - Cannot be updated if the new value is less than or equal to the elapsed time since authorisation. 

          **Failing scenario:**
            - Original value: 7 days
            - Time since authorisation: 3 days
            - Update value: 2 days
            
          In this scenario, an error is returned.
          
          **Successful scenario:**
            - Original value: 7 days
            - Time since authorisation: 3 days
            - Update value: 4 days

          In this scenario, the parameter can be updated.

        - Cannot be updated if cancellation is ≤ 30 minutes away.

          **Failing scenario:**
            - Original value: 12 hours
            - Time since authorisation: 11 hours 40 minutes
                              
          In this scenario, an error is returned.
          
          **Successful scenario:** 
            - Original value: 12 hours
            - Time since authorisation: 11 hours 20 minutes

          In this scenario, the parameter can be updated.
      :::
  9977eda:
    type: string
    format: duration
    description: >-
      Automatic expiration period for pending orders, specified in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.


      Orders in `pending` state will be automatically failed if they stay unpaid
      for longer than the period specified.


      When the order expires, it transitions to the `failed` state and an
      `ORDER_FAILED` webhook event is triggered.


      :::note

      - This field can only be set during order creation and cannot be updated
      afterward.

      - Must be between `PT1M` (1 minute) and `PT720H` (30 days).

      - Cannot be a negative value.

      :::
    examples:
      default:
        value: PT15M
  38a61e6:
    type: string
    format: uuid
    description: |-
      Unique ID representing the location where merchants sells products.

      :::info
      For more information, see: [Locations](/docs/api/merchant#tag-locations).
      :::        
  ec6c680:
    title: SynchronousWebhookCreation
    type: object
    description: >-
      The `SynchronousWebhook` object allows merchants to register endpoints on
      their backend for receiving predefined event types. Currently, only
      address validation events are available.


      In addition, merchants can specify locations representing their online
      stores, enabling them to set up different webhooks for different stores.
    properties:
      event_type:
        type: string
        enum:
          - fast_checkout.validate_address
        description: >-
          Type of event this synchronous webhook is configured for.


          :::note

          At the moment, synchronous webhooks only support address validation
          events. 

          :::
      url:
        type: string
        format: uri
        pattern: ^https:\/{2}.+/gi
        maxLength: 2000
        description: >-
          The valid URL of the endpoint, that uses HTTPS URL schema. Revolut
          sends the shipping address of the customer to this URL for validation.


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `2000`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
      location_id:
        $ref: "#/x-ext/38a61e6"
    required:
      - event_type
      - url
  a245669:
    parameters:
      - $ref: "#/x-ext/90b9838"
    post:
      summary: Register address validation endpoint for Fast checkout
      operationId: registerAddressValidationEndpoint
      description: >-
        Use this endpoint to register a URL where Revolut can send shipping
        address(es) from a Revolut Pay customer for validation during the [Fast
        checkout

        process](/docs/guides/merchant/optimise-checkout/fast-checkout).


        Revolut Pay can support Fast checkout for delivering goods. Once your
        customer selects a shipping address, Revolut needs to validate if the
        merchant (or their shipping partner) delivers to the address provided.
        This is done by contacting the merchant's backend and asking for such
        validation and information.


        In order for your backend to support Fast checkout, you need to:


        1. Register an URL to handle address validation

        1. Validate the shipping address sent to your backend

        1. Respond with a JSON object containing the result of the validation


        Additionally, Revolut Pay can support multiple webhooks if you have
        multiple stores. For more information, see:
          - [Manage multiple stores with Fast checkout](/docs/guides/merchant/optimise-checkout/fast-checkout#manage-multiple-stores-with-fast-checkout)
          - [Merchant API: Locations](/docs/api/merchant#tag-locations)

        :::note

        To set up a webhook for tracking order completion, failure, error, etc.
        events, use the [Webhooks endpoints](/docs/api/merchant#tag-webhooks).

        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/ec6c680"
            examples:
              create_webhook:
                summary: Create synchronous webhook
                value:
                  event_type: fast_checkout.validate_address
                  url: https://backend.example.com/webhooks/validate-address
              create_webhook_with_location_id:
                summary: Create synchronous webhook with location ID
                value:
                  event_type: fast_checkout.validate_address
                  url: https://backend.example.com/webhooks/validate-address
                  location_id: 8d9a7125-805f-40f3-a405-bc89765db996
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/6b0ce4e"
              examples:
                example_without_location:
                  summary: Synchronous webhook response
                  value:
                    id: f6abc4df-eb48-417c-8e75-f7c6d7ad394f
                    signing_key: swsk_y5z3LEHYZ9ndote3qegzWD6uL4t1lfp1
                    url: https://backend.example.com/webhooks/validate-address
                    event_type: fast_checkout.validate_address
                example_with_location:
                  summary: Synchronous webhook response with location ID
                  value:
                    id: f6abc4df-eb48-417c-8e75-f7c6d7ad394f
                    signing_key: swsk_y5z3LEHYZ9ndote3qegzWD6uL4t1lfp1
                    url: https://backend.example.com/webhooks/validate-address
                    event_type: fast_checkout.validate_address
                    location_id: b0ebede4-5cbc-4951-977f-70329faa8769
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
      security:
        - Api-Key: []
      tags:
        - Other
    get:
      summary: Retrieve a synchronous webhook list
      operationId: retrieveSynchronousWebhookList
      description: >-
        Retrieve a list of synchronous webhook objects.


        You can use this endpoint to see your different address validation
        endpoints registered to different locations.


        :::info

        For more information about locations, see: [Merchant API:
        Locations](/docs/api/merchant#tag-locations).

        :::
      responses:
        "200":
          description: Synchronous webhook list returned
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/x-ext/6b0ce4e"
              examples:
                example_without_location:
                  summary: List of synchronous webhooks
                  value:
                    - id: f6abc4df-eb48-417c-8e75-f7c6d7ad394f
                      signing_key: swsk_y5z3LEHYZ9ndote3qegzWD6uL4t1lfp1
                      url: https://example.com/webhooks/validate-address
                      event_type: fast_checkout.validate_address
                    - id: 5c08dcc1-cd60-4b7d-a255-e42d24d7365c
                      signing_key: swsk_VsuFcq6FIpa9gOWUu0n2WxiCbsDHIJlN
                      url: https://groceries.example.com/webhooks/validate-address
                      event_type: fast_checkout.validate_address
                      location_id: b0ebede4-5cbc-4951-977f-70329faa8769
                    - id: dbebe6f8-4c47-4176-a94f-576d76e1d0b6
                      signing_key: swsk_0TKYlzoakBgGGVvojCiRRqInMD1ufLZn
                      url: https://clothes.example.com/webhooks/validate-address
                      event_type: fast_checkout.validate_address
                      location_id: 6ebd3d2b-7a51-42e4-84f4-3c513621edd3
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
      security:
        - Api-Key: []
      tags:
        - Other
  c146ad0:
    type: object
    description: >-
      Additional information to track your orders in your system, by providing
      custom metadata using `"<key>" : "<value>"` pairs.


      :::warning

      **Restrictions:**


      - Both keys and values must be `string`s

      - Values cannot be `null`.

      - Max number of key-value pairs: `50`

      - Max length of values: `500` characters

      - Format of keys: Must start with a letter and contain only letters,
      digits, and underscores. Max 40 characters. Pattern:
      `^[a-zA-Z][a-zA-Z\\d_]{0,39}$`

      :::
    maxProperties: 50
    additionalProperties:
      type: string
      maxLength: 500
      description: Additional metadata value provided with the corresponding metadata key.
    examples:
      default:
        value:
          order_reference: ORD-12345
          customer_segment: premium
          internal_note: VIP customer - priority handling
  f93fd93:
    type: object
    description: >-
      Object containing industry-specific information associated with the order.


      You can provide data for one or multiple industries in a single order.


      :::info

      In the following cases, industry-specific info is required. Omitting this
      information may trigger additional scrutiny and risk mitigation actions by
      the Revolut risk team.

        | Transaction type | Required for |
        | ---------------- | ----------- |
        | `airline`        | Airlines and Online Travel Agencies (OTAs). |
        | `car_rental`     | Car Rental Merchants and Online Travel Agencies (OTAs). |
        | `crypto`         | Crypto merchants. |
        | `marketplace`    | Marketplace merchants. |
        | `event`          | Event ticket sellers. |
        | `lodging`        | Lodging providers. |
      :::
    properties:
      airline:
        $ref: "#/x-ext/1c15274"
      car_rental:
        $ref: "#/x-ext/48e60dd"
      crypto:
        $ref: "#/x-ext/62e9a8b"
      marketplace:
        $ref: "#/x-ext/72cc128"
      event:
        $ref: "#/x-ext/b5c2fad"
      lodging:
        $ref: "#/x-ext/0eba7e9"
  31aea79:
    type: object
    description: "Object for providing additional information stored in the
      merchant's order management system. "
    properties:
      url:
        $ref: "#/x-ext/9a48b63"
      reference:
        $ref: "#/x-ext/331c186"
  7d308f4:
    type: object
    description: Object containing information about upcoming payments associated
      with the order.
    properties:
      date:
        type: string
        format: date-time
        description: The date and time in [ISO 8601
          format](https://en.wikipedia.org/wiki/ISO_8601) when the upcoming
          payment is scheduled to be executed.
      payment_method_id:
        type: string
        description: >-
          The unique ID of the customer's payment method used to complete the
          scheduled payment.


          :::info

          For more information about operations related to customer's payment
          methods, see:
            - [Retrieve payment method list of a customer](/docs/api/merchant#retrieve-payment-method-list)
            - [Retrieve a customer's payment method](/docs/api/merchant#retrieve-payment-method)
            - [Update a customer's payment method](/docs/api/merchant#update-payment-method)
            - [Delete a customer's payment method](/docs/api/merchant#delete-payment-method)
          :::
    required:
      - date
      - payment_method_id
  25c3c73:
    type: string
    format: uri
    pattern: ^https?:\/{2}.+/gi
    maxLength: 2000
    description: |-
      The URL your customer will be redirected to after a successful payment on the hosted checkout page (`checkout_url` parameter's value of the order).

      :::warning
      Restrictions:
      - Must be a valid URI as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986)
      - URI scheme is required and must be either `http` or `https`
      - URI host is required and cannot be `localhost` or an IP address
      - Max length: `2000`
      - Reserved or invalid characters must be percent-encoded (for example, use `%20` instead of a space)
      :::

      :::info
      For more information on how to use the `redirect_url`, see: [Custom redirection via the API](/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/api#custom-post-payment-redirection-optional)
      :::
  52074cd:
    type: string
    description: >-
      You can set a dynamic statement descriptor for your orders by providing a
      custom suffix. 


      A statement descriptor is the text shown on cardholders' bank or card
      statements, helping them recognise a transaction or merchant. This field
      can be used to send extra information with the statement descriptor for
      card transactions.


      The complete descriptor is built using the following format:
      `{base}*{suffix}`, where:
        
        - **`{base}`** is the existing descriptor configured in the Revolut Business dashboard (**Settings > Business account > Merchant profile > Statement descriptor**).  
        - **`{suffix}`** is defined by the `statement_descriptor_suffix` field.

      :::note

      - If the combined descriptor's length (base + suffix) exceeds the
      character limits of card scheme providers, the final value will be
      truncated. For example if the limit is 22 characters, the base descriptor
      is `"base"` and the suffix is `"testdescriptorsuffix"`, the final
      descriptor becomes `"base*testdescriptorsuf"`.

      - The final statement descriptor shown on a cardholder's statement may
      vary by issuing bank, as some banks apply their own custom formatting or
      truncation rules.

      :::
    minLength: 1
    maxLength: 19
    pattern: ^[^*\n\r\\]+$
  2fff4ea:
    type: object
    description: Object schema containing information about order update body
      request parameters.
    properties:
      amount:
        $ref: "#/x-ext/7dfa842"
      currency:
        $ref: "#/x-ext/1b2472a"
      settlement_currency:
        $ref: "#/x-ext/4da391a"
      description:
        $ref: "#/x-ext/a0887df"
      customer:
        $ref: "#/x-ext/f66f113"
      enforce_challenge:
        $ref: "#/x-ext/d9d8857"
      line_items:
        $ref: "#/x-ext/bca3068"
      shipping:
        $ref: "#/x-ext/a437221"
      capture_mode:
        $ref: "#/x-ext/e3d4819"
      cancel_authorised_after:
        $ref: "#/x-ext/bd14ecb"
      expire_pending_after:
        $ref: "#/x-ext/9977eda"
      metadata:
        $ref: "#/x-ext/c146ad0"
      industry_data:
        $ref: "#/x-ext/f93fd93"
      merchant_order_data:
        $ref: "#/x-ext/31aea79"
      upcoming_payment_data:
        $ref: "#/x-ext/7d308f4"
      redirect_url:
        $ref: "#/x-ext/25c3c73"
      statement_descriptor_suffix:
        $ref: "#/x-ext/52074cd"
  5a68453:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/6ebce25"
    get:
      summary: Retrieve an order
      operationId: retrieveOrder
      description: >-
        Retrieve the details of an order that has been created. Provide the
        unique

        order ID, and the corresponding order information is returned.
      responses:
        "200":
          description: Order retrieved
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                example_order_min_params:
                  $ref: "#/x-ext/e8e192f"
                example_order_additional:
                  $ref: "#/x-ext/8bef905"
                example_order_pre_auth:
                  $ref: "#/x-ext/cfb7391"
                example_order_line_items:
                  $ref: "#/x-ext/312ca55"
                example_order_shipping:
                  $ref: "#/x-ext/72aed61"
                example_order_airline:
                  $ref: "#/x-ext/147ace7"
                example_order_car_rental:
                  $ref: "#/x-ext/11b2c83"
                example_order_crypto:
                  $ref: "#/x-ext/4f45ac1"
                example_order_marketplace:
                  $ref: "#/x-ext/d9c197e"
                example_order_event:
                  $ref: "#/x-ext/10620c4"
                example_order_lodging:
                  $ref: "#/x-ext/d17e5f9"
                example_order_multi_industry:
                  $ref: "#/x-ext/a613f42"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                example-1:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order with id abfa5bbd-a20c-4a0e-be66-30e733454518 was not found
                    timestamp: 1721050063886
      tags:
        - Orders
      security:
        - Api-Key: []
    patch:
      summary: Update an order
      operationId: updateOrder
      description: |-
        Update the details of an order.

        You can update an order and specific parameters based on the value of the `state` parameter:

        | State parameter value | Modifiable parameters |
        | --------------------- | --------------------- |
        | `pending` | You can modify all listed parameters. |
        | `authorised` | You can modify the following parameters: <br /><br /> <ul><li>`merchant_order_data.reference`</li><li>`description`</li><li>`metadata`</li><li>`shipping`</li><li>`industry_data`</li><li>`cancel_authorised_after`</li></ul> |
        | `completed` | You can modify the following parameters: <br /><br /> <ul><li>`merchant_order_data.reference`</li><li>`description`</li><li>`metadata`</li><li>`shipping`</li><li>`industry_data`</li></ul> |
        | `processing` | You cannot modify parameters. |

        :::info
        For more information about the order lifecycle, see: [Order and payment lifecycle](/docs/guides/merchant/reference/order-lifecycle).
        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/2fff4ea"
            examples:
              example_update_order:
                summary: Example order update
                value:
                  amount: 1000
                  currency: EUR
                  settlement_currency: GBP
                  capture_mode: manual
                  cancel_authorised_after: P3D
                  metadata:
                    example_key: example_value
                  merchant_order_data:
                    url: https://example.com/orders/12345
                  statement_descriptor_suffix: "12345"
      responses:
        "200":
          description: Order updated
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                example_order_updated:
                  summary: Example order update response
                  value:
                    id: 651a941a-02ef-af6f-9b6c-458c652e2c6a
                    token: 0aa685ee-8d86-441d-bedd-3f7fbf41731b
                    type: payment
                    state: pending
                    created_at: 2023-10-02T09:57:46.498026Z
                    updated_at: 2023-10-02T11:54:46.648414Z
                    amount: 1000
                    currency: EUR
                    outstanding_amount: 1000
                    settlement_currency: GBP
                    capture_mode: manual
                    cancel_authorised_after: P3D
                    checkout_url: https://checkout.revolut.com/payment-link/0aa685ee-8d86-441d-bedd-3f7fbf41731b
                    metadata:
                      example_key: example_value
                    enforce_challenge: automatic
                    merchant_order_data:
                      url: https://example.com/orders/12345
                    statement_descriptor_suffix: "12345"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1721049596461
          headers: {}
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order with id abfa5bbd-a20c-4a0e-be66-30e733454518 was not found
                    timestamp: 1721050063886
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: order_invalid_state
                    message: Operation cannot be performed because order is in completed state and
                      expected is [pending]
                    timestamp: 1721049952145
      tags:
        - Orders
      security:
        - Api-Key: []
  8ada47f:
    type: string
    format: uuid
    description: Permanent order ID used to retrieve, capture, cancel, or refund an
      order after authorization.
  db8ab7a:
    type: string
    description: |-
      Temporary ID for the order, which expires when the payment is authorised.

      The order `token` is used for [token-based initialisation](/docs/sdks/merchant-web-sdk/initialisation/token-based), and is returned by the `createOrder` callback in the following payment methods:

      - [Embedded Checkout](/docs/sdks/merchant-web-sdk/payment-methods/embedded-checkout#embeddedcheckout options-interface)
      - [Revolut Pay](/docs/sdks/merchant-web-sdk/payment-methods/revolut-pay#widgetpaymentsrevolutpayoptions)
      - [Apple Pay and Google Pay](/docs/sdks/merchant-web-sdk/payment-methods/apple-pay-google-pay#paymentrequestoptions-interface)
      - [Pay by Bank](/docs/sdks/merchant-web-sdk/payment-methods/pay-by-bank#paybybankoptions-interface)
  704e5bd:
    type: string
    description: The type of the order.
    enum:
      - payment
      - payment_request
      - refund
      - chargeback
      - chargeback_reversal
      - credit_reimbursement
  6758f6f:
    type: integer
    description: >-
      The amount not yet paid for a given order (in minor currency units). For
      example, `7034` represents €70.34. 


      The value in this field may differ from `amount` if there are partial
      payments associated with the order.
  c660be4:
    type: integer
    description: >-
      The amount that was refunded from the order (in minor currency units). For
      example, `7034` represents €70.34. 


      This applies to orders that have been refunded (i.e., orders of type
      `payment` that have a related `refund` order).
  a571331:
    type: string
    description: Link to a checkout page hosted by Revolut.
    format: uri
  c351b6d:
    type: string
    format: uuid
    description: >-
      The unique ID of the original order that was refunded and this refund is
      associated with. You can use this ID to get more information about the
      related order using the [Retrieve an
      order](/docs/api/merchant#retrieve-order) operation.


      :::note

      This field is only returned for orders with `type: refund`.

      :::
  6b94aa2:
    type: object
    description: >-
      Represents a payment for an order.


      For pre-authorised payments, the `authorised_amount` field tracks the
      currently authorised amount, which may differ from `amount` during
      incremental authorisation processing.
    properties:
      id:
        $ref: "#/x-ext/a001704"
      state:
        $ref: "#/x-ext/9ebf295"
      decline_reason:
        $ref: "#/x-ext/67d79e0"
      bank_message:
        $ref: "#/x-ext/f555917"
      created_at:
        $ref: "#/x-ext/2df9c77"
      updated_at:
        $ref: "#/x-ext/a450668"
      token:
        $ref: "#/x-ext/d21286a"
      amount:
        $ref: "#/x-ext/f26cba6"
      authorised_amount:
        $ref: "#/x-ext/8038e80"
      currency:
        $ref: "#/x-ext/1b2472a"
      settled_amount:
        $ref: "#/x-ext/ff17c84"
      settled_currency:
        $ref: "#/x-ext/be93062"
      payment_method:
        $ref: "#/x-ext/f8a2cbb"
      authentication_challenge:
        $ref: "#/x-ext/3e78e0d"
      billing_address:
        $ref: "#/x-ext/00ce429"
      risk_level:
        $ref: "#/x-ext/24b2457"
      fees:
        $ref: "#/x-ext/87bb99b"
      payer:
        $ref: "#/x-ext/b19be60"
    required:
      - id
      - state
      - created_at
      - updated_at
      - amount
  6c0380b:
    type: object
    description: >-
      Represents a payment for an order.


      For pre-authorised payments, the `authorised_amount` field tracks the
      currently authorised amount, which may differ from `amount` during
      incremental authorisation processing.
    properties:
      $ref: "#/x-ext/6b94aa2/properties"
      order_id:
        type: string
        format: uuid
        description: The ID of the associated order.
    required:
      - id
      - state
      - created_at
      - updated_at
      - amount
  eab0502:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/ca9e6a1"
      - $ref: "#/x-ext/a200791"
    get:
      summary: Retrieve payment details
      operationId: retrievePaymentDetails
      description: >-
        Retrieve information about a specific payment, based on the payment's
        ID.


        Use this endpoint to track a payment's lifecycle, for example:
          - When you develop a [1-click checkout process](/docs/guides/merchant/optimise-checkout/save-payment-methods/checkout-with-saved-card)
          - When you build a [subscription management system](/docs/guides/merchant/optimise-checkout/save-payment-methods/subscription-management)
      responses:
        "200":
          description: Payment details
          content:
            application/json:
              schema:
                $ref: "#/x-ext/6c0380b"
              examples:
                revolut_pay_saved:
                  summary: Payment completed via Revolut Pay (card, saved details)
                  value:
                    id: 6633855a-0e4f-a768-8b2c-e765d8872505
                    state: captured
                    created_at: 2024-05-02T12:21:46.638369Z
                    updated_at: 2024-05-02T12:21:55.198089Z
                    token: 0b277730-8b3c-48d4-ab63-8903f40ee520
                    amount: 100
                    currency: GBP
                    settled_amount: 77
                    settled_currency: GBP
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 23
                        currency: GBP
                    payment_method:
                      id: 6633855a-3b39-ad95-9782-cd1327ffa0e7
                      type: revolut_pay_card
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                      card_brand: visa
                      funding: credit
                      card_country_code: MT
                      card_bin: "123456"
                      card_last_four: "1234"
                      card_expiry: 12/28
                      cardholder_name: Example Holder
                      checks:
                        three_ds:
                          eci: "06"
                          state: verified
                          version: 2
                    order_id: 66338534-28a7-a68e-b312-43722430df1b
                revolut_pay_not_saved:
                  summary: Payment completed via Revolut Pay (account, not saved details)
                  value:
                    id: 66338688-fd73-a358-a82d-97da413c5325
                    state: captured
                    created_at: 2024-05-02T12:26:48.134039Z
                    updated_at: 2024-05-02T12:26:49.514594Z
                    token: 8061e645-35e0-42bb-8318-603abaeab7b7
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      type: revolut_pay_account
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                    order_id: 6633865d-d911-a98c-8715-425f8731640c
                apple_tap_to_pay:
                  summary: Payment declined via Apple Tap to Pay
                  value:
                    id: 66338688-fd73-a358-a82d-97da413c5325
                    state: declined
                    created_at: 2024-05-02T12:26:48.134039Z
                    updated_at: 2024-05-02T12:26:49.514594Z
                    token: 8061e645-35e0-42bb-8318-603abaeab7b7
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      type: apple_tap_to_pay
                      failure_reason: pin_data_required
                    order_id: 6633865d-d911-a98c-8715-425f8731640c
                apple_pay:
                  summary: Payment completed via Apple Pay
                  value:
                    id: 66338688-fd73-a358-a82d-97da413c5325
                    state: captured
                    created_at: 2024-05-02T12:26:48.134039Z
                    updated_at: 2024-05-02T12:26:49.514594Z
                    token: 8061e645-35e0-42bb-8318-603abaeab7b7
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      type: apple_pay
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                    order_id: 6633865d-d911-a98c-8715-425f8731640c
                google_pay:
                  summary: Payment completed via Google Pay
                  value:
                    id: 66338688-fd73-a358-a82d-97da413c5325
                    state: captured
                    created_at: 2024-05-02T12:26:48.134039Z
                    updated_at: 2024-05-02T12:26:49.514594Z
                    token: 8061e645-35e0-42bb-8318-603abaeab7b7
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      type: google_pay
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                    order_id: 6633865d-d911-a98c-8715-425f8731640c
                card_payment_saved:
                  summary: Payment completed via card (saved details)
                  value:
                    id: 663387f1-1c2e-a295-b143-9f1fb1eec175
                    state: captured
                    created_at: 2024-05-02T12:32:49.033945Z
                    updated_at: 2024-05-02T12:32:57.003519Z
                    token: 294358bf-3818-49b2-aacc-7ca971f52695
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      id: 663387f1-c91e-a464-908a-1cc4548ebc6a
                      type: card
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                      card_brand: visa
                      funding: credit
                      card_country_code: GB
                      card_bin: "123456"
                      card_last_four: "1234"
                      card_expiry: 12/30
                      cardholder_name: Test Holder
                      checks:
                        three_ds:
                          eci: "06"
                          state: verified
                          version: 2
                        cvv_verification: match
                        address: match
                        postcode: match
                        cardholder: n_a
                    order_id: 663387bd-8484-ac57-93a7-3751dc154bbc
                card_payment_not_saved:
                  summary: Payment completed via card (not saved details)
                  value:
                    id: 663387f1-1c2e-a295-b143-9f1fb1eec175
                    state: captured
                    created_at: 2024-05-02T12:32:49.033945Z
                    updated_at: 2024-05-02T12:32:57.003519Z
                    token: 294358bf-3818-49b2-aacc-7ca971f52695
                    amount: 100
                    currency: GBP
                    settled_amount: 79
                    settled_currency: GBP
                    billing_address:
                      street_line_1: 123 Example Street
                      street_line_2: Building A, 3rd Floor
                      city: Example City
                      region: Example Region
                      country_code: GB
                      postcode: E14 4HD
                    risk_level: low
                    fees:
                      - type: acquiring
                        amount: 21
                        currency: GBP
                    payment_method:
                      type: card
                      fingerprint: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
                      card_brand: visa
                      funding: credit
                      card_country_code: GB
                      card_bin: "123456"
                      card_last_four: "1234"
                      card_expiry: 12/30
                      cardholder_name: Test Holder
                      checks:
                        three_ds:
                          eci: "06"
                          state: verified
                          version: 2
                        cvv_verification: match
                        address: match
                        postcode: match
                        cardholder: n_a
                    order_id: 663387bd-8484-ac57-93a7-3751dc154bbc
                card_three_ds_fingerprint:
                  $ref: "#/x-ext/28df10f"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorId:
                    type: string
                    description: |-
                      The ID of the error. You can share this ID with Revolut
                      support for troubleshooting.
                  timestamp:
                    type: integer
                    description: The date and time the error happened.
              examples:
                example-1:
                  value:
                    errorId: 94b27660-fdda-49ec-8b85-cd46a068ade0
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorId:
                    type: string
                    description: |-
                      The ID of the error. You can share this ID with Revolut
                      support for troubleshooting.
                  timestamp:
                    type: integer
                    description: The date and time the error happened.
                  code:
                    type: integer
              examples:
                example-1:
                  value:
                    errorId: 94b27660-fdda-49ec-8b85-cd46a068ade0
                    timestamp: 1601296792533
                    code: 1024
      security:
        - Api-Key: []
      tags:
        - Payments
  22fa5f7:
    type: integer
    minimum: 1
    description: >-
      The new total amount to be authorised (in minor units, e.g., cents).


      This should be the **full new amount**, not the increment value.

      For example, if the current authorised amount is `500` and you want to add
      100, pass `600`.


      :::warning

      - Must be greater than or equal to the current authorised amount
      (incrementing with same amount allowed to extend capture deadline for
      Mastercard)

      - The sum of all increment amounts cannot exceed 5x the initial authorised
      amount (e.g., initial amount £100 allows up to £500 in total increments)

      :::
    examples:
      default:
        value: 600
  a7167a9:
    type: string
    maxLength: 255
    description: >-
      External reference for this incremental authorisation.


      :::tip

      Use your internal charge or invoice ID. This reference is returned in
      webhooks for easy matching to your system.

      :::
    examples:
      default:
        value: CHG-67890
  a378ff5:
    type: object
    properties:
      amount:
        $ref: "#/x-ext/22fa5f7"
      reference:
        $ref: "#/x-ext/a7167a9"
      line_items:
        $ref: "#/x-ext/bca3068"
    required:
      - amount
  d6a5e57:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Increment authorisation
      operationId: incrementAuthorisation
      description: |-
        Increase the authorised amount on a pre-authorised order.

        This operation allows you to increment the authorised amount for orders created with `authorisation_type: pre_authorisation` and `capture_mode: manual`.

        :::note
        Currently, only card payments are supported.
        :::

        ### Common use-cases

        - Hotel additional charges (e.g., minibar, room service)
        - Car rental damage or fuel charges
        - Equipment rental extensions

        ### How it works

        1. Create an order with `capture_mode: manual` and `authorisation_type: pre_authorisation`
        1. Take payment using one of our card payment solutions
        1. When payment/order reaches `authorised` state, you can increment authorised amount
        1. When no more increments are expected, [capture the order](/docs/api/merchant/2026-03-12#capture-order) to complete the transaction

        :::warning
        - Can only increment orders in `authorised` state
        - Must have `authorisation_type: pre_authorisation` and `capture_mode: manual`
        - Sum of all increment amounts cannot exceed 5x the initial amount
        - Maximum 10 increments per order
        - Process increments sequentially to avoid declines
        - Currently only supported for card payments
        :::

        :::info
        For more information, see: [Incremental authorisation guide](/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation)
        :::
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/a378ff5"
            examples:
              basic_increment:
                $ref: "#/x-ext/c2c6e40"
              increment_with_additional:
                $ref: "#/x-ext/b947f42"
      responses:
        "200":
          description: Authorization increment initiated successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                increment_in_progress:
                  $ref: "#/x-ext/d840984"
                increment_authorised:
                  $ref: "#/x-ext/e19e106"
                increment_declined:
                  $ref: "#/x-ext/8817c1e"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                invalid_amount:
                  value:
                    code: validation
                    message: "New amount: 3 should be greater or equal to order amount: 500"
                    timestamp: 1768397646286
        "404":
          description: Order not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order not found
                    timestamp: 1768397646286
        "422":
          description: Unprocessable Entity - Order state doesn't allow increment
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                invalid_state:
                  summary: Invalid state
                  value:
                    code: bad_state
                    message: No authorised card not present payment found for order
                      69732536-0379-a2e2-8983-15e7184f8fc6.
                    timestamp: 1768397646286
                invalid_auth_type:
                  summary: Wrong authorisation type
                  value:
                    code: order_invalid_authorisation_type
                    message: Operation cannot be performed for order
                      697325ca-a9a2-a922-8df5-c603664da5a5 because order
                      authorisation type is final and expected is
                      pre_authorisation
                    timestamp: 1768397646286
      tags:
        - Orders
      security:
        - Api-Key: []
  77f28ee:
    type: integer
    description: >-
      Specify an amount to capture, in minor currency units. The amount must not
      exceed the authorised amount.


      An order can only be captured once. Partial capture is supported by
      sending an amount lower than the authorised amount. The uncaptured amount
      will be voided.


      If you resend a capture request for an order that is already captured, no
      additional capture is performed. Resending with the same amount returns
      the current order state, while resending with a different amount returns
      an error.


      If not provided, it defaults to the authorised amount (full capture will
      be executed).
  7f96b03:
    type: object
    description: >-
      Order capture request parameters.


      You can optionally provide line items when capturing an order. This is
      useful when you need to adjust the final order details at capture time
      (for example, when doing partial captures with specific items, or when the
      final delivered items differ from the initial authorisation).


      :::warning

      If you provide `line_items` when capturing, they will **overwrite** the
      original line items that were provided during order creation or update.
      Make sure to include all the items you want to be associated with the
      captured order.

      :::
    properties:
      amount:
        $ref: "#/x-ext/77f28ee"
      line_items:
        $ref: "#/x-ext/bca3068"
  cd8ec16:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Capture an order
      operationId: captureOrder
      description: |-
        This endpoint is used to capture the funds of an existing, uncaptured order. When the payment for an order is authorised, you can capture the order to send it to the processing stage.

        :::info
        For more information about the order and payment lifecycle, see: [Order and payment
        lifecycle](/docs/guides/merchant/reference/order-lifecycle).
        :::

        ## Capture modes

        When you [create an order](/docs/api/merchant/2026-03-12#create-order), you can choose one of the following capture modes:

          | **Capture mode** | **Description** |
          | ---------------- | --------------- |
          | `automatic` | The order is captured automatically after payment authorisation. No further actions are needed. |
          | `manual` | The order is not captured automatically and stays in `authorised` state. You must manually capture the order using the steps outlined below. |

        :::warning
        By default, uncaptured orders with **final authorisation** (`authorisation_type: final`) remain in `authorised` state for **7 days**. If not captured within this period, the funds are returned to the customer's original payment method.

        The capture deadline can be customised:
        - Use `cancel_authorised_after` parameter when creating an order to set a custom expiry period
        - The effective deadline is the earlier of `cancel_authorised_after` and the card/network clearing window
        - `capture_deadline` is set when the order becomes `authorised` and doesn't change afterwards
        - Use **pre-authorisation** (`authorisation_type: pre_authorisation`) for extended clearing windows (up to 30 days) and incremental authorisation support (see tip below)
        :::

        :::tip [Extended clearing windows]
        If your business requires longer authorisation hold periods (up to 30 days depending on card scheme and MCC), use [pre-authorisation](/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation) instead of standard authorisation. Pre-authorisation also supports [incremental authorisation](/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation) for variable-amount scenarios.
        :::

        ### Manual capture

        To capture an order manually, use one of the following methods:

        | **Web UI** | **Merchant API** |
        | ---------- | ------------ |
        | <ol><li>Log in to your [Revolut Business portal](https://business.revolut.com).</li><li>Navigate to the **Merchant** tab on the dashboard, and click the **See all** button in the **Transactions** section.</li><li>Select an uncaptured payment, and click **Capture**.</li></ol> | Use the `/capture` endpoint. |

        :::info
        For more information about manually capturing an order, see: [Authorise an amount to capture
        later](/docs/guides/merchant/operations/capture-and-settlement/capture-later).
        :::

        #### Partial capture

        You have the option to capture only a fraction of the full amount. In such cases, the uncaptured portion of the amount will be voided.

        :::warning
        The following limitations apply to manual captures:
          - An order can only be captured once
          - Captured amount can't exceed the authorised amount
          - On Web UI, only capturing full amount is possible
          - `0` amount captures are not allowed
          - For partial captures, you can only resend the request with the initial amount
        :::

        #### Updating line items at capture

        You can optionally provide `line_items` when capturing an order. This allows you to adjust the final order details at the time of capture, which is useful for scenarios such as:
        - **Partial captures:** Specify which items are being captured when capturing less than the full amount. Line items help accurately reflect which items were captured versus voided (see [Partial capture](#partial-capture) above).
        - **Final adjustments:** Update order details when the delivered items differ from the initial authorisation (e.g., out-of-stock items, substitutions, quantity changes).

        :::warning
        If you provide `line_items` when capturing, they will **overwrite** the original line items provided during order creation or update. Ensure you include all items you want associated with the captured order.
        :::

        :::info
        For a comprehensive guide including use cases and examples, see: [Authorise a payment to capture later](/docs/guides/merchant/operations/capture-and-settlement/capture-later#update-line-items-at-capture).
        :::

        ## Idempotency and repeated requests

        The capture operation is idempotent. This means that an order can only be captured once. If you send a capture request more than once:

        - The first valid request captures the order and moves it to the processing stage.
        - Any subsequent request with the same capture amount will not recapture funds and behaves like a [Retrieve an order](/docs/api/merchant/2026-03-12#retrieve-order) request, returning the current order state.
        - A subsequent request with a different capture amount returns an error.

        :::info
        Utilising the idempotent nature of this endpoint helps maintain data consistency and prevents duplicate processing of the same order.
        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/7f96b03"
            examples:
              example_minimal:
                $ref: "#/x-ext/a441f72"
              example_with_line_items:
                $ref: "#/x-ext/797e8ac"
      responses:
        "200":
          description: Order captured
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                captured_order_minimal:
                  $ref: "#/x-ext/a64baa6"
                captured_order_line_items:
                  $ref: "#/x-ext/de68965"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                example-1:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order with id abfa5bbd-a20c-4a0e-be66-30e733454518 was not found
                    timestamp: 1721050063886
      security:
        - Api-Key: []
      tags:
        - Orders
  61d5af5:
    type: integer
    description: The amount to be refunded, specified in the smallest currency unit
      (e.g., cents for USD, pence for GBP).
    examples:
      default:
        value: 100
  a757ff6:
    type: string
    format: ISO 4217
    minLength: 3
    maxLength: 3
    description: |-
      [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

      **Must match the `currency` of the original order to be refunded.**

      :::info
      For 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/).
      :::
  4a2bbb0:
    type: object
    description: The request body for creating a refund order.
    required:
      - amount
      - currency
    properties:
      amount:
        $ref: "#/x-ext/61d5af5"
      currency:
        $ref: "#/x-ext/a757ff6"
      merchant_order_data:
        type: object
        description: Object for providing additional information stored in the
          merchant's order management system.
        properties:
          reference:
            $ref: "#/x-ext/331c186"
      metadata:
        $ref: "#/x-ext/c146ad0"
      description:
        type: string
        description: An optional, user-facing description for the refund. This may be
          displayed to the customer.
        examples:
          - Refund for returned item.
  a2b7603:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/c0cdbbb"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Refund an order
      operationId: refundOrder
      description: >-
        Issue a refund for a completed order. This operation allows for either a
        full or partial refund, which will be processed back to the customer's
        original payment method.


        - The refund operation generates a new order with `type: refund`. This
        new order represents a full or partial refund of the original amount
        paid.

        - Multiple partial refunds can be issued for a single order, given the
        total refunded amount does not exceed the original order amount.

        - Refund orders will contain `related_order_id` which links to the
        original order that was refunded.

        - Refunds can only be initiated for orders that are in a `completed`
        state. Orders in any other state are not eligible for refunds to ensure
        transaction integrity and to prevent errors.


        :::note

        Consider using the `Idempotency-Key` header to make the refund operation
        idempotent, preventing duplicate refund processing in cases of multiple
        submissions.

        :::


        :::info

        For more information see our [Refund
        payments](/docs/guides/merchant/operations/refunds) guide.

        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/4a2bbb0"
            examples:
              refund_with_minimal_params:
                $ref: "#/x-ext/577a81b"
              refund_with_additional_params:
                $ref: "#/x-ext/c37b2bb"
      responses:
        "201":
          description: Refund order successfully created
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                refund_with_minimal_params:
                  $ref: "#/x-ext/a249556"
                refund_with_additional_params:
                  $ref: "#/x-ext/9d28e53"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1750265245422
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1750265245422
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: Order with id 6852e963-0009-a5a4-9609-50b3addc5425 was not found
                    timestamp: 1750265369820
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Orders
  0b50233:
    type: string
    description: The full name of the customer.
  7c3734e:
    type: string
    format: email
    description: The email address of the customer.
  e3f9143:
    type: string
    description: The phone number of the customer in [E.164
      format](https://en.wikipedia.org/wiki/E.164).
  8f22aa4:
    type: string
    format: date
    description: The birth date of the customer.
  d43bbd4:
    title: Customer update
    type: object
    description: >-
      The request body for updating a customer.


      All fields are optional. Only the fields provided in the request will be
      updated.


      :::note

      `business_name` is not supported in this version of the API.

      :::
    properties:
      full_name:
        $ref: "#/x-ext/0b50233"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      date_of_birth:
        $ref: "#/x-ext/8f22aa4"
  2974b8b:
    title: Customer creation
    type: object
    description: The request body for creating a customer.
    properties:
      full_name:
        $ref: "#/x-ext/0b50233"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      date_of_birth:
        $ref: "#/x-ext/8f22aa4"
    required:
      - email
  fbf1277:
    type: string
    format: uuid
    description: Unique identifier for the customer.
  2a7879f:
    title: Customer
    type: object
    description: A customer object.
    properties:
      id:
        $ref: "#/x-ext/fbf1277"
      full_name:
        $ref: "#/x-ext/0b50233"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      created_at:
        type: string
        format: date-time
        description: The date and time the customer was created.
      updated_at:
        type: string
        format: date-time
        description: The date and time the customer was last updated.
    required:
      - id
      - created_at
      - updated_at
      - email
  3c54880:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
      - $ref: "#/x-ext/5cb8929"
    get:
      summary: Retrieve a customer
      operationId: retrieveCustomer
      description: Get the information about a specific customer, including their
        saved payment methods.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/23d9ec0"
              examples:
                retrieved_customer:
                  $ref: "#/x-ext/aeb9711"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
    patch:
      summary: Update a customer
      operationId: updateCustomer
      description: >-
        Update the attributes of a specific customer.


        All request body fields are optional. Only the fields provided will be
        updated.


        <details>

        <summary>AFT processing requirements</summary>


        For merchants in the following industries, `full_name` and
        `date_of_birth` are required for Account Funding Transaction (AFT)
        processing:


        | Industry | Required fields |

        | -------- | --------------- |

        | Crypto | `full_name`, `date_of_birth` |

        | Financial Institutions | `full_name`, `date_of_birth` |

        | Stored Value / Wallets | `full_name`, `date_of_birth` |


        </details>
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/d43bbd4"
            examples:
              example_customer_update:
                $ref: "#/x-ext/d93a490"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/23d9ec0"
              examples:
                updated_customer:
                  $ref: "#/x-ext/aeb9711"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
    delete:
      summary: Delete a customer
      operationId: deleteCustomer
      description: Delete the profile of a specific customer.
      responses:
        "204":
          description: No Content
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
  60fc985:
    type:
      - string
      - "null"
    description: >-
      Token for retrieving the next page of results. Use this token as the value
      of the `page_token` query parameter in your next request to retrieve the
      next page.


      If not present, there are no more results to retrieve.
  eac66d9:
    type: object
    required:
      - subscriptions
    properties:
      next_page_token:
        $ref: "#/x-ext/60fc985"
      subscriptions:
        type: array
        description: List of subscriptions.
        items:
          $ref: "#/x-ext/5815e4b"
  7c20249:
    type: object
    properties:
      next_page_token:
        $ref: "#/x-ext/60fc985"
      subscription_usages:
        type: array
        description: List of subscription usages.
        items:
          $ref: "#/x-ext/19229f6"
  3d08b71:
    title: Customer
    type: object
    description: A customer object.
    properties:
      id:
        $ref: "#/x-ext/fbf1277"
      full_name:
        $ref: "#/x-ext/0b50233"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      created_at:
        type: string
        format: date-time
        description: The date and time the customer was created.
      updated_at:
        type: string
        format: date-time
        description: The date and time the customer was last updated.
    required:
      - id
      - created_at
      - updated_at
      - email
  2bcea13:
    type: object
    required:
      - customers
    properties:
      next_page_token:
        $ref: "#/x-ext/60fc985"
      customers:
        type: array
        description: List of customers.
        items:
          $ref: "#/x-ext/3d08b71"
  a291830:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
    post:
      summary: Create a customer
      operationId: createCustomer
      description: |-
        Create a `customer` object.

        :::note [No automatic deduplication]
        The API does not prevent creating multiple customers with the same email address or phone number.

        This can be intentional, for example, to maintain separate customer records per storefront or brand under the same account.

        To avoid unintentional duplicates, search for existing customers by email or phone using the [List customers](/docs/api/merchant/2024-09-01#retrieve-customer-list) endpoint before creating a new one.
        :::

        ### Save payment methods

        If you wish to save a customer's payment details using any of the available payment methods on the Revolut Checkout Widget ([Revolut Pay](/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction), [Card payments](/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction)), you need to meet one of the following requirements:

          - [ ] Have a customer object with `email` and assign it to the order by providing `customer.id`
          - [ ] Create a new customer with, at least, `customer.email` during [order creation](/docs/api/merchant/2024-09-01#create-order)

        For more information, see: [Charge a customer's saved payment method](/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method).

        <details>
        <summary>AFT processing requirements</summary>

        For merchants in the following industries, `full_name` and `date_of_birth` are required for Account Funding Transaction (AFT) processing:

        | Industry | Required fields |
        | -------- | --------------- |
        | Crypto | `full_name`, `date_of_birth` |
        | Financial Institutions | `full_name`, `date_of_birth` |
        | Stored Value / Wallets | `full_name`, `date_of_birth` |

        </details>
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/2974b8b"
            examples:
              example_customer_creation:
                $ref: "#/x-ext/b1009bf"
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/x-ext/2a7879f"
              examples:
                created_customer:
                  $ref: "#/x-ext/cae70d3"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
    get:
      summary: Retrieve a customer list
      operationId: retrieveCustomerList
      description: >-
        Get a paginated list of your customer profiles.


        | Filtering | Pagination |

        | --------- | ---------- |

        | Filter the customers that you want to retrieve, for example, only
        retrieve customers created within a specific date range.
        <br/><br/>Parameters used for
        filtering:<br/><ul><li>`from`</li><li>`to`</li></ul> | View customers
        without loading all of them at once, for example, return a specified
        number of customers per page. <br/><br/>Parameters used for
        pagination:<br/><ul><li>`limit`</li><li>`page_token`</li></ul> |


        To paginate through all results:


        1. Make an initial request with the desired `limit` and any filter
        parameters.

        1. If more results are available, the response includes a
        `next_page_token`.

        1. Pass `next_page_token` as `page_token` in your next request, keeping
        all other parameters unchanged.

        1. Repeat until `next_page_token` is no longer present in the response.
      parameters:
        - $ref: "#/x-ext/4349f60"
        - $ref: "#/x-ext/0997c5b"
        - $ref: "#/x-ext/cff174f"
        - $ref: "#/x-ext/d10b9fd"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/2bcea13"
              examples:
                list_of_customers:
                  $ref: "#/x-ext/f91d9e1"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
  a001704:
    type: string
    format: uuid
    description: The ID of the payment.
  d21286a:
    type: string
    format: uuid
    description: >-
      Temporary token of the payment used to fetch the reward offer during
      checkout and link user registrations to the given offers. 


      The token is only valid for a limited time.
  f26cba6:
    type: integer
    format: int64
    minimum: 0
    description: >-
      The payment amount in minor units (e.g., cents). The value of this field
      depends on the payment type and state.


      | Payment type | State | Amount value |

      |--------------|-------|--------------|

      | Standard payment | Any | Total payment amount |

      | Pre-authorised payment | `authorisation_started` | New amount being
      authorised (during increment processing) |

      | Pre-authorised payment | `authorised` | Currently authorised amount
      (equals `authorised_amount`) |


      :::info

      For pre-authorised payments, see the `authorised_amount` field for
      tracking the currently authorised amount separately.

      :::
    examples:
      default:
        value: 600
  9ebf295:
    type: string
    description: The status of the payment.
    enum:
      - pending
      - authentication_challenge
      - authentication_verified
      - authorisation_started
      - authorisation_passed
      - authorised
      - capture_started
      - captured
      - refund_validated
      - refund_started
      - cancellation_started
      - declining
      - completing
      - cancelling
      - failing
      - completed
      - declined
      - soft_declined
      - cancelled
      - failed
  67d79e0:
    type: string
    description: >-
      The reason for a `failed` or `declined` payment.


      A failed or declined payment can result from multiple reasons. To learn
      more, check our [failure
      reasons](/docs/guides/merchant/reference/error-codes/decline-reasons).
    enum:
      - 3ds_challenge_abandoned
      - 3ds_challenge_failed_manually
      - cardholder_name_missing
      - customer_challenge_abandoned
      - customer_challenge_failed
      - customer_name_mismatch
      - do_not_honour
      - expired_card
      - high_risk
      - insufficient_funds
      - invalid_address
      - invalid_amount
      - invalid_card
      - invalid_country
      - invalid_cvv
      - invalid_email
      - invalid_expiry
      - invalid_merchant
      - invalid_phone
      - invalid_pin
      - issuer_not_available
      - pick_up_card
      - rejected_by_customer
      - restricted_card
      - suspected_fraud
      - technical_error
      - transaction_not_allowed_for_cardholder
      - unknown_card
      - withdrawal_limit_exceeded
  c7c0e23:
    properties:
      type:
        type: string
        enum:
          - card
          - revolut_pay
        description: The type of payment method used to pay for the order.
      brand:
        type: string
        description: The type of the card.
      last_four:
        type: string
        description: The last four digits of the card number.
      id:
        type: string
        format: uuid
        description: |-
          ID of the saved payment method.

          :::note
          The `id` parameter is only returned if the payment method is saved.
          :::
    required:
      - type
  a599903:
    type: string
    description: The reason for challenging the dispute.
    enum:
      - product_already_delivered
      - refund_already_issued
      - disagree_with_customers_claim
    examples:
      default:
        value: refund_already_issued
  3b70180:
    type: string
    description: Additional explanation or comment for the challenge, if needed.
    maxLength: 250
    examples:
      default:
        value: Refund PDF attached as evidence.
  c48dc6d:
    type: array
    description: >-
      A list of IDs of previously uploaded evidence files to associate with this
      challenge.


      :::warning

      Each evidence ID can only be used for **a single challenge**. This means,
      that evidences already assigned to a challenge **cannot be reused** for
      other challenges.

      :::
    items:
      type: string
      format: uuid
      description: ID of a previously uploaded evidence file.
    minItems: 1
    maxItems: 10
    uniqueItems: true
    examples:
      default:
        value:
          - 121ac27c-b00a-44d0-9120-efeeec7c912d
          - 0010e98d-0653-4dbe-8a4f-70cd5e9491f2
  25fa4dd:
    type: object
    required:
      - reason
      - evidences
    properties:
      reason:
        $ref: "#/x-ext/a599903"
      comment:
        $ref: "#/x-ext/3b70180"
      evidences:
        $ref: "#/x-ext/c48dc6d"
  ae12090:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/eb2136b"
    post:
      summary: Challenge a dispute
      operationId: challengeDispute
      servers:
        - description: Production server (uses live data)
          url: https://merchant.revolut.com
      description: >-
        Allows challenging a dispute with a reason, comment and associated
        evidences.


        Use the uploaded evidences to provide proof for the challenge.


        A dispute previously accepted, cannot be challenged.


        :::note

        This endpoint is only available in **Production** environment.

        :::
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/25fa4dd"
            examples:
              challenge_min:
                $ref: "#/x-ext/d84d919"
              challenge_with_evidence:
                $ref: "#/x-ext/88bddbd"
      responses:
        "204":
          description: Dispute challenged successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Missing Revolut-Api-Version header
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested operation is forbidden
                    timestamp: 1721050063886
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested resource is not found
                    timestamp: 1721050063886
        "422":
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Disputes
  a325319:
    type: string
    minLength: 1
    maxLength: 1024
    description: The name of the subscription plan.
  cab1828:
    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).


      This value serves as the default trial duration for all subscriptions
      created from this plan. Individual subscriptions can override this value
      at creation time.


      :::note

      Only days (`D`) are allowed. Time components such as hours, minutes, or
      seconds are not permitted.

      :::
    pattern: ^P[0-9]+D$
    examples:
      default:
        value: P14D
  f14ed36:
    type: string
    format: uuid
    description: Unique identifier for the subscription plan.
  7f8b6df:
    type: string
    enum:
      - active
      - deactivated
    description: >-
      The state of the subscription plan.


      | State | Description |

      | ----- | ----------- |

      | `active` | The plan is active and can be used to create new
      subscriptions. |

      | `deactivated` | The plan has been deactivated and cannot be used for new
      subscriptions. |
  eca5f6a:
    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.
  826b3a4:
    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.
  8ee29c2:
    type: string
    format: uuid
    description: Unique identifier for the subscription plan variation.
  8d556f9:
    type: string
    maxLength: 1024
    description: >-
      Optional external reference for the subscription.


      Use this field to store your own system's identifier for easy tracking and
      correlation.
  4185b25:
    type: object
    properties:
      external_reference:
        $ref: "#/x-ext/8d556f9"
  c01edfd:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
    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: "#/x-ext/5815e4b"
              examples:
                active_subscription:
                  $ref: "#/x-ext/60b5674"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      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: "#/x-ext/4185b25"
            examples:
              update_subscription:
                $ref: "#/x-ext/ddbfd78"
      responses:
        "200":
          description: Subscription updated successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/5815e4b"
              examples:
                updated_subscription:
                  $ref: "#/x-ext/60b5674"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  7dc7a58:
    type: string
    format: uri
    pattern: ^https?:\/{2}.+/gi
    maxLength: 2000
    description: >-
      The URL to which the customer is redirected after completing the setup
      order on the Revolut Hosted Payment Page.


      When provided, the response will include a `setup_order_id`. Use the
      [Retrieve an order](/docs/api/merchant#retrieve-order) endpoint with this
      `setup_order_id` to get the `checkout_url` for redirecting the customer to
      the Hosted Payment Page.


      :::warning

      Restrictions:

      - Must be a valid URI as defined by [RFC
      3986](https://datatracker.ietf.org/doc/html/rfc3986)

      - URI scheme is required and must be either `http` or `https`

      - URI host is required and cannot be `localhost` or an IP address

      - Max length: `2000`

      - Reserved or invalid characters must be percent-encoded (for example, use
      `%20` instead of a space)

      :::
  bb5e5cf:
    type: string
    format: uuid
    description: Unique identifier for the subscription.
  6032c49:
    type: string
    format: duration
    description: >-
      The trial period duration for this subscription in [ISO 8601 duration
      format](https://en.wikipedia.org/wiki/ISO_8601#Durations) (e.g., "P14D"
      for 14 days).


      ### Override plan defaults


      Subscription plans can define a default trial duration. When creating a
      subscription, you can use this field to override the plan's default trial
      period:


      | Field value | Behaviour | Example |

      | ----------- | -------- | ------- |

      | **Not provided** | Uses the trial duration defined in the plan (if any)
      | Plan has `"P7D"` → subscription gets 7-day trial |

      | **Different value** | Overrides the plan's default trial duration | Plan
      has `"P7D"` → set to `"P30D"` for promotional offer, or `"P3D"` to reduce
      |

      | **`"P0D"`** | Explicitly skips the trial period | Plan has `"P7D"` → set
      to `"P0D"` to skip trial entirely |


      :::note

      Only days (`D`) are allowed. Time components such as hours, minutes, or
      seconds are not permitted.

      :::
    pattern: ^P[0-9]+D$
    examples:
      default:
        value: P14D
  fe2eb4d:
    type: object
    required:
      - plan_variation_id
      - customer_id
    properties:
      plan_variation_id:
        $ref: "#/x-ext/8ee29c2"
      customer_id:
        $ref: "#/x-ext/fbf1277"
      external_reference:
        $ref: "#/x-ext/8d556f9"
      setup_order_redirect_url:
        $ref: "#/x-ext/7dc7a58"
      trial_duration:
        $ref: "#/x-ext/6032c49"
  92afcdb:
    type: string
    enum:
      - pending
      - active
      - overdue
      - paused
      - cancelled
      - finished
    description: >-
      The state of the subscription.


      | State | Description |

      | ----- | ----------- |

      | `pending` | The subscription has been created but is not yet active.
      This typically occurs when awaiting the first payment or setup completion.
      |

      | `active` | The subscription is currently active and billing cycles are
      processing normally. |

      | `overdue` | The subscription has a failed payment and is awaiting
      resolution. |

      | `paused` | The subscription has been temporarily paused and no billing
      will occur. |

      | `cancelled` | The subscription has been cancelled and will not renew. |

      | `finished` | The subscription has completed all billing cycles (for
      limited-duration subscriptions). |
  34d32bc:
    type: string
    enum:
      - automatic
      - manual
    description: >-
      The type of payment method used for the subscription.


      | Type | Description |

      | ---- | ----------- |

      | `automatic` | Payments are automatically charged to the customer's saved
      payment method. |

      | `manual` | Payments require manual processing by the customer. |
  "9e48916":
    type: string
    format: uuid
    description: Unique identifier for the payment method.
  a5009b7:
    type: string
    format: date-time
    description: The date and time the subscription was last updated in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  e882e42:
    type: string
    format: date-time
    description: The date and time the subscription was created in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  1c92981:
    type:
      - string
      - "null"
    format: date-time
    description: >-
      The date and time the subscription started in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.


      This field is `null` until the subscription becomes active.
  c147906:
    type: string
    format: uuid
    description: Unique identifier for the subscription cycle.
  eaaea6b:
    type:
      - string
      - "null"
    format: date-time
    description: >-
      The date and time when the subscription's trial period ends in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.


      This value is automatically calculated by the system as: `start_date` +
      `trial_duration`


      The `trial_duration` used in the calculation comes from either:

      - The subscription's custom `trial_duration` (if provided at creation
      time), or

      - The plan's default `trial_duration` (if no override was specified)


      This field is `null` when the subscription has no trial period (e.g., when
      `trial_duration` is not set or is `"P0D"`).
    examples:
      default:
        value: 2025-06-19T21:00:00.036001Z
  dd59dc7:
    type: string
    format: uuid
    description: >-
      The ID of the order created for handling the setup payment for the
      subscription.


      Use the [Retrieve an order](/docs/api/merchant#retrieve-order) endpoint
      with this ID to get order details, including the `checkout_url` for
      redirecting customers to the Hosted Payment Page or the `token` for widget
      integration.


      :::note

      The order is created in parallel to the subscription and is used to
      collect the initial payment and save the customer's payment method for
      future billing cycles.

      :::
  2a76ad9:
    type: string
    format: uuid
    description: Unique identifier for the subscription plan phase.
  bf5b368:
    type: string
    description: >-
      The reason for the scheduled action. This field is informational and does
      not affect how the action is processed.


      | Value | Description |

      | ----- | ----------- |

      | `customer_request` | The action was requested by the customer. |

      | `merchant_request` | The action was initiated by the merchant. |
    enum:
      - customer_request
      - merchant_request
    default: merchant_request
    examples:
      default:
        value: customer_request
  7ca67a8:
    type: object
    properties:
      plan_variation_id:
        $ref: "#/x-ext/8ee29c2"
      plan_variation_phase_id:
        $ref: "#/x-ext/2a76ad9"
      scheduled:
        type: string
        description: >-
          When the plan change should take effect.


          | Value | Description |

          | ----- | ----------- |

          | `at_cycle_end` | The change is applied at the end of the current
          billing cycle. |
        enum:
          - at_cycle_end
        examples:
          - at_cycle_end
      reason:
        $ref: "#/x-ext/bf5b368"
    required:
      - plan_variation_id
      - scheduled
  fc64e69:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
    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: "#/x-ext/7ca67a8"
            examples:
              change_plan:
                $ref: "#/x-ext/89af57b"
              change_plan_with_reason:
                $ref: "#/x-ext/ea489ca"
              change_plan_with_phase:
                $ref: "#/x-ext/96bc43f"
      responses:
        "204":
          description: Plan change scheduled successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              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: "#/x-ext/a4a371d"
        "404":
          description: Subscription not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              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: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  f4b26ad:
    type: integer
    minimum: 1
    description: >-
      The sequential cycle number within the subscription.


      Starts at `1` for the first cycle and increments with each new billing
      cycle.
  4e3ece3:
    type:
      - string
      - "null"
    format: uuid
    description: |-
      The unique identifier of the previous billing cycle.

      This field is `null` for the first cycle in a subscription.
  0c885e7:
    type: string
    enum:
      - pending
      - active
      - finished
    description: >-
      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. |
  6905b6b:
    type: string
    format: date-time
    description: The date and time the subscription cycle starts in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  e3212ad:
    type: string
    format: date-time
    description: The date and time the subscription cycle ends in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
  e82403e:
    type: string
    format: date-time
    description: >-
      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.

      :::
  e657068:
    type: string
    format: uuid
    description: >-
      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.

      :::
  ba0fe2a:
    type: boolean
    description: >-
      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.
    default: false
    examples:
      default:
        value: false
  84199f0:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/11ded8f"
      - $ref: "#/x-ext/bf2b7a1"
    servers:
      - description: Production server (uses live data)
        url: https://merchant.revolut.com
    get:
      summary: Retrieve a subscription cycle
      operationId: retrieveSubscriptionCycle
      description: >-
        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.
      tags:
        - Subscriptions
      responses:
        "200":
          description: Subscription cycle retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/d97bee6"
              examples:
                finished_cycle:
                  $ref: "#/x-ext/564d792"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Subscription cycle not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  42f1cfe:
    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](/docs/api/merchant#create-subscription-usage) to target the
      correct metered item.


      This 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.


      The code must be unique within a plan phase.
    maxLength: 250
    examples:
      default:
        value: api_calls
  7c6239f:
    type: string
    format: date-time
    description: >-
      The timestamp indicating when the consumption actually occurred.


      | Constraint | Detail |

      | ---------- | ------ |

      | Format | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time
      string (e.g., `YYYY-MM-DDTHH:mm:ssZ`). |

      | Timezone | Must be UTC. |

      | Validation | Revolut uses this to identify the applicable billing cycle.
      Accepted for the active cycle (`start_date ≤ usage_date < end_date`), for
      a recently ended cycle before its `usage_cutoff_date`, and for the one
      next upcoming cycle. Other dates are rejected. |
    examples:
      default:
        value: 2026-03-01T21:00:00Z
  36ec192:
    type: number
    exclusiveMinimum: 0
    description: |-
      The quantity of consumption to record for this usage report. 

      Supports up to 20 digits before and 20 digits after the decimal point.
    examples:
      default:
        value: 100.5
  b1ecd7f:
    type: object
    description: >-
      Key-value pairs you can attach to a usage record for your own tracking and
      reporting purposes.


      | Constraint | Detail |

      | ---------- | ------ |

      | Keys | Maximum 50 keys per record. |

      | Value types | String, number, or boolean only. |

      | Number precision | Up to 20 digits before and 20 digits after the
      decimal point. |
    additionalProperties:
      anyOf:
        - type: string
        - type: number
        - type: boolean
    maxProperties: 50
    examples:
      default:
        value:
          user_id: "12345"
          api_version: v2
          usage_rate: 1.5
          is_trial: true
  7841cdc:
    type: object
    properties:
      quantity:
        $ref: "#/x-ext/36ec192"
      metadata:
        $ref: "#/x-ext/b1ecd7f"
  7dedf2f:
    type: object
    required:
      - subscription_id
      - subscription_item_code
      - usage_date
      - quantity
    properties:
      subscription_id:
        $ref: "#/x-ext/bb5e5cf"
      subscription_item_code:
        $ref: "#/x-ext/42f1cfe"
      usage_date:
        $ref: "#/x-ext/7c6239f"
      quantity:
        $ref: "#/x-ext/36ec192"
      metadata:
        $ref: "#/x-ext/b1ecd7f"
  bca8f6b:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/1907c6e"
    servers:
      - description: Production server (uses live data)
        url: https://merchant.revolut.com
    get:
      summary: Retrieve a subscription usage
      operationId: retrieveSubscriptionUsage
      description: >-
        Retrieve a usage record by its unique identifier.


        Use this endpoint to get the details of a specific usage that was
        reported or updated.
      tags:
        - Subscriptions
      responses:
        "200":
          description: Usage record retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/19229f6"
              examples:
                usage_record:
                  $ref: "#/x-ext/60fc9a8"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Usage not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
    patch:
      summary: Update a subscription usage
      operationId: updateSubscriptionUsage
      description: Update the quantity or metadata of a subscription usage record.
      tags:
        - Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/7841cdc"
            examples:
              update_usage_quantity:
                $ref: "#/x-ext/5859d34"
              update_usage_metadata:
                $ref: "#/x-ext/31f122d"
              update_usage:
                $ref: "#/x-ext/baf00b2"
      responses:
        "200":
          description: Usage updated successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/19229f6"
              examples:
                updated_usage:
                  $ref: "#/x-ext/60fc9a8"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Usage not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable entity (business rule violation)
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                usage_locked:
                  summary: Cycle is past the usage cutoff date
                  value:
                    code: subscription_usage_locked
                    message: Cannot modify usage for a locked cycle
                    timestamp: 1743465600
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
    delete:
      summary: Delete a subscription usage
      operationId: deleteSubscriptionUsage
      description: Delete a subscription usage record. This operation is only
        permitted while the billing cycle is still open.
      tags:
        - Subscriptions
      responses:
        "204":
          description: Usage deleted successfully
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Usage not found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable entity (business rule violation)
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                usage_locked:
                  summary: Cycle is past the usage cutoff date
                  value:
                    code: subscription_usage_locked
                    message: Cannot modify usage for a locked cycle
                    timestamp: 1743465600
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  a579556:
    type: string
    format: uuid
    description: The unique identifier of the usage record.
  5815cf1:
    type: string
    format: date-time
    description: The date and time the usage record was created in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    examples:
      default:
        value: 2026-03-01T21:05:00Z
  ab3ed2e:
    type: string
    format: date-time
    description: The date and time the usage record was last updated in [ISO
      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    examples:
      default:
        value: 2026-03-01T21:05:00Z
  735efab:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    servers:
      - description: Production server (uses live data)
        url: https://merchant.revolut.com
    post:
      summary: Create a subscription usage
      operationId: createSubscriptionUsage
      description: >-
        Report a unit of consumption against a usage-based subscription item.
        Revolut accumulates reported records throughout the billing cycle and
        processes the charge after the cycle's `usage_cutoff_date`.


        ### Resolve the billing cycle


        Revolut automatically identifies the applicable billing cycle from the
        `usage_date` you provide. The following submission windows are accepted:


        | Window | Rule |

        | ------ | ---- |

        | Active cycle | `usage_date` falls within the current cycle
        (`start_date ≤ usage_date < end_date`). |

        | Past cycle correction | `usage_date` falls within a recently ended
        cycle, and the request is made before that cycle's `usage_cutoff_date`
        (12 hours after `end_date` by default). |

        | Next upcoming cycle | `usage_date` falls within the one next future
        cycle. Revolut creates a `pending` cycle to hold the record until it
        becomes active. |


        Any `usage_date` outside these windows causes the request to be
        rejected.


        ### How Revolut calculates the charge


        After the `usage_cutoff_date` passes, all records for each usage item
        are aggregated using the method defined on the subscription plan:


        | Method | Behaviour |

        | ------ | --------- |

        | `sum` | Totals all reported values during the cycle. Use for
        cumulative metrics (e.g., total GB transferred). |

        | `latest` | Uses the most recently reported value at the
        `usage_cutoff_date`. If no usages are reported during the cycle, the
        charge is 0. Use for gauge-style metrics (e.g., active seat count at
        month-end). |

        | `max` | Uses the highest value reported during the cycle. Use for
        capacity-based billing (e.g., peak concurrent connections). |


        The aggregated total is multiplied by the unit price to produce the
        final charge.


        :::warning

        The `Idempotency-Key` header is **required** for this endpoint.
        Providing a unique idempotency key ensures that duplicate requests due
        to retries or network issues do not result in duplicate usage records.

        :::
      tags:
        - Subscriptions
      parameters:
        - $ref: "#/x-ext/5e171ae"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/7dedf2f"
            examples:
              report_usage:
                $ref: "#/x-ext/0f3fe67"
      responses:
        "201":
          description: Usage reported successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/19229f6"
              examples:
                usage_record:
                  $ref: "#/x-ext/60fc9a8"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                item_code_not_found:
                  summary: Subscription item code not found
                  value:
                    code: subscription_item_code_not_found
                    message: Subscription item code 'api_calls' not found for phase
                    timestamp: 1743465600
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable entity (business rule violation)
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                subscription_finished:
                  summary: Subscription is finished
                  value:
                    code: subscription_finished
                    message: Cannot add usage to a finished subscription
                    timestamp: 1743465600
                usage_after_last_cycle:
                  summary: Usage date after last cycle
                  value:
                    code: subscription_usage_after_last_cycle
                    message: Usage date is after the last cycle
                    timestamp: 1743465600
                usage_before_start:
                  summary: Usage date before subscription start
                  value:
                    code: subscription_usage_before_subscription_start
                    message: Usage date is before the subscription start date
                    timestamp: 1743465600
                future_cycle_limit_exceeded:
                  summary: Future cycle limit exceeded
                  value:
                    code: subscription_usage_future_cycle_limit_exceeded
                    message: Cannot add usage for cycles too far in the future
                    timestamp: 1743465600
                usage_locked:
                  summary: Cycle is past the usage cutoff date
                  value:
                    code: subscription_usage_locked
                    message: Cannot modify usage for a locked cycle
                    timestamp: 1743465600
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
    get:
      summary: Retrieve a subscription usage list
      operationId: retrieveSubscriptionUsageList
      description: >-
        Retrieve all usage records for the merchant account. Results are ordered
        by `usage_date`, unlike other list endpoints which order by
        `created_at`. You can use the query parameters for:

          | Filtering | Pagination |
          | --------- | ---------- |
          | Filter the usage records that you want to retrieve, for example, only retrieve records for a specific subscription or billing cycle. <br/><br/>Parameters used for filtering:<br/><ul><li>`subscription_id`</li><li>`subscription_cycle_id`</li><li>`from_usage_date`</li><li>`to_usage_date`</li></ul> | View usage records without loading all of them at once, for example, return a specified number of records per page. <br/><br/>Parameters used for pagination:<br/><ul><li>`limit`</li><li>`page_token`</li></ul> |
      tags:
        - Subscriptions
      parameters:
        - $ref: "#/x-ext/4349f60"
        - $ref: "#/x-ext/0588a64"
        - $ref: "#/x-ext/5764b3a"
        - $ref: "#/x-ext/fc6df64"
        - $ref: "#/x-ext/32f5b41"
        - $ref: "#/x-ext/0997c5b"
      responses:
        "200":
          description: List of subscription usages retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/7c20249"
              examples:
                usage_list:
                  $ref: "#/x-ext/ea795a9"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  8de5ed9:
    type: string
    format: uuid
    description: Permanent payout ID used for payouts operations.
  842508a:
    type: string
    enum:
      - processing
      - completed
      - failed
    description: The state of the payout.
  09d73a0:
    type: string
    enum:
      - current_pocket
      - external_beneficiary
    description: >-
      The destination of the payout funds when a merchant initiates a withdrawal
      from their merchant account.


      | Destination type | Description |

      | ---------------- | ----------- |

      | `current_pocket` | The funds were moved from the merchant account to the
      business account within the platform. This indicates an **internal
      transfer**, allowing the merchant to access the funds within their own
      business account. |

      | `external_beneficiary` | The funds were transferred to an external bank
      account or beneficiary outside the platform. This indicates a **transfer
      to an external account**, enabling the merchant to withdraw funds to
      external financial institutions. |
  05718b6:
    type: integer
    minimum: 1
    description: The total amount of the payout in minor currency units. For
      example, `7034` represents €70.34.
  61bd489:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    get:
      summary: Retrieve a payout list
      operationId: retrievePayoutList
      description: >-
        Retrieve all the payouts you made from your Merchant account. You can
        also use the query parameters for:

          | Filtering | Pagination |
          | --------- | ---------- |
          | Filter the orders that you want to retrieve, for example, only retrieve the orders that have a specific email. <br/><br/>Parameters used for filtering:<br/><ul><li>`from_created_date`</li><li>`to_created_date`</li><li>`currency`</li><li>`state`</li></ul> | View the orders without loading all of them at once, for example, return a specified number of orders per page. <br/><br/>Parameters used for pagination: <br/><ul><li>`limit`</li></ul> |
      parameters:
        - name: currency
          in: query
          schema:
            type: string
            minLength: 3
            maxLength: 3
          description: |-
            [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

            :::info
            For 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/).
            :::
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 500
          description: The maximum number of payouts returned per page. Used for
            **pagination**.
        - name: from_created_date
          in: query
          schema:
            type: string
            format: date-time
          description: >-
            Retrieve all payouts with a `created_date` ≥ `from_created_date`.
            Used for **filtering**.


            Use the [ISO date format](https://en.wikipedia.org/wiki/ISO_8601):
            `yyyy-MM-ddTHH:mm:ss[.SSSSSS]Z`. For example,
            `2021-02-10T16:59:50.886826Z`.
        - name: to_created_date
          in: query
          schema:
            type: string
            format: date-time
          description: >-
            Retrieve all payouts with a `created_date` ≤ `to_created_date`. Used
            for **filtering**.


            Use the [ISO date format](https://en.wikipedia.org/wiki/ISO_8601):
            `yyyy-MM-ddTHH:mm:ss[.SSSSSS]Z`. For example,
            `2021-02-10T16:59:50.886826Z`.
        - name: state
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - processing
                - completed
                - failed
          style: form
          explode: true
          description: |-
            Retrieve all payouts with specific states. You can pass several states. Used for **filtering**.

            If multiple states are selected, for example `completed` and `processing`, payouts with either of the selected values are returned. See this example of such a request URL: 

            ```curl
            https://merchant.revolut.com/api/payouts?state=completed&state=processing
            ```

            The parameter is case sensitive.
      responses:
        "201":
          description: Payouts retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/x-ext/fdb8216"
              examples:
                default:
                  value:
                    - id: a830020e-090c-4717-836d-37941a27ad12
                      state: completed
                      created_at: 2024-02-27T00:16:39.079285Z
                      destination_type: current_pocket
                      amount: 50000
                      currency: GBP
                    - id: 66ffee42-7c4a-a15c-9a47-5dc67150386f
                      state: processing
                      created_at: 2024-02-26T17:16:39.079285Z
                      destination_type: external_beneficiary
                      amount: 10000
                      currency: GBP
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1721049596461
          headers: {}
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Payouts
  82ecd06:
    type: object
    description: >-
      Filtering parameters to be applied to the report.


      :::note

      For `settlement_report` and `custom_report`, `from` and `to` are evaluated
      against the transaction `created_date`, not the original payment-start
      timeframe or the `payment_created_date` and `payment_captured_date`
      columns.

      :::
    properties:
      from:
        $ref: "#/x-ext/3104eb3"
      to:
        $ref: "#/x-ext/3b5796b"
      entity_types:
        $ref: "#/x-ext/3dfaa9a"
      entity_states:
        $ref: "#/x-ext/dab0a46"
      currency:
        $ref: "#/x-ext/aacd9d1"
      location_id:
        $ref: "#/x-ext/4fa5d34"
    required:
      - from
      - to
  0abca0c:
    type: string
    enum:
      - csv
    description: Format of the generated report file.
    examples:
      default:
        value: csv
  34b6874:
    type: string
    description: >-
      Type of the report.

        | Report type | Description |
        | -------------- | ----------- |
        | `settlement_report` | All settled transactions associated with a Merchant account, with a configurable set of columns. |
        | `custom_report` | Settled and processing transactions associated with a Merchant account, with a configurable set of columns. |
        | `payments_report` | Payments report provides details of all payments associated with a Merchant account, including failed and declined payments. Supports filtering by `from` and `to` creation timestamps, and optionally by `entity_states`. |
        | `payout_statement_report`    | Payout statement Reports provide a detailed breakdown of all transactions contributing to a specific payout amount. It requires the additional parameter `filter.payout_id`, which should be obtained from the payout ID retrieved via the [payout list endpoint](/docs/api/merchant#retrieve-payout-list) or from [webhook events](/docs/api/merchant#create-webhook#callbacks). |
        | `icpp_fee_breakdown_report`  | IC++ fee breakdown reports provide a detailed breakdown of fees for each IC++ transaction related to a payout. It requires the additional parameter `filter.icpp_charge_id`, which should be obtained from the `related_icpp_charge_id` column in the Payout statement report. A separate report should be generated for each IC++ transaction. |
    enum:
      - settlement_report
      - custom_report
      - payments_report
      - payout_statement_report
      - icpp_fee_breakdown_report
    examples:
      default:
        value: settlement_report
  96af67e:
    type: object
    description: Filtering parameters to be applied to the report.
    properties:
      payout_id:
        $ref: "#/x-ext/8de5ed9"
    required:
      - payout_id
  e740564:
    type: string
    format: uri
    pattern: ^https?:\/{2}.+/gi
    maxLength: 2000
    description: >-
      Your webhook's URL to which event notifications will be sent. 


      Must be a valid HTTP or HTTPS URL, capable of receiving `POST` requests.


      :::warning

      Restrictions:

      - Must be a valid URI as defined by [RFC
      3986](https://datatracker.ietf.org/doc/html/rfc3986)

      - URI scheme is required and must be either `http` or `https`

      - URI host is required and cannot be `localhost` or an IP address

      - Max length: `2000`

      - Reserved or invalid characters must be percent-encoded (for example, use
      `%20` instead of a space)

      :::
  a725038:
    type: array
    description: >-
      List of event types that the webhook is configured to listen to.


      Each event is related to status changes of a specific object in the
      Merchant API:

        | Object | Event types |
        | --------- | ----------- |
        | `Order`   | <ul> <li>`ORDER_COMPLETED`</li> <li>`ORDER_AUTHORISED`</li> <li>`ORDER_CANCELLED`</li> <li>`ORDER_FAILED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_DECLINED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_FAILED`</li> </ul> |
        | `Payment` | <ul> <li>`ORDER_PAYMENT_AUTHENTICATION_CHALLENGED`</li> <li>`ORDER_PAYMENT_AUTHENTICATED`</li> <li>`ORDER_PAYMENT_DECLINED`</li> <li>`ORDER_PAYMENT_FAILED`</li> </ul> |
        | `Subscription`  | <ul> <li>`SUBSCRIPTION_INITIATED`</li> <li>`SUBSCRIPTION_FINISHED`</li> <li>`SUBSCRIPTION_CANCELLED`</li> <li>`SUBSCRIPTION_OVERDUE`</li></ul> |
        | `Payout`  | <ul> <li>`PAYOUT_INITIATED`</li> <li>`PAYOUT_COMPLETED`</li> <li>`PAYOUT_FAILED`</li> </ul> |
        | `Dispute`  | <ul> <li>`DISPUTE_ACTION_REQUIRED`</li> <li>`DISPUTE_UNDER_REVIEW`</li> <li>`DISPUTE_WON`</li> <li>`DISPUTE_LOST`</li></ul> |
    items:
      type: string
      description: The available event types your can listen to.
      enum:
        - ORDER_COMPLETED
        - ORDER_AUTHORISED
        - ORDER_CANCELLED
        - ORDER_FAILED
        - ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED
        - ORDER_INCREMENTAL_AUTHORISATION_DECLINED
        - ORDER_INCREMENTAL_AUTHORISATION_FAILED
        - ORDER_PAYMENT_AUTHENTICATION_CHALLENGED
        - ORDER_PAYMENT_AUTHENTICATED
        - ORDER_PAYMENT_DECLINED
        - ORDER_PAYMENT_FAILED
        - SUBSCRIPTION_INITIATED
        - SUBSCRIPTION_FINISHED
        - SUBSCRIPTION_CANCELLED
        - SUBSCRIPTION_OVERDUE
        - PAYOUT_INITIATED
        - PAYOUT_COMPLETED
        - PAYOUT_FAILED
        - DISPUTE_ACTION_REQUIRED
        - DISPUTE_UNDER_REVIEW
        - DISPUTE_WON
        - DISPUTE_LOST
    minItems: 1
  05a3769:
    title: Webhook update
    type: object
    description: >-
      The request body for updating a webhook.


      All fields are optional. Only the fields provided in the request will be
      updated.
    properties:
      url:
        $ref: "#/x-ext/e740564"
      events:
        $ref: "#/x-ext/a725038"
  ee2e597:
    title: Webhook schema for creation and update operations
    type: object
    properties:
      url:
        $ref: "#/x-ext/e740564"
      events:
        $ref: "#/x-ext/a725038"
    required:
      - url
      - events
  54a8cad:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
      - $ref: "#/x-ext/18e1dc1"
    get:
      summary: Retrieve a webhook
      operationId: retrieveWebhook
      description: "Get the details of a specific webhook, including its
        `signing_secret`.  "
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ac8c9d5"
              examples:
                retrieved_webhook:
                  $ref: "#/x-ext/a880249"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Webhooks
    patch:
      summary: Update a webhook
      operationId: updateWebhook
      description: >-
        Update the URL or events for a specific webhook.


        All request body fields are optional. Only the fields provided will be
        updated.  
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/05a3769"
            examples:
              webhook_update_request:
                $ref: "#/x-ext/b2bc6d3"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ac8c9d5"
              examples:
                updated_webhook:
                  $ref: "#/x-ext/a880249"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Webhooks
    delete:
      summary: Delete a webhook
      operationId: deleteWebhook
      description: Delete a webhook so that events are no longer sent to the specified URL.
      responses:
        "204":
          description: No Content
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Webhooks
  dd0635b:
    type: string
    format: uuid
    description: The ID of the webhook.
  48d07ca:
    type: string
    description: The signing secret for the webhook. Use it to verify the signature
      for the webhook request's payload.
  7acd6e0:
    type: object
    properties:
      id:
        $ref: "#/x-ext/38a61e6"
      name:
        $ref: "#/x-ext/c1e66bb"
      type:
        $ref: "#/x-ext/fc3b5f1"
      details:
        $ref: "#/x-ext/7f31e02"
    required:
      - id
      - name
      - type
      - details
  0cc5e9d:
    title: Location
    type: object
    properties:
      id:
        $ref: "#/x-ext/38a61e6"
      name:
        $ref: "#/x-ext/c1e66bb"
      type:
        $ref: "#/x-ext/fc3b5f1"
      details:
        $ref: "#/x-ext/874157f"
    required:
      - id
      - name
      - type
      - details
  5d4dca2:
    title: Location
    type: object
    description: Location object represents merchant locations depending on type.
    oneOf:
      - $ref: "#/x-ext/7acd6e0"
      - $ref: "#/x-ext/0cc5e9d"
    discriminator:
      propertyName: type
      mapping:
        online: ./Location-Online.yaml
        physical: ./Location-Physical.yaml
  a777633:
    title: Terminal operation mode
    type: string
    description: >-
      The operation mode of the terminal.

        | Value | Description |
      |-------|-------------|

      | `pos` | Returns only terminals in Pay at Counter mode |

      | `payment_acceptance` | Returns only terminals in standard checkout mode
      |
    enum:
      - pos
      - payment_acceptance
  193a752:
    name: operation_mode
    in: query
    required: false
    explode: true
    description: >-
      Filter terminals by operation mode.


      | Value | Description |

      |-------|-------------|

      | `pos` | Returns only terminals in Pay at Counter mode |

      | `payment_acceptance` | Returns only terminals in standard checkout mode
      |
    schema:
      $ref: "#/x-ext/a777633"
  9730fdd:
    title: Payment Intent amount
    type: integer
    description: >-
      The payment amount expressed in minor currency units, according to the
      [ISO 4217 standard](https://en.wikipedia.org/wiki/ISO_4217). For example,
      `7034` in `EUR` corresponds to €70.34.


      :::info

      Conversion 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).

      :::
  6b77b6c:
    title: Terminal ID
    type: string
    format: uuid
    description: The unique identifier of the terminal.
  a0c2d2d:
    title: Payment Intent creation
    type: object
    description: Request body for creating a payment intent to push to a terminal.
    properties:
      amount:
        $ref: "#/x-ext/9730fdd"
      terminal_id:
        $ref: "#/x-ext/6b77b6c"
    required:
      - amount
      - terminal_id
  021590b:
    title: Payment Intent ID
    type: string
    format: uuid
    description: The unique identifier of the payment intent.
  7f3eb22:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
      - $ref: "#/x-ext/c639151"
    get:
      summary: Retrieve a payment intent
      operationId: retrievePaymentIntent
      description: |-
        Retrieve the current state and details of a payment intent.

        This endpoint is used to poll the payment intent status after pushing a payment request to a Revolut Terminal. You should poll this endpoint repeatedly until the payment intent reaches a final state.

        **Payment intent states:**

        | State | Description |
        |-------|-------------|
        | `pending` | Payment intent created and sent to terminal, customer has not yet started interacting |
        | `processing` | Customer is actively interacting with the terminal (e.g., inserting card, entering PIN) |
        | `completed` | Payment authorisation is complete, response includes a `payment_id` that you should use to [retrieve the final payment status](/docs/api/merchant#retrieve-payment-details) |
        | `cancelled` | Payment intent was cancelled (by your system or by the customer on the terminal) |
        | `failed` | Payment intent failed due to technical issues (e.g., timeout, terminal became unavailable) |

        :::tip [Polling strategy]
        - Poll every second while the state is `pending` or `processing`
        - Set a reasonable timeout (e.g., 60 seconds) to handle cases where the customer abandons the payment
        :::

        :::info
        For the complete push payments flow, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
        :::
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3375bfc"
              examples:
                payment_intent_pending:
                  $ref: "#/x-ext/a5e454b"
                payment_intent_processing:
                  $ref: "#/x-ext/693f7fa"
                payment_intent_completed:
                  $ref: "#/x-ext/1934f11"
                payment_intent_cancelled:
                  $ref: "#/x-ext/3a33638"
                payment_intent_failed:
                  $ref: "#/x-ext/59d80c8"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Payment intents
  826a913:
    type: string
    description: >-
      The current state of the payment intent.


      | State | Description |

      |-------|-------------|

      | `pending` | Payment intent created and sent to terminal, customer has
      not yet started interacting |

      | `processing` | Customer is actively interacting with the terminal (e.g.,
      inserting card, entering PIN) |

      | `completed` | Payment authorization is complete, includes a `payment_id`
      in the response |

      | `cancelled` | Payment intent was cancelled (by system or customer) |

      | `failed` | Payment intent failed due to technical issues (timeout,
      terminal unavailable, network error) |
    enum:
      - pending
      - processing
      - completed
      - cancelled
      - failed
  3fb6b5d:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Create a payment intent
      operationId: createPaymentIntent
      description: |-
        Create a payment intent to push a payment request to a specific Revolut Terminal device.

        This endpoint is used in push payments to Revolut Terminal integration, where a POS system sends payment requests to physical terminal devices. The terminal must be in Pay at Counter mode and assigned to the same location as the order.

        **Requirements:**
        - Order must be created with `channel: "pos"` and include a `location_id`
        - Terminal must be online, in `pos` operation mode, and assigned to the same location
        - Amount must match the order amount

        **What happens next:**
        - The payment request appears on the Revolut Terminal screen
        - Customer presents their card or device to complete payment
        - You should poll the payment intent status until it reaches a final state (`completed`, `cancelled`, or `failed`)
        - When the payment intent reaches `completed` state, use the returned `payment_id` to retrieve the final payment status

        :::info
        For the complete push payments flow, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
        :::
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/a0c2d2d"
            examples:
              create_payment_intent:
                $ref: "#/x-ext/bdb9bd1"
      responses:
        "201":
          description: Payment intent created
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3375bfc"
              examples:
                payment_intent_pending:
                  $ref: "#/x-ext/a5e454b"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Payment intents
  "7e82680":
    type: object
    description: Details of a physical address.
    properties:
      street_line_1:
        type: string
        description: Primary address line.
        maxLength: 100
      street_line_2:
        type: string
        description: Secondary address line, such as floor and apartment number.
        maxLength: 100
      region:
        type: string
        description: State or province of the address.
        maxLength: 100
      city:
        type: string
        description: City of the address.
        maxLength: 100
      country_code:
        type: string
        pattern: ^[A-Z]{2}$
        description: ISO 2-letter country code.
        minLength: 2
        maxLength: 2
      postcode:
        type: string
        description: Postal code of the address.
        maxLength: 100
    required:
      - street_line_1
      - city
      - country_code
      - postcode
  1e4d41d:
    type: object
    description: |-
      Contact details for someone responsible for the shipment.

      :::warning
      At least `email` or `phone` is required.
      :::
    properties:
      name:
        type: string
        description: Full name of the contact person.
        maxLength: 250
      email:
        type: string
        format: email
        description: Email address of the contact person.
      phone:
        type: string
        description: Phone number of the contact person.
  9a48b63:
    type: string
    format: uri
    pattern: ^https?:\/{2}.+/gi
    maxLength: 2000
    description: >-
      The URL of the order stored in the merchant's order management system.


      This URL will be included in the order confirmation email for payments
      made via Revolut Pay. If specified, this URL will override the default
      link to the merchant's **Business website** configured in the Revolut
      Business account.


      :::warning

      Restrictions:

      - Must be a valid URI as defined by [RFC
      3986](https://datatracker.ietf.org/doc/html/rfc3986)

      - URI scheme is required and must be either `http` or `https`

      - URI host is required and cannot be `localhost` or an IP address

      - Max length: `2000`

      - Reserved or invalid characters must be percent-encoded (for example, use
      `%20` instead of a space)

      :::
  a0e71d2:
    type: object
    properties:
      name:
        type: string
        maxLength: 250
        description: Name of the line item.
      type:
        type: string
        enum:
          - physical
          - service
        description: Type of the line item.
      quantity:
        $ref: "#/x-ext/990fbe0"
      unit_price_amount:
        type: integer
        format: int64
        minimum: 0
        description: The unit price of the line item.
      total_amount:
        type: integer
        format: int64
        description: The total amount to be paid for the line item, including taxes and
          discounts.
      external_id:
        type: string
        maxLength: 250
        description: Unique identifier of line item in the merchant's system.
      discounts:
        type: array
        maxItems: 50
        description: A list of discounts applied to the line item. Each discount should
          be subtracted from the total amount payable for the item.
        items:
          $ref: "#/x-ext/e7c4087"
      taxes:
        type: array
        maxItems: 50
        description: A list of taxes applied to the line item. Each tax should be added
          to the total amount payable for the item.
        items:
          $ref: "#/x-ext/0dd3cd4"
      image_urls:
        type: array
        maxItems: 50
        description: A list of URLs pointing to images related to the line item. These
          images can provide visual details or representations of the item.
        items:
          $ref: "#/x-ext/daab7f0"
      description:
        type: string
        maxLength: 1024
        description: Description of the line item.
      url:
        type: string
        format: uri
        pattern: ^https?:\/{2}.+/gi
        maxLength: 2000
        description: >-
          An HTTP/HTTPS URL that links to more information about the line item,
          such as a product page or details.


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be either `http` or `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `2000`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
    required:
      - name
      - unit_price_amount
      - total_amount
      - quantity
      - type
  2bc003b:
    type: object
    description: >-
      Represents a single incremental authorisation attempt on an order.


      The `incremental_authorisations` array tracks all increment attempts
      (successful and failed) in chronological order.
    properties:
      new_amount:
        type: integer
        description: The new total amount requested in this increment (in minor units).
        examples:
          - 600
      old_amount:
        type: integer
        description: The previously authorised amount before this increment (in minor
          units).
        examples:
          - 500
      state:
        type: string
        enum:
          - pending
          - processing
          - authorised
          - declined
          - failed
        description: >-
          The state of this incremental authorization attempt.


          | State | Description |

          |-------|-------------|

          | `pending` | Increment registered in system, not yet submitted to
          card network |

          | `processing` | Increment is being processed by card network |

          | `authorised` | Increment was successfully authorised |

          | `declined` | Increment was declined by card issuer |

          | `failed` | Increment failed due to technical error (not an issuer
          decline) |
      reference:
        $ref: "#/x-ext/a7167a9"
      line_items:
        type: array
        description: >-
          Line items associated with this increment (if provided).


          :::note

          If the increment is successful, these line items will override the
          existing order line items.

          :::
        items:
          $ref: "#/x-ext/a0e71d2"
      reason:
        type: string
        description: |-
          Reason why increment was declined or failed.

          :::note
          Only present when `state` is `declined` or `failed`.
          :::
        examples:
          - insufficient_funds
  a869377:
    type: array
    description: |-
      History of incremental authorisation attempts for this order.

      Only present for orders with `authorisation_type: pre_authorisation`.

      Contains all increment attempts in chronological order.
    items:
      $ref: "#/x-ext/2bc003b"
  f555917:
    type: string
    description: The reason for a `failed` or `declined` payment, sent by the
      financial institution processing the payment.
  2df9c77:
    type: string
    format: date-time
    description: The date and time the payment was created.
  a450668:
    type: string
    format: date-time
    description: The date and time the payment was last updated.
  "8038e80":
    type: integer
    description: >-
      The currently authorised amount for this payment (in minor units).


      For pre-authorised payments with incremental authorization:

      - Initially equals the `amount` field

      - Remains unchanged during increment processing

      - Updates to new amount upon successful increment

      - Remains at original amount if increment is declined


      For standard payments, this field may not be present or will equal the
      `amount` field.
    examples:
      default:
        value: 600
  ff17c84:
    type: integer
    description: The amount of the settled payment (minor currency unit). For
      example, `7034` stands for €70.34.
  71cc49f:
    type: object
    description: |-
      Object containing details of a SEPA Direct Debit payment.

      :::info
      For more information, see: [SEPA Direct Debit server-to-server integration](/docs/guides/merchant/accept-payments/payment-methods/sepa-direct-debit/server-to-server)
      :::
    properties:
      id:
        type: string
        format: uuid
        description: >-
          ID of the saved payment method.


          :::note

          The `id` parameter is only returned when the payment method is saved
          for the merchant.

          :::
      type:
        $ref: "#/x-ext/a32ab53"
      debtor_iban_last_four:
        $ref: "#/x-ext/b4be48a"
      debtor_name:
        $ref: "#/x-ext/910c00d"
      mandate_reference:
        $ref: "#/x-ext/ff0c6e3"
    required:
      - type
  be93062:
    type: string
    description: |-
      The currency of the settled payment. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

      :::info
      For 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/).
      :::
  00ce429:
    type: object
    description: Object containing address details.
    properties:
      street_line_1:
        type: string
        description: Street line 1 information.
        maxLength: 100
      street_line_2:
        type: string
        description: Street line 2 information.
        maxLength: 100
      region:
        type: string
        description: The region associated with the address.
        maxLength: 100
      city:
        type: string
        description: The city associated with the address.
        maxLength: 100
      country_code:
        type: string
        description: The 2-letter country code of the country associated with the address.
        maxLength: 2
      postcode:
        type: string
        description: The postcode associated with the address.
        maxLength: 100
    required:
      - country_code
      - postcode
  24b2457:
    type: string
    description: |-
      The risk level of the card.

      If the risk level is `high`, the payment might be declined.
    enum:
      - low
      - high
  b19be60:
    title: Payer
    type: object
    description: >-
      The person who made the payment. This object is present when an email or
      phone number is provided during the payment flow.


      Capturing payer details lets you identify exactly who authorised the
      charge, reach the right person for receipts or refund queries, and support
      compliance or fraud-review workflows where the paying identity matters.
    properties:
      email:
        $ref: "#/x-ext/7c3734e"
        description: The email of the person who made the payment.
      phone:
        $ref: "#/x-ext/e3f9143"
        description: The phone number of the payer in [E.164
          format](https://en.wikipedia.org/wiki/E.164).
  b3c410a:
    title: Order customer
    type: object
    description: >-
      A lightweight customer object embedded in an order.


      This is a simplified representation intended for the order context. For
      the full customer object including all payment methods, use the [Retrieve
      a customer](/docs/api/merchant#retrieve-customer) endpoint.
    properties:
      id:
        $ref: "#/x-ext/fbf1277"
      email:
        $ref: "#/x-ext/7c3734e"
      phone:
        $ref: "#/x-ext/e3f9143"
      full_name:
        $ref: "#/x-ext/0b50233"
      date_of_birth:
        $ref: "#/x-ext/8f22aa4"
    required:
      - id
  0a55077:
    title: Simplified order
    type: object
    description: >-
      A simplified order object returned in list responses.


      To get the full details of an order, use the [Retrieve an
      order](/docs/api/merchant#retrieve-order) endpoint.
    properties:
      id:
        $ref: "#/x-ext/8ada47f"
      token:
        $ref: "#/x-ext/db8ab7a"
      type:
        $ref: "#/x-ext/704e5bd"
      state:
        $ref: "#/x-ext/e512ba4"
      created_at:
        type: string
        format: date-time
        description: The date and time the order was created.
      updated_at:
        type: string
        format: date-time
        description: The date and time the order was last updated.
      amount:
        $ref: "#/x-ext/7dfa842"
      currency:
        $ref: "#/x-ext/1b2472a"
      outstanding_amount:
        $ref: "#/x-ext/6758f6f"
      capture_mode:
        $ref: "#/x-ext/e3d4819"
      enforce_challenge:
        $ref: "#/x-ext/d9d8857"
      authorisation_type:
        $ref: "#/x-ext/60768e8"
      description:
        $ref: "#/x-ext/a0887df"
      metadata:
        $ref: "#/x-ext/c146ad0"
      related_order_id:
        $ref: "#/x-ext/c351b6d"
      customer:
        $ref: "#/x-ext/b3c410a"
      line_items:
        $ref: "#/x-ext/bca3068"
      merchant_order_data:
        $ref: "#/x-ext/31aea79"
      location_id:
        $ref: "#/x-ext/38a61e6"
      redirect_url:
        $ref: "#/x-ext/25c3c73"
      cancel_authorised_after:
        $ref: "#/x-ext/bd14ecb"
      statement_descriptor_suffix:
        $ref: "#/x-ext/52074cd"
    required:
      - id
      - type
      - state
      - created_at
      - updated_at
      - amount
      - currency
      - outstanding_amount
      - capture_mode
      - enforce_challenge
  4fe92c0:
    type: object
    required:
      - orders
    properties:
      orders:
        type: array
        description: List of orders.
        items:
          $ref: "#/x-ext/0a55077"
  6b57408:
    type: object
    description: Browser environment
    properties:
      type:
        type: string
        enum:
          - browser
        description: Type of environment where the payment was made.
        examples:
          - browser
      time_zone_utc_offset:
        type: integer
        description: Defines the offset to UTC in minutes.
        examples:
          - 180
      color_depth:
        type: integer
        description: The browser's available colour depth.
        examples:
          - 32
      screen_width:
        type: integer
        description: The browser's screen width in pixels.
        examples:
          - 1920
      screen_height:
        type: integer
        description: The browser's screen height in pixels.
        examples:
          - 1080
      java_enabled:
        type: boolean
        description: Indicates if the browser has Java enabled.
        examples:
          - false
      challenge_window_width:
        type: integer
        description: Defines the width of the pop-up window where the authentication
          challenge appears.
        examples:
          - 640
      browser_url:
        type: string
        format: url
        description: The URL of the page where the payment was initiated.
        examples:
          - https://business.revolut.com
    required:
      - type
      - time_zone_utc_offset
      - color_depth
      - screen_width
      - screen_height
      - java_enabled
  7a04dee:
    description: |-
      Environment object, indicating in which environment the payment was made.

      :::warning
      Only required if `initiator: customer`.
      :::

      :::note
      Only `browser` is available at the moment.
      :::
    type: object
    discriminator:
      propertyName: type
      mapping:
        browser: ./Browser-Environment.yaml
    oneOf:
      - $ref: "#/x-ext/6b57408"
  e7ed3e3:
    type: object
    properties:
      saved_payment_method:
        type: object
        description: Object containing information about the saved payment method used
          to pay for the order.
        properties:
          type:
            type: string
            enum:
              - card
              - revolut_pay
            description: Type of saved payment method.
            examples:
              - card
          id:
            type: string
            description: Saved payment method ID.
          initiator:
            type: string
            description: >-
              Indicates who is allowed to initiate the payment. 


              :::note

              Using this endpoint, only merchant initiated payments are
              supported with Revolut Pay.

              :::
            enum:
              - customer
              - merchant
            examples:
              - customer
          environment:
            $ref: "#/x-ext/7a04dee"
        required:
          - type
          - id
          - initiator
          - environment
    required:
      - saved_payment_method
  35cad8b:
    title: three_ds
    type: object
    description: Information about the 3DS challenge.
    properties:
      type:
        $ref: "#/x-ext/8f4fd3d"
      acs_url:
        type: string
        format: url
        description: The URL of the authentication challenge.
    required:
      - type
      - acs_url
  7ddfc2b:
    properties:
      type:
        type: string
        enum:
          - card
          - revolut_pay
        description: The type of payment method used to pay for the order.
      subtype:
        type: string
        enum:
          - revolut_account
          - card
        description: Indicates whether the customer used their card or Revolut account
          via Revolut Pay.
      id:
        type: string
        format: uuid
        description: |-
          ID of the saved payment method.

          :::note
          The `id` parameter is only returned if the payment method is saved.
          :::
    required:
      - type
      - subtype
  f193828:
    properties:
      type:
        type: string
        enum:
          - card
          - revolut_pay
        description: The type of payment method used to pay for the order.
      subtype:
        type: string
        enum:
          - revolut_account
          - card
        description: Indicates whether the customer used their card or Revolut account
          via Revolut Pay.
      id:
        type: string
        format: uuid
        description: |-
          ID of the saved payment method.

          :::note
          The `id` parameter is only returned if the payment method is saved.
          :::
      brand:
        type: string
        description: The type of the card.
      last_four:
        type: string
        description: The last four digits of the card number.
    required:
      - type
      - subtype
  cc64bb8:
    discriminator:
      propertyName: subtype
      mapping:
        revolut_pay_account: ./RPay-Account.yaml
        revolut_pay_card: ./RPay-Card.yaml
    oneOf:
      - $ref: "#/x-ext/7ddfc2b"
      - $ref: "#/x-ext/f193828"
  a32ab53:
    type: string
    enum:
      - apple_pay
      - card
      - google_pay
      - revolut_pay_card
      - revolut_pay_account
      - sepa_direct_debit
    description: >-
      The type of payment method used to pay for the order.


      Available values:


      | Payment method `type` | Description |

      | --------------------- | ----------- |

      | `apple_pay` | The customer paid the order using Apple Pay. |

      | `card` | The customer paid the order using their credit or debit card. |

      | `google_pay` | The customer paid the order using Google Pay. |

      | `revolut_pay_card` | The customer paid the order via Revolut Pay using
      their credit or debit card. |

      | `revolut_pay_account` | The customer paid the order via Revolut Pay
      using their Revolut account. |

      | `sepa_direct_debit` | The customer paid the order using SEPA Direct
      Debit. |
  b4be48a:
    type: string
    description: The last four digits of the debtor's IBAN.
    minLength: 4
    maxLength: 4
  910c00d:
    type: string
    description: The full name of the debtor as provided in the mandate.
  ff0c6e3:
    type: string
    description: The unique mandate reference generated by Revolut. Include this in
      pre-debit notifications sent to your customers.
  a631133:
    type: string
    description: The type of the payment method.
    enum:
      - card
      - revolut_pay
      - sepa_direct_debit
  1b326c5:
    type: string
    enum:
      - customer
      - merchant
    description: >-
      Indicates in which case this saved payment method can be used for
      payments.


      | Value | Description |

      | ----- | ----------- |

      | `customer` | This payment method can be used only when the customer is
      on the checkout page. |

      | `merchant` | This payment method can be used without the customer being
      on the checkout page, and the merchant can initiate transactions, for
      example, to take payments for recurring transactions. |
  1ef9782:
    type: string
    format: date-time
    description: The date and time the payment method was added.
  e94efe3:
    title: Revolut Pay payment method
    type: object
    description: |-
      A saved Revolut Pay payment method on a customer profile.

      Both Revolut Pay card-backed and account-to-account (A2A) variants are
      represented by this single type at the saved payment method level.
      No underlying card details are exposed here; use the order-level
      `payments[].payment_method` object (types `revolut_pay_card` /
      `revolut_pay_account`) for per-transaction details.
    properties:
      id:
        $ref: "#/x-ext/9e48916"
      type:
        $ref: "#/x-ext/a631133"
      saved_for:
        $ref: "#/x-ext/1b326c5"
      created_at:
        $ref: "#/x-ext/1ef9782"
    required:
      - id
      - type
      - created_at
  4e1db17:
    type: string
    description: The BIN (Bank Identification Number) of the payment card, typically
      the first 6-8 digits.
  "2205e29":
    type: string
    minLength: 4
    maxLength: 4
    description: The last four digits of the payment card number.
  e69b245:
    type: integer
    description: The expiry month of the payment card.
  b5d31bc:
    type: integer
    description: The expiry year of the payment card.
  6f06909:
    type: string
    description: The name of the cardholder as it appears on the card.
  2d85eab:
    type: string
    description: The brand of the payment card.
    enum:
      - visa
      - mastercard
      - american_express
  5c18a1a:
    type: string
    description: The funding type of the payment card.
    enum:
      - debit
      - credit
      - prepaid
  274093f:
    type: string
    description: The name of the card-issuing bank or institution.
  372badf:
    type: string
    minLength: 2
    maxLength: 2
    description: The ISO 3166-1 alpha-2 country code of the country where the
      payment card was issued.
  f6ede59:
    title: Billing address
    type: object
    description: The billing address associated with the payment method.
    properties:
      $ref: "#/x-ext/7e82680/properties"
    required:
      - country_code
      - postcode
  e43fa2c:
    title: SEPA Direct Debit payment method
    type: object
    description: |-
      A saved SEPA Direct Debit payment method on a customer profile.

      :::info
      For more information, see: [SEPA Direct Debit server-to-server integration](/docs/guides/merchant/accept-payments/payment-methods/sepa-direct-debit/server-to-server)
      :::
    properties:
      id:
        $ref: "#/x-ext/9e48916"
      type:
        $ref: "#/x-ext/a631133"
      saved_for:
        $ref: "#/x-ext/1b326c5"
      debtor_iban_last_four:
        $ref: "#/x-ext/b4be48a"
      debtor_name:
        $ref: "#/x-ext/910c00d"
      mandate_reference:
        $ref: "#/x-ext/ff0c6e3"
      billing_address:
        $ref: "#/x-ext/f6ede59"
      created_at:
        $ref: "#/x-ext/1ef9782"
    required:
      - id
      - type
      - created_at
  6c1e107:
    title: Card payment method
    type: object
    description: >-
      A saved card payment method.


      :::info

      The `checks` object (3DS, CVV, address verification) is not included as it
      is specific to the transactional payment context.

      :::
    properties:
      id:
        $ref: "#/x-ext/9e48916"
      type:
        $ref: "#/x-ext/a631133"
      saved_for:
        $ref: "#/x-ext/1b326c5"
      created_at:
        $ref: "#/x-ext/1ef9782"
      bin:
        $ref: "#/x-ext/4e1db17"
      last_four:
        $ref: "#/x-ext/2205e29"
      expiry_month:
        $ref: "#/x-ext/e69b245"
      expiry_year:
        $ref: "#/x-ext/b5d31bc"
      cardholder_name:
        $ref: "#/x-ext/6f06909"
      brand:
        $ref: "#/x-ext/2d85eab"
      funding:
        $ref: "#/x-ext/5c18a1a"
      issuer:
        $ref: "#/x-ext/274093f"
      issuer_country:
        $ref: "#/x-ext/372badf"
      billing_address:
        $ref: "#/x-ext/f6ede59"
    required:
      - id
      - type
      - created_at
  e6050a0:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
      - $ref: "#/x-ext/5cb8929"
      - $ref: "#/x-ext/afb87dc"
    get:
      summary: Retrieve a customer's payment method
      operationId: retrievePaymentMethod
      description: "Retrieve the information of a specific saved payment method for a
        customer.  "
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/d9d3db0"
              examples:
                retrieved_payment_method:
                  $ref: "#/x-ext/4f8dfb5"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
    patch:
      summary: Update a customer's payment method
      operationId: updatePaymentMethod
      description: |-
        Update the attributes of a specific saved payment method for a customer.

        :::note
        Updating `saved_for` to `customer` is a one-way operation — you can't change it back to `merchant`.

        Once updated, this payment method can no longer be used for merchant-initiated transactions (MIT), for example, to charge recurring payments. It can only be used when the customer is on the checkout page.

        For more information, see:
        - [Pay for an order](/docs/api/merchant/2024-09-01#pay-order)
        - [Charge a customer's saved payment method](/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method)
        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/724b58d"
            examples:
              example_payment_method_update:
                $ref: "#/x-ext/eea6040"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/d9d3db0"
              examples:
                updated_payment_method:
                  $ref: "#/x-ext/4f8dfb5"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
    delete:
      summary: Delete a customer's payment method
      operationId: deletePaymentMethod
      description: >-
        Delete a specific saved payment method. The payment method is completely
        removed from the customer's saved payment methods.


        To reuse a deleted payment method, direct your customer to the checkout
        page to save their card details again.
      responses:
        "204":
          description: No Content
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Customers
  f4132b2:
    type: string
    format: uuid
    description: The ID of the original payment that was disputed.
  e9a0cb1:
    type: string
    format: uuid
    description: The ID of the order linked to the original disputed payment.
  8c76515:
    type: string
    format: date-time
    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
      when the original disputed payment was created."
  bf0957e:
    type: string
    description: |-
      Acquirer Reference Number (ARN) of the original payment.

      :::note
      Only returned for payments made by a card.
      :::
  0fd0216:
    type: integer
    description: >-
      Amount of the original payment expressed in minor currency units,
      according to the [ISO 4217
      standard](https://en.wikipedia.org/wiki/ISO_4217). For example, `7034` in
      `EUR` corresponds to €70.34.


      :::info

      Conversion 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).

      :::
  3104eb3:
    type: string
    format: date-time
    description: >-
      This parameter specifies the start boundary for filtering report data. It
      accepts ETC/UTC date and time in [ISO 8601
      format](https://en.wikipedia.org/wiki/ISO_8601) and includes all matching
      records on or after this timestamp.


      Combined with the `to` parameter, this determines the report's timeframe,
      including all matching records between the two values.


      For example, by setting the `from` parameter to `2021-01-01T00:00:00Z`,
      the report will include matching records from the first second of January
      1, 2021, UTC, and onwards.
  3b5796b:
    type: string
    format: date-time
    description: >-
      This parameter specifies the end boundary for filtering report data. It
      accepts ETC/UTC date and time in [ISO 8601
      format](https://en.wikipedia.org/wiki/ISO_8601) and includes all matching
      records before this timestamp (exclusive).


      Combined with the `from` parameter, this determines the timeframe for the
      report, including all matching records between the two values.


      For example, setting the `to` parameter to `2021-12-31T23:59:59Z` will
      include all matching records in the report up to, but not including, the
      last second of December 31, 2021, UTC.
  3dfaa9a:
    type: array
    items:
      type: string
      enum:
        - payment
        - refund
        - dispute
    description: >-
      Select source entity families to be included in the report.


      | Value | Description |

      | ----- | ----------- |

      | `payment` | Include rows originating from payment settlement activity. |

      | `refund` | Include rows originating from refund activity. |

      | `dispute` | Include rows originating from dispute and chargeback
      activity. |


      :::note

      These values are filter input categories. They do not map 1:1 to the CSV
      `type` output column. For example, a settlement report filtered with
      `payment`, `refund`, and `dispute` can still return CSV `type` values such
      as `SETTLEMENT`, `REFUND`, `CHARGEBACK`, and `CHARGEBACK_REVERSAL`.

      :::
  dab0a46:
    type: array
    items:
      type: string
      enum:
        - completed
        - processing
        - cancelled
        - reverted
    description: >-
      Select transactions by state to be included in the report.


      | Value | Description |

      | ----- | ----------- |

      | `completed` | Include transactions that reached their final successful
      state. |

      | `processing` | Include transactions that are still being processed. |

      | `cancelled` | Include transactions that were cancelled before final
      completion. |

      | `reverted` | Include transactions that were reversed after initial
      creation. |


      If not provided, only `completed` transactions will be included in the
      report.
  aacd9d1:
    type: string
    description: |-
      Select transactions with specific currencies to include in the report. Provide [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

      :::info
      For 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/).
      :::
    minLength: 3
    maxLength: 3
    examples:
      default:
        value: GBP
  4fa5d34:
    type: string
    format: uuid
    description: |-
      Select transactions by location ID to be included in the report.

      :::info
      For more information, see: [Locations](/docs/api/merchant#tag-locations).
      :::        
  fd1b3d8:
    type: string
    description: >-
      Defaults to `ETC/UTC`. Defines the output timezone for all timestamps
      displayed in the report.


      Has no effect on `from` or `to` parameters.
    examples:
      default:
        value: Europe/London
  0782f68:
    type: object
    description: Further options to customise the report.
    properties:
      timezone:
        $ref: "#/x-ext/fd1b3d8"
      columns:
        type: array
        description: >-
          Names of the columns to include in the report.


          If not specified, all available columns are included. An empty array
          returns an error.


          To include custom order metadata, use `metadata.*` with the attribute
          name, for example `metadata.my_attribute`.


          Available columns:

            | Column name | Description |
            | ----------- | ----------- |
            | `transaction_id` | Unique identifier of the ledger transaction. Matches `transaction_id` in the settlement and payout reports. Use `order_id` to cross-reference with the payments report. |
            | `related_transaction_id` | For refund and chargeback transactions, the ledger transaction ID of the original payment. Corresponds to `original_transaction_id` in the payout report. |
            | `transaction_description` | Description of the transaction. |
            | `payout_id` | Unique identifier of the payout that this transaction contributed to. |
            | `dispute_id` | Unique identifier of the dispute associated with this transaction, if applicable. |
            | `account_id` | Unique identifier of the merchant account. |
            | `account_balance` | Account balance at the time of the transaction. |
            | `order_id` | Unique identifier of the order. Use to cross-reference with the payments or payout reports. |
            | `original_order_id` | For refunds and chargebacks, the order ID of the original payment. For settlement transactions, matches `order_id`. |
            | `original_order_ext_ref` | Merchant's order identifier of the original order for external reference. |
            | `order_description` | Description of the order. |
            | `order_channel` | Channel through which the order was created. |
            | `order_customer_note` | Note added by the customer at the time of the order. |
            | `order_tip_amount` | Tip amount set at the order level. |
            | `order_created_by` | Identifier of the user who created the order. |
            | `payment_initiated_by` | Identifier of who initiated the payment. |
            | `order_line_items` | Line items included in the order, if any. |
            | `payout_reference` | Reference of the payout transfer associated with the transaction. |
            | `invoice_reference` | Invoice reference associated with the order, if any. |
            | `started_date` | Start timestamp shown on the row. For payment rows, this is the payment start timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction start timestamp. Separate from the report filter timeframe. |
            | `created_date` | Date and time the order was created. |
            | `updated_date` | Last update timestamp shown on the row. For payment rows, this is the payment update timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction update timestamp. Separate from the report filter timeframe. |
            | `completed_date` | Completion timestamp shown on the row. For payment rows, this is the payment completion timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction completion timestamp. Separate from the report filter timeframe. |
            | `payment_created_date` | Payment authorisation or creation timestamp for rows linked to a payment. Empty for refunds and non-payment-related rows where no payment timestamp applies. This is returned data, not the report filter key. |
            | `payment_captured_date` | Payment capture timestamp for rows linked to a captured payment. Empty for refunds, non-payment-related rows, or payments not captured. This is returned data, not the report filter key. |
            | `type` | Category of the reported transaction row, indicating what kind of balance-affecting event the row represents. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `legacy_type` | Legacy type value for backwards compatibility. |
            | `state` | State of the transaction. |
            | `description` | Description of the transaction. |
            | `merchant_order_ext_ref` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |
            | `customer_id` | Unique identifier of the customer. |
            | `amount` | Total amount of the order. |
            | `currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the order. |
            | `settlement_amount` | Total amount settled on the merchant's account. |
            | `settlement_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the settled amount. |
            | `exchange_rate` | Exchange rate applied if currency conversion occurred. |
            | `refunded_amount` | Amount refunded for the order. |
            | `statement_descriptor` | Statement descriptor shown on the customer's bank statement. |
            | `tip_amount` | Tip amount included in the transaction. |
            | `terminal_hardware_id` | Identifier of the card reader hardware used, for in-person payments. |
            | `customer_name` | Name of the customer. |
            | `customer_email` | Email address of the customer. |
            | `customer_card_number` | Masked card number used for the payment. |
            | `customer_card_brand` | Card brand used for the payment. Derived from BIN data. Example values: `VISA`, `MASTERCARD`, `MASTERCARD_DEBIT`, `MAESTRO`, `AMEX`, `DINERS`, `DISCOVER`, `JCB`. |
            | `customer_card_type` | Card funding type of the card used for the payment, for example debit, credit, prepaid, deferred debit, or charge. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `customer_card_category` | Card commercial category. Values: `consumer` (personal card) and `commercial` (business or corporate card). |
            | `payment_method` | Payment method the customer used to pay for the order. |
            | `fee_amount` | Total fee amount applied to the order, aggregated across all fee components (acquiring markup + interchange + scheme fees). |
            | `fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the total fee. |
            | `processing_fee_amount` | Acquiring markup fee only — a subset of `fee_amount`. Represents Revolut's service fee, excluding interchange and scheme fees. |
            | `processing_fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the acquiring markup fee. |
            | `fx_fee_amount` | Foreign exchange fee amount, if applicable. |
            | `fx_fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the FX fee. |
            | `browser_url` | The URL where the customer initiated the payment. |
            | `beneficiary_name` | Name of the beneficiary, for bank transfer payments. |
            | `beneficiary_account_number` | Account number of the beneficiary, for bank transfer payments. |
            | `location_id` | Unique identifier of the location related to the transaction. |
            | `location_name` | Name of the location related to the transaction. |
            | `surcharge_amount` | Surcharge amount applied to the transaction. Omitted when no surcharge applies. |
            | `order_surcharge_amount` | Surcharge amount set at the order level. |
            | `order_custom_field_name` | Name of a custom field set on the order. |
            | `order_custom_field_value` | Value of a custom field set on the order. |
            | `offline_payment_state` | State of an offline payment, if applicable. |
            | `order_authorisation_type` | Authorisation type of the order, for example `FULL` or `PRE_AUTH`. |
            | `metadata.*` | Custom order metadata. Replace `*` with the attribute name, for example `metadata.my_attribute`. |
        items:
          type: string
          enum:
            - transaction_id
            - related_transaction_id
            - transaction_description
            - payout_id
            - dispute_id
            - account_id
            - account_balance
            - order_id
            - original_order_id
            - original_order_ext_ref
            - order_description
            - order_channel
            - order_customer_note
            - order_tip_amount
            - order_created_by
            - payment_initiated_by
            - order_line_items
            - payout_reference
            - invoice_reference
            - started_date
            - created_date
            - updated_date
            - completed_date
            - payment_created_date
            - payment_captured_date
            - type
            - legacy_type
            - state
            - description
            - merchant_order_ext_ref
            - customer_id
            - amount
            - currency
            - settlement_amount
            - settlement_currency
            - exchange_rate
            - refunded_amount
            - statement_descriptor
            - tip_amount
            - terminal_hardware_id
            - customer_name
            - customer_email
            - customer_card_number
            - customer_card_brand
            - customer_card_type
            - customer_card_category
            - payment_method
            - fee_amount
            - fee_currency
            - processing_fee_amount
            - processing_fee_currency
            - fx_fee_amount
            - fx_fee_currency
            - browser_url
            - beneficiary_name
            - beneficiary_account_number
            - location_id
            - location_name
            - surcharge_amount
            - order_surcharge_amount
            - order_custom_field_name
            - order_custom_field_value
            - offline_payment_state
            - order_authorisation_type
            - metadata.*
        examples:
          - - transaction_id
            - amount
            - currency
            - metadata.my_attribute
  4d0713e:
    type: object
    description: Further options to customise the report.
    properties:
      timezone:
        $ref: "#/x-ext/fd1b3d8"
      columns:
        type: array
        items:
          type: string
          enum:
            - payment_id
            - type
            - description
            - original_payment_id
            - order_id
            - state
            - reason
            - amount
            - currency
            - surcharge_amount
            - tip_amount
            - refunded_amount
            - created_date
            - captured_date
            - merchant_order_ext_ref
            - payment_method
            - location_id
            - customer_id
            - customer_card_number
            - customer_card_country
            - customer_card_brand
            - customer_card_type
            - customer_card_category
            - customer_email
            - fee_amount
            - fee_currency
        description: >-
          Names of the columns to be included in the report.


          If the `columns` parameter is not defined in the request, all
          available columns will be included in the report. An empty array will
          return an error.


          Available columns:

            | Column name | Description |
            | ----------- | ----------- |
            | `payment_id` | Unique identifier of the payment. |
            | `type` | Category of the payment row, indicating whether the row represents a payment attempt or a refund. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `description` | Description of the payment. |
            | `original_payment_id` | For refunds, the unique identifier of the original payment. |
            | `order_id` | Unique identifier of the order associated with the payment. |
            | `state` | Lifecycle state of the payment. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `reason` | Reason for a failed or declined payment, for example: `Insufficient Funds`. |
            | `amount` | Total amount of the payment. |
            | `currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the payment. |
            | `surcharge_amount` | Surcharge amount applied to the payment, if any. |
            | `tip_amount` | Tip amount included in the payment, if any. |
            | `refunded_amount` | Amount refunded for the payment. |
            | `created_date` | Date and time the payment was created. |
            | `captured_date` | Date and time the payment was captured. Empty when the payment has not been captured. |
            | `merchant_order_ext_ref` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |
            | `payment_method` | Payment method used, for example: `CARD` or `PAY_WITH_REVOLUT`. |
            | `location_id` | Unique identifier of the location where the payment was made. |
            | `customer_id` | Unique identifier of the customer. |
            | `customer_card_number` | Masked card number used for the payment. |
            | `customer_card_country` | Country of the card used for the payment, as an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code. |
            | `customer_card_brand` | Card brand used for the payment, for example: `VISA` or `MASTERCARD_DEBIT`. |
            | `customer_card_type` | Card funding type of the card used for the payment. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `customer_card_category` | Card commercial category. Values: `consumer` (personal card) and `commercial` (business or corporate card). |
            | `customer_email` | Email address of the customer. |
            | `fee_amount` | Total fee amount charged for the payment. |
            | `fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the fee. |
        examples:
          - - payment_id
            - type
            - state
            - amount
            - currency
  7cff6b1:
    type: object
    description: Further options to customise the report.
    properties:
      timezone:
        $ref: "#/x-ext/fd1b3d8"
      columns:
        type: array
        items:
          type: string
          enum:
            - created_date
            - completed_date
            - payout_affected_date
            - affected_payout_amount
            - transaction_id
            - order_id
            - dispute_id
            - merchant_order_reference
            - type
            - related_icpp_charge_id
            - transaction_amount
            - transaction_currency
            - billing_amount
            - billing_currency
            - state
            - original_transaction_id
            - original_transaction_amount
            - original_transaction_currency
            - original_order_id
            - original_order_channel
            - original_merchant_order_reference
            - fee_amount
            - fee_currency
            - settlement_amount
            - settlement_currency
            - location_id
            - location_name
            - submerchant_id
            - payout_transfer_reference
            - payout_total_amount
            - payout_date
        description: >-
          Names of the columns to be included in the report.


          If the `columns` parameter is not defined in the request, all
          available columns will be included in the report. An empty array will
          return an error.


          Available columns:

            | Column name | Description |
            | ----------- | ----------- |
            | `created_date` | Date and time the transaction was created. |
            | `completed_date` | Date and time the transaction was completed. |
            | `payout_affected_date` | Date and time the payout was affected by this transaction. |
            | `affected_payout_amount` | Boolean flag indicating whether this transaction contributed to the payout amount (`true`) or not (`false`). Despite the name, this is not a monetary value. |
            | `transaction_id` | Unique identifier of the transaction. |
            | `order_id` | Unique identifier of the order associated with the transaction. |
            | `dispute_id` | Unique identifier of the dispute associated with a chargeback or chargeback reversal transaction. Empty for rows not related to a dispute. |
            | `merchant_order_reference` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |
            | `type` | Type of the payout-related ledger event the row represents. For the full list of returned values, see [Download report file](/docs/api/merchant#download-report-file). |
            | `related_icpp_charge_id` | Unique identifier of the IC++ charge related to the transaction, if applicable. |
            | `transaction_amount` | Amount of the transaction in the transaction currency. |
            | `transaction_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the transaction. |
            | `billing_amount` | Amount of the transaction in the billing currency. |
            | `billing_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the billing amount. |
            | `state` | State of the transaction, for example: `COMPLETED`. |
            | `original_transaction_id` | Unique identifier of the original transaction. For refunds, references the transaction being refunded. |
            | `original_transaction_amount` | Amount of the original transaction. |
            | `original_transaction_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the original transaction. |
            | `original_order_id` | Unique identifier of the original order. For refunds, references the order being refunded. |
            | `original_order_channel` | Channel through which the original order was created. |
            | `original_merchant_order_reference` | Merchant's order reference for the original order. The value of the `merchant_order_data.reference` field set when the original order was created. |
            | `fee_amount` | Total fee amount charged for the transaction. |
            | `fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the fee. |
            | `settlement_amount` | Total amount settled on the merchant's account. |
            | `settlement_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the settled amount. |
            | `location_id` | Unique identifier of the location associated with the transaction. |
            | `location_name` | Name of the location associated with the transaction. |
            | `submerchant_id` | Unique identifier of the submerchant associated with the transaction. |
            | `payout_transfer_reference` | Reference of the bank transfer for this payout. This value is the same across all rows in the report, as each report covers a single payout. |
            | `payout_total_amount` | Total amount of this payout. This value is the same across all rows in the report, as each report covers a single payout. |
            | `payout_date` | Date and time the payout covered by this report was created. This value is the same across all rows in the report, as each report covers a single payout. |
        examples:
          - - transaction_id
            - type
            - transaction_amount
            - transaction_currency
  979a492:
    type: object
    description: Further options to customise the report.
    properties:
      timezone:
        $ref: "#/x-ext/fd1b3d8"
      columns:
        type: array
        items:
          type: string
          enum:
            - id
            - created_at
            - operation
            - amount
            - currency
            - settlement_amount
            - settlement_currency
            - payment_method
            - card_scheme
            - card_funding
            - order_description
            - order_merchant_external_ref
            - original_operation_id
            - acquiring_fee_amount
            - card_interchange_fee_amount
            - card_scheme_fee_amount
            - card_type
            - order_channel
            - card_country
        description: >-
          Names of the columns to be included in the report.


          If the `columns` parameter is not defined in the request, all
          available columns will be included in the report. An empty array will
          return an error.


          Available columns:

            | Column name | Description |
            | ----------- | ----------- |
            | `id` | Unique identifier of the payment. |
            | `created_at` | Date and time the payment was created. |
            | `operation` | IC++ transaction type. Values: `SALE` (payment sale), `REFUND` (refund), and `DISPUTE` (dispute-related transaction). |
            | `amount` | Transaction amount. |
            | `currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the transaction. |
            | `settlement_amount` | Amount settled on the merchant's account. |
            | `settlement_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the settled amount. |
            | `payment_method` | Payment method used for the transaction. Returns `REVOLUT_PAY` for Revolut Pay payments, or the card scheme name for card payments. |
            | `card_scheme` | Card BIN scheme. |
            | `card_funding` | Card funding type, for example: `DEBIT` or `PREPAID`. |
            | `order_description` | Description of the order. |
            | `order_merchant_external_ref` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |
            | `original_operation_id` | Unique identifier of the related original transaction. |
            | `acquiring_fee_amount` | IC++ acquiring markup fee component. |
            | `card_interchange_fee_amount` | Interchange fee component. Omitted for Revolut Pay transactions. |
            | `card_scheme_fee_amount` | Card scheme fee component. Omitted for Revolut Pay transactions. |
            | `card_type` | Card commercial category. Values: `COMMERCIAL` (business or corporate card) and `CONSUMER` (personal card). |
            | `order_channel` | Channel through which the order was created. |
            | `card_country` | Country of the card, as an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code. |
        examples:
          - - id
            - operation
            - acquiring_fee_amount
            - card_interchange_fee_amount
            - card_scheme_fee_amount
  a709559:
    type: object
    description: Further options to customise the report.
    properties:
      timezone:
        $ref: "#/x-ext/fd1b3d8"
      columns:
        type: array
        items:
          type: string
          enum:
            - transaction_id
            - order_id
            - original_order_id
            - started_date
            - updated_date
            - completed_date
            - payment_created_date
            - payment_captured_date
            - type
            - state
            - description
            - merchant_order_ext_ref
            - customer_id
            - amount
            - currency
            - settlement_amount
            - settlement_currency
            - payment_method
            - fee_amount
            - fee_currency
            - processing_fee_amount
            - processing_fee_currency
            - browser_url
            - location_id
        description: >-
          Names of the columns to be included in the report.


          If the `columns` parameter is not defined in the request, all
          available columns will be included in the report. An empty array will
          return an error.


          Available columns:

            | Column name | Description |
            | ----------- | ----------- |
            | `transaction_id` | Unique identifier of the ledger transaction related to an order. |
            | `order_id` | Unique identifier of the order. |
            | `original_order_id` | Unique identifier of the original order. For refunds and chargebacks, references the order being reversed. |
            | `started_date` | Start timestamp shown on the row. For payment rows, this is the payment start timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction start timestamp. Separate from the report filter timeframe. |
            | `updated_date` | Last update timestamp shown on the row. For payment rows, this is the payment update timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction update timestamp. Separate from the report filter timeframe. |
            | `completed_date` | Completion timestamp shown on the row. For payment rows, this is the payment completion timestamp. For non-payment rows such as refunds and chargebacks, this is the transaction completion timestamp. Separate from the report filter timeframe. |
            | `payment_created_date` | Payment authorisation or creation timestamp for rows linked to a payment. Empty for refunds and non-payment-related rows where no payment timestamp applies. This is returned data, not the report filter key. |
            | `payment_captured_date` | Payment capture timestamp for rows linked to a captured payment. Empty for refunds, non-payment-related rows, or payments not captured. This is returned data, not the report filter key. |
            | `type` | Settlement report row type. A partial-settlement is represented by separate `SETTLEMENT` and `REFUND` rows, not a dedicated type. |
            | `state` | State of the transaction. |
            | `description` | Description of the order. |
            | `merchant_order_ext_ref` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |
            | `customer_id` | Unique identifier of the customer. |
            | `amount` | Total amount of the order. |
            | `currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the order. |
            | `settlement_amount` | Total amount settled on the merchant's account. |
            | `settlement_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the settled amount. |
            | `payment_method` | Type of the payment method the customer used to pay for the order. |
            | `fee_amount` | Total fee amount applied to the order, aggregated across all fee components (acquiring markup + interchange + scheme fees). |
            | `fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the total fee. |
            | `processing_fee_amount` | Acquiring markup fee only — a subset of `fee_amount`. Represents Revolut's service fee, excluding interchange and scheme fees. |
            | `processing_fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the acquiring markup fee. |
            | `browser_url` | The URL where the customer initiated the payment. |
            | `location_id` | Unique identifier of the location related to the transaction. |
        examples:
          - - transaction_id
            - type
            - amount
            - currency
            - settlement_amount
            - settlement_currency
  7f82492:
    title: Custom report
    type: object
    description: A custom report contains all the query information for generating
      reports of selected transactions associated with a Merchant account.
    properties:
      filter:
        $ref: "#/x-ext/82ecd06"
      format:
        $ref: "#/x-ext/0abca0c"
      type:
        $ref: "#/x-ext/34b6874"
      options:
        $ref: "#/x-ext/0782f68"
    required:
      - filter
      - format
      - type
  21e464e:
    title: Payout statement report
    type: object
    description: A payout statement report contains all the query information for
      generating reports of a selected payout associated with a Merchant
      account.
    properties:
      filter:
        $ref: "#/x-ext/96af67e"
      format:
        $ref: "#/x-ext/0abca0c"
      type:
        $ref: "#/x-ext/34b6874"
      options:
        $ref: "#/x-ext/7cff6b1"
    required:
      - filter
      - format
      - type
  f0f1fcd:
    title: Settlement report
    type: object
    description: A settlement report contains all the query information for
      generating reports of settled transactions associated with a Merchant
      account.
    properties:
      filter:
        $ref: "#/x-ext/82ecd06"
      format:
        $ref: "#/x-ext/0abca0c"
      type:
        $ref: "#/x-ext/34b6874"
      options:
        $ref: "#/x-ext/a709559"
    required:
      - filter
      - format
      - type
  4aad94b:
    type: array
    items:
      type: string
      enum:
        - completed
        - failed
        - declined
        - cancelled
    description: |-
      Select payments by state to be included in the report.

      | Value | Description |
      | ----- | ----------- |
      | `completed` | Include payments that completed successfully. |
      | `failed` | Include payments that failed during processing. |
      | `declined` | Include payments rejected by the issuer or payment flow. |
      | `cancelled` | Include payments cancelled before completion. |

      If not provided, payments in all states will be included in the report.
  e6c75ed:
    type: object
    description: >-
      Filtering parameters to be applied to the report.


      :::note

      For `payments_report`, `from` and `to` are evaluated against the payment
      `created_date`. The `captured_date` column is returned data and does not
      change the filter key.

      :::
    properties:
      from:
        $ref: "#/x-ext/3104eb3"
      to:
        $ref: "#/x-ext/3b5796b"
      entity_states:
        $ref: "#/x-ext/4aad94b"
    required:
      - from
      - to
  7b213d5:
    title: Payments report
    type: object
    description: A payments report contains all the query information for generating
      reports of payments associated with a Merchant account, including failed
      and declined payments.
    properties:
      filter:
        $ref: "#/x-ext/e6c75ed"
      format:
        $ref: "#/x-ext/0abca0c"
      type:
        $ref: "#/x-ext/34b6874"
      options:
        $ref: "#/x-ext/4d0713e"
    required:
      - filter
      - format
      - type
  a376209:
    type: string
    format: uuid
    description: >-
      Permanent ID of of the IC++ fee related to a payout transaction.


      This ID can be obtained from the `related_icpp_charge_id` column of a
      payout statement report.
  6eb8be8:
    type: object
    description: Filtering parameters to be applied to the report.
    properties:
      icpp_charge_id:
        $ref: "#/x-ext/a376209"
    required:
      - icpp_charge_id
  d5e1bd0:
    title: IC++ fee breakdown report
    type: object
    description: A IC++ fee breakdown report contains all the query information for
      generating reports of fees for each IC++ transaction related to a payout.
    properties:
      filter:
        $ref: "#/x-ext/6eb8be8"
      format:
        $ref: "#/x-ext/0abca0c"
      type:
        $ref: "#/x-ext/34b6874"
      options:
        $ref: "#/x-ext/979a492"
    required:
      - filter
      - format
      - type
  ee6af6f:
    parameters:
      - $ref: "#/x-ext/90b9838"
    post:
      summary: Create a report run
      operationId: createReportRun
      description: >-
        Start generating a report of all transactions that match the filter and
        options specified in the request body.


        Use the returned `report_run_id` and the [Retrieve report run
        details](/docs/api/merchant#retrieve-report-run) operation to check the
        status of the generation.


        After generation is done, use the [Download report
        file](/docs/api/merchant#download-report-file) operation to retrieve the
        CSV. The `file_url` in the completed report run object is the request
        URL for that endpoint and requires the same authorisation as any other
        Merchant API request. 


        ### Report types


        The table below helps to choose the right report type for your use case:


        | Report type | What it covers |

        | ----------- | -------------- |

        | `custom_report` | Settled and processing transactions with
        configurable columns |

        | `settlement_report` | All settled transactions, with a configurable
        set of columns |

        | `payments_report` | All payments including failed and declined ones |

        | `payout_statement_report` | All transactions contributing to a
        specific payout |

        | `icpp_fee_breakdown_report` | IC++ fees per transaction for a specific
        IC++ charge |


        ### IDs across report types


        Each report type uses a different primary ID, depending on which system
        the data comes from:


        | ID column | System | Report types |

        | --------- | ------ | ------------ |

        | `payment_id`, `id` | **Acquiring system** - identifies a payment
        attempt | `payments_report`, `icpp_fee_breakdown_report` |

        | `transaction_id` | **Core ledger** - identifies the settlement entry
        created when a payment is captured | `settlement_report`,
        `payout_statement_report`, `custom_report` |

        | `order_id` | **Both systems** - bridges the acquiring and ledger
        perspectives | `settlement_report`, `payments_report`,
        `payout_statement_report`, `custom_report` |
      requestBody:
        content:
          application/json:
            schema:
              discriminator:
                propertyName: type
                mapping:
                  settlement_report: ../components/schemas/Report-Run-Settlement-Report.yaml
                  custom_report: ../components/schemas/Report-Run-Custom-Report.yaml
                  payments_report: ../components/schemas/Report-Run-Payments-Report.yaml
                  payout_statement_report: ../components/schemas/Report-Run-Payout-Report.yaml
                  icpp_fee_breakdown_report: ../components/schemas/Report-Run-Icpp-Report.yaml
              oneOf:
                - $ref: "#/x-ext/f0f1fcd"
                - $ref: "#/x-ext/7f82492"
                - $ref: "#/x-ext/7b213d5"
                - $ref: "#/x-ext/21e464e"
                - $ref: "#/x-ext/d5e1bd0"
            examples:
              custom_report:
                summary: Custom report
                value:
                  filter:
                    from: 2020-01-01T00:00:00Z
                    to: 2020-01-02T00:00:00Z
                    entity_types:
                      - payment
                    entity_states:
                      - completed
                      - processing
                  format: csv
                  type: custom_report
                  options:
                    timezone: Europe/London
                    columns:
                      - transaction_id
                      - amount
                      - currency
                      - metadata.custom_attribute
              settlement_report:
                summary: Settlement report
                value:
                  filter:
                    from: 2020-01-01T00:00:00Z
                    to: 2020-01-02T00:00:00Z
                    entity_types:
                      - payment
                  format: csv
                  type: settlement_report
              payments_report:
                summary: Payments report
                value:
                  filter:
                    from: 2020-01-01T00:00:00Z
                    to: 2020-01-02T00:00:00Z
                    entity_states:
                      - completed
                      - failed
                      - declined
                  format: csv
                  type: payments_report
              payout_statement_report:
                summary: Payout statement report
                value:
                  filter:
                    payout_id: a830020e-090c-4717-836d-37941a27ad12
                  format: csv
                  type: payout_statement_report
              icpp_fee_breakdown_report:
                summary: IC++ fee breakdown report
                value:
                  filter:
                    icpp_charge_id: 41d6c699-744a-4994-91c0-9227539c587f
                  format: csv
                  type: icpp_fee_breakdown_report
      responses:
        "201":
          description: Report run created, report started generating
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ae49498"
              examples:
                report_run_processing:
                  summary: Report run processing
                  value:
                    report_run_id: d6f6ef64-f668-4e64-8967-1cdf8afb2561
                    status: processing
                report_run_completed:
                  summary: Report run completed, report file ready
                  value:
                    report_run_id: d6f6ef64-f668-4e64-8967-1cdf8afb2561
                    status: completed
                    file_url: https://merchant.revolut.com/api/report-runs/d6f6ef64-f668-4e64-8967-1cdf8afb2561/file
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Report runs
  840a457:
    type: string
    enum:
      - ORDER_COMPLETED
      - ORDER_AUTHORISED
      - ORDER_CANCELLED
      - ORDER_FAILED
      - ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED
      - ORDER_INCREMENTAL_AUTHORISATION_DECLINED
      - ORDER_INCREMENTAL_AUTHORISATION_FAILED
      - ORDER_PAYMENT_AUTHENTICATION_CHALLENGED
      - ORDER_PAYMENT_AUTHENTICATED
      - ORDER_PAYMENT_DECLINED
      - ORDER_PAYMENT_FAILED
      - SUBSCRIPTION_INITIATED
      - SUBSCRIPTION_FINISHED
      - SUBSCRIPTION_CANCELLED
      - SUBSCRIPTION_OVERDUE
      - PAYOUT_INITIATED
      - PAYOUT_COMPLETED
      - PAYOUT_FAILED
      - DISPUTE_ACTION_REQUIRED
      - DISPUTE_UNDER_REVIEW
      - DISPUTE_WON
      - DISPUTE_LOST
    description: >-
      The event type of the webhook notification that's sent by Revolut to your
      webhook URL.


      Each event is related to status changes of a specific object in the
      Merchant API:

        | Object | Event types |
        | --------- | ----------- |
        | `Order`   | <ul> <li>`ORDER_COMPLETED`</li> <li>`ORDER_AUTHORISED`</li> <li>`ORDER_CANCELLED`</li> <li>`ORDER_FAILED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_DECLINED`</li> <li>`ORDER_INCREMENTAL_AUTHORISATION_FAILED`</li> </ul> |
        | `Payment` | <ul> <li>`ORDER_PAYMENT_AUTHENTICATION_CHALLENGED`</li> <li>`ORDER_PAYMENT_AUTHENTICATED`</li> <li>`ORDER_PAYMENT_DECLINED`</li> <li>`ORDER_PAYMENT_FAILED`</li> </ul> |
        | `Subscription`  | <ul> <li>`SUBSCRIPTION_INITIATED`</li> <li>`SUBSCRIPTION_FINISHED`</li> <li>`SUBSCRIPTION_CANCELLED`</li> <li>`SUBSCRIPTION_OVERDUE`</li></ul> |
        | `Payout`  | <ul> <li>`PAYOUT_INITIATED`</li> <li>`PAYOUT_COMPLETED`</li> <li>`PAYOUT_FAILED`</li> </ul> |
        | `Dispute`  | <ul> <li>`DISPUTE_ACTION_REQUIRED`</li> <li>`DISPUTE_UNDER_REVIEW`</li> <li>`DISPUTE_WON`</li> <li>`DISPUTE_LOST`</li></ul> |
  459b5b0:
    type: object
    properties:
      event:
        $ref: "#/x-ext/840a457"
      subscription_id:
        type: string
        format: uuid
        description: The ID of the subscription the event is related to.
      external_reference:
        type: string
        description: The information sent in the `external_reference` field of the
          [Create a subscription](/docs/api/merchant#create-subscription)
          request.
    required:
      - event
      - subscription_id
  7f3912f:
    type: object
    properties:
      event:
        $ref: "#/x-ext/840a457"
      payout_id:
        type: string
        format: uuid
        description: The ID of the payout the event is related to.
    required:
      - event
      - payout_id
  845bfaa:
    type: object
    properties:
      event:
        $ref: "#/x-ext/840a457"
      dispute_id:
        type: string
        format: uuid
        description: The ID of the dispute the event is related to.
    required:
      - event
      - dispute_id
  471852d:
    type: object
    properties:
      event:
        $ref: "#/x-ext/840a457"
      order_id:
        type: string
        format: uuid
        description: The ID of the order the event is related to.
      merchant_order_ext_ref:
        type: string
        description: |-
          The information sent during order creation in the
          `merchant_order_data.reference` field.
      incremental_authorisation_ext_reference:
        type: string
        description: The reference sent in the `reference` field of the [Increment
          authorisation](/docs/api/merchant#increment-authorisation) request.
          Only present for incremental authorisation events.
    required:
      - event
      - order_id
  de972c2:
    "{$request.body#/url}":
      post:
        summary: Send webhook event to webhook URL
        description: |-
          The following webhook event payload is sent as a HTTP POST request to the URL registered as the merchant's webhook server via the [Create a webhook](/docs/api/merchant#create-webhook) operation.

          The delivery of the webhook events happen asynchronously, based on the events you subscribed to.

          :::info
          For more information, see: [Use webhooks to track order and payment lifecycle](/docs/guides/merchant/monitor-and-observe/webhooks/using-webhooks).
          :::

          ### IP allowlisting

          To ensure secure delivery of webhook events, please allowlist the following IP addresses from which the events originate:

          **Production webhook IPs:**
          - `35.246.21.235`
          - `34.89.70.170`

          **Sandbox webhook IPs:**
          - `35.242.130.242`
          - `35.242.162.241`
        parameters:
          - name: Revolut-Request-Timestamp
            in: header
            required: true
            schema:
              type: string
            description: |-
              The [UNIX timestamp](https://www.unixtimestamp.com/) of the date and time when the webhook event was sent from Revolut. Used to verify the webhook event payload was actually sent by Revolut.

              :::info
              For more information, see: [Verify payload signature](/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature)
              :::
          - name: Revolut-Signature
            in: header
            required: true
            schema:
              type: string
            description: |-
              The payload signature computed by Revolut using a Hash-based Message Authentication Code (HMAC). Used to verify the webhook event payload was actually sent by Revolut.

              :::info
              For more information, see: [Verify payload signature](/docs/guides/merchant/monitor-and-observe/webhooks/verify-the-payload-signature)
              :::
        requestBody:
          required: true
          content:
            application/json:
              schema:
                discriminator:
                  propertyName: event
                  mapping:
                    Order or payment event: ../schemas/Webhook-Order-Event.yaml
                    Subscription: ../schemas/Webhook-Subscription-Event.yaml
                    Payout event: ../schemas/Webhook-Payout-Event.yaml
                    Dispute event: ../schemas/Webhook-Dispute-Event.yaml
                oneOf:
                  - $ref: "#/x-ext/471852d"
                  - $ref: "#/x-ext/459b5b0"
                  - $ref: "#/x-ext/7f3912f"
                  - $ref: "#/x-ext/845bfaa"
              examples:
                order_event:
                  summary: Webhook event related to an order or payment
                  value:
                    event: ORDER_COMPLETED
                    order_id: 6634c172-3398-ac93-aee9-50de0282e3ac
                    merchant_order_ext_ref: "Example reference #123"
                subscription_event:
                  summary: Webhook event related to a subscription
                  value:
                    event: SUBSCRIPTION_INITIATED
                    subscription_id: 550e8400-e29b-41d4-a716-446655440000
                    external_reference: ext-ref-12345
                incremental_auth_authorised:
                  summary: Webhook event for successful incremental authorisation
                  value:
                    event: ORDER_INCREMENTAL_AUTHORISATION_AUTHORISED
                    order_id: 6634c172-3398-ac93-aee9-50de0282e3ac
                    incremental_authorisation_ext_reference: CHG-67890
                incremental_auth_declined:
                  summary: Webhook event for declined incremental authorisation
                  value:
                    event: ORDER_INCREMENTAL_AUTHORISATION_DECLINED
                    order_id: 6634c172-3398-ac93-aee9-50de0282e3ac
                    incremental_authorisation_ext_reference: CHG-67891
                incremental_auth_failed:
                  summary: Webhook event for failed incremental authorisation
                  value:
                    event: ORDER_INCREMENTAL_AUTHORISATION_FAILED
                    order_id: 6634c172-3398-ac93-aee9-50de0282e3ac
                    incremental_authorisation_ext_reference: CHG-67892
                payout_event:
                  summary: Webhook event related to a payout
                  value:
                    event: PAYOUT_COMPLETED
                    payout_id: 6634c172-3398-ac93-aee9-50de0282e3ac
                dispute_event:
                  summary: Webhook event related to a dispute
                  value:
                    event: DISPUTE_ACTION_REQUIRED
                    dispute_id: ab934829-e4ba-4e7f-8a21-365cad85c763
        responses:
          "204":
            description: >-
              If the webhook event was delivered successfully, we recommend to
              respond with a `204` code.


              :::info

              You can respond to and acknowledge the delivery of a webhook event
              by any HTTP response code between `200-399`.

              :::
          4XX:
            description: If the webhook event delivery times out or the delivery of the
              events fails, you can respond with any HTTP `4XX` code. In this
              case, Revolut will retry sending the webhook event 3 more times,
              each with a 10-minute delay.
  a31cf96:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/3c1fa9d"
    post:
      summary: Create a webhook
      operationId: createWebhook
      description: >-
        Set up a webhook URL so that the Merchant API can push event
        notifications to the specified URL.

        :::warning

        Merchants can register a **maximum of 10 webhook URLs**. If you attempt
        to register more than 10, the API will return a `422 - Unprocessable
        Content` error.


        Ensure your webhook registrations are necessary and within the allowed
        limit.

        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/ee2e597"
            examples:
              example_webhook_request:
                $ref: "#/x-ext/1bde473"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/ac8c9d5"
              examples:
                created_webhook:
                  $ref: "#/x-ext/a880249"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "422":
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      callbacks:
        Send webhook event:
          $ref: "#/x-ext/de972c2"
      security:
        - Api-Key: []
      tags:
        - Webhooks
    get:
      summary: Retrieve a webhook list
      operationId: retrieveWebhookList
      description: Get a list of webhooks that you are currently subscribed to.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/605e636"
              examples:
                list_of_webhooks:
                  $ref: "#/x-ext/610feef"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Webhooks
  c1e66bb:
    type: string
    description: |-
      Name of the location. 

      :::warning
      The `name` parameter's value must be unique across all locations.
      :::
  fc3b5f1:
    type: string
    description: |-
      Type of the location.

      | Value | Description |
      | ----- | ----------- |
      | `online` | Represents an online store. |
      | `physical` | Represents a physical point of sale. |
    enum:
      - online
      - physical
  7f31e02:
    type: object
    description: Additional details of the location.
    properties:
      domain:
        type: string
        description: |-
          Domain address of the location. Required for online locations.

          :::warning
          The `domain` parameter's value must be unique across all locations.
          :::
    required:
      - domain
  3a0e142:
    type: object
    properties:
      name:
        $ref: "#/x-ext/c1e66bb"
      details:
        $ref: "#/x-ext/7f31e02"
  efeb826:
    type: object
    description: Request body for updating a location. The structure of the
      `details` object depends on the `type` of the location.
    oneOf:
      - $ref: "#/x-ext/3a0e142"
      - $ref: "#/x-ext/5d4dca2"
    discriminator:
      propertyName: type
      mapping:
        online: ./Location-Update-Online.yaml
        physical: ./Location-Update-Physical.yaml
  c17f5d5:
    type: object
    properties:
      name:
        $ref: "#/x-ext/c1e66bb"
      type:
        $ref: "#/x-ext/fc3b5f1"
      details:
        $ref: "#/x-ext/7f31e02"
    required:
      - name
      - type
      - details
  83ba3d8:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/4814d6b"
    get:
      summary: Retrieve a location
      operationId: retrieveLocation
      description: Retrieve details of a specific location, based on its ID.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/cf5e7ce"
              examples:
                example_online_location:
                  $ref: "#/x-ext/dd56a7e"
                example_physical_location:
                  $ref: "#/x-ext/9ca09cb"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Locations
    patch:
      summary: Update a location
      operationId: updateLocation
      description: >-
        Update details of a specific location, based on its ID. 


        Only the fields provided in the request will be updated. Any omitted
        fields will retain their current values.


        :::note

        The value of the location's `type` parameter cannot be updated.

        :::
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/efeb826"
            examples:
              online_location:
                summary: Online location example
                value:
                  name: Cars website - Name update
                  details:
                    domain: cars.example.com
              physical_location:
                summary: Physical location example
                value:
                  name: Example Street Store
                  details:
                    opening_hours:
                      monday:
                        - from: 10:00
                          to: 18:00
                      wednesday:
                        - from: 11:00
                          to: 18:00
      responses:
        "200":
          description: Location updated
          content:
            application/json:
              schema:
                $ref: "#/x-ext/cf5e7ce"
              examples:
                online_location:
                  summary: Online location example
                  value:
                    id: 8d9a7125-805f-40f3-a405-bc89765db996
                    name: Cars website - Name update
                    type: online
                    details:
                      domain: cars.example.com
                physical_location:
                  summary: Physical location example
                  value:
                    name: Example Street Store
                    type: physical
                    details:
                      address: null
                      street_line_1: 123 Example Street
                      city: Example city
                      postcode: "12345"
                      country_code: GB
                    geo_location:
                      lat: 12.3456
                      lon: -12.3456
                    opening_hours:
                      monday:
                        - from: 10:00
                          to: 18:00
                      tuesday:
                        - from: 10:00
                          to: 13:00
                        - from: 16:00
                          to: 18:00
                      wednesday:
                        - from: 11:00
                          to: 18:00
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Locations
    delete:
      summary: Delete a location
      operationId: deleteLocation
      description: Delete a specific location, based on its ID.
      responses:
        "204":
          description: Location deleted
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Locations
  874157f:
    type: object
    description: Additional details of the location.
    properties:
      address:
        $ref: "#/x-ext/7e82680"
      geo_location:
        $ref: "#/x-ext/d4c2387"
      opening_hours:
        $ref: "#/x-ext/51f7943"
    required:
      - address
      - geo_location
      - opening_hours
  990fbe0:
    type: object
    description: Object representing the quantity details of a line item, including
      the amount and its associated unit of measurement.
    properties:
      value:
        type: number
        format: double
        minimum: 0
        description: The number of units of the line item.
      unit:
        type: string
        maxLength: 100
        description: The measurement unit for the quantity, such as `cm`, or `kg`.
    required:
      - value
  e7c4087:
    type: object
    description: Details of a discount applied to the line item, including its name
      and monetary value.
    properties:
      name:
        type: string
        maxLength: 100
        description: The specific name or label of the discount applied to the line item.
      amount:
        type: integer
        format: int64
        minimum: 0
        description: "The monetary value of the discount. "
    required:
      - name
      - amount
  0dd3cd4:
    type: object
    description: Details about a tax applied to the line item, including its name
      and the corresponding amount.
    properties:
      name:
        type: string
        description: The specific name or designation of the tax applied to the line item.
        maxLength: 100
      amount:
        type: integer
        format: int64
        description: The monetary value of the tax in minor currency units (e.g., cents
          for EUR).
        minimum: 0
    required:
      - name
      - amount
  daab7f0:
    type: string
    format: uri
    pattern: ^https?:\/{2}.+/gi
    maxLength: 2000
    description: >-
      URL to an image associated with the line item.


      :::warning

      Restrictions:

      - Must be a valid URI as defined by [RFC
      3986](https://datatracker.ietf.org/doc/html/rfc3986)

      - URI scheme is required and must be either `http` or `https`

      - URI host is required and cannot be `localhost` or an IP address

      - Max length: `2000`

      - Reserved or invalid characters must be percent-encoded (for example, use
      `%20` instead of a space)

      :::
  91fdcb6:
    type: string
    description: >-
      A unique identifier provided by the merchant associated with the order. 


      This `booking_id` is used to reference and correlate booking information
      with the Merchant API and the merchant's internal system.
  111a824:
    type: string
    enum:
      - refundable
      - non_refundable
      - partially_refundable
    description: Parameter indicating whether the booking is refundable, partially
      refundable, or not refundable.
  48e60dd:
    type: object
    description: >-
      Object containing additional information about a car rental booking
      associated with the order.


      :::info

      These are the specific data field requirements for merchants offering car
      rental. Note that these requirements can be extended on a case by case
      basis as decided by Revolut.


      ```

      booking_id

      drop_off_date

      refundability

      ```

      :::
    properties:
      booking_id:
        $ref: "#/x-ext/91fdcb6"
      pick_up_date:
        type: string
        format: date-time
        description: The UTC date and time of the pick-up.
      pick_up_location:
        $ref: "#/x-ext/00ce429"
      drop_off_date:
        type: string
        format: date-time
        description: The UTC date and time of the drop-off.
      drop_off_location:
        $ref: "#/x-ext/00ce429"
      refundability:
        $ref: "#/x-ext/111a824"
      distance_limit:
        type: object
        description: Object containing distance limit information.
        properties:
          limit:
            type: integer
            description: The maximum distance allowed.
          unit:
            type: string
            description: The unit of distance.
            enum:
              - miles
              - km
          additional_distance_cost:
            type: object
            description: Cost for exceeding the distance limit.
            properties:
              amount:
                type: integer
                description: The amount of the cost in minor currency units. For example, enter
                  `7034` for €70.34.
              currency:
                $ref: "#/x-ext/1b2472a"
    required:
      - booking_id
      - drop_off_date
  45b3738:
    type: object
    description: Details of an individual shipment.
    properties:
      shipping_company_name:
        type: string
        maxLength: 250
        description: Name of the company handling the shipment.
      tracking_number:
        type: string
        maxLength: 500
        description: Unique tracking number for the shipment.
      estimated_delivery_date:
        type: string
        format: date-time
        description: |-
          Estimated delivery date and time for the shipment. 
          The time should also include the customer's timezone.
      tracking_url:
        type: string
        format: uri
        pattern: ^https?:\/{2}.+/gi
        maxLength: 2000
        description: >-
          An HTTP/HTTPS URL where the shipment can be tracked.


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be either `http` or `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `2000`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
    required:
      - shipping_company_name
      - tracking_number
  2c330f1:
    type: array
    description: List of individual shipment details.
    maxItems: 50
    items:
      $ref: "#/x-ext/45b3738"
  a4df7da:
    properties:
      id:
        type: string
        description: The ID of the seller in the merchant's internal system.
        minLength: 1
        maxLength: 15
      name:
        type: string
        description: The business or legal name of the seller.
        minLength: 1
        maxLength: 50
      website:
        type: string
        format: uri
        pattern: ^https?:\/{2}.+/gi
        maxLength: 255
        description: >-
          The URL of the website of the seller.


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be either `http` or `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `255`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
      phone:
        type: string
        description: The phone number of the seller.
      address:
        $ref: "#/x-ext/73478d8"
  72cc128:
    type: object
    description: >-
      This object is required by Mastercard and Visa for merchants operating as
      marketplaces under the Merchant Category Code (MCC) `5262`. The
      marketplace object ensures compliance with the card schemes' regulations
      by providing detailed information about the seller involved in the
      transaction.


      :::info

      These are the specific data field requirements for merchants who must
      provide marketplace data.


      ```

      seller.id

      seller.name

      seller.website

      seller.phone

      seller.address

      ```

      :::
    properties:
      seller:
        type: object
        description: Information about the subseller on the marketplace platform.
        properties:
          $ref: "#/x-ext/a4df7da/properties"
        required:
          - id
          - name
          - website
          - phone
          - address
    required:
      - seller
  a448e4a:
    type: object
    properties:
      id:
        type: string
        maxLength: 255
        description: The public transaction hash of the crypto transaction.
      status:
        type: string
        enum:
          - pending
          - failed
          - cancelled
          - completed
        description: The status of the crypto transaction.
      recipient_wallet_id:
        type: string
        maxLength: 255
        description: >-
          The wallet ID of the recipient.


          :::note

          At least one of the parameters: `recipient_user_id` or
          `recipient_wallet_id` is required.

          ::: 
      recipient_user_id:
        type: string
        maxLength: 255
        description: >-
          The user ID of the recipient.


          :::note

          At least one of the parameters: `recipient_user_id` or
          `recipient_wallet_id` is required.

          :::              
    required:
      - id
      - status
      - recipient
  4282f0c:
    type: object
    description: Object containing details of the card used for the payment.
    properties:
      id:
        type: string
        format: uuid
        description: |-
          ID of the saved payment method.

          :::note
          The `id` parameter is only returned when the payment method is saved.
          :::
      type:
        $ref: "#/x-ext/a32ab53"
      card_brand:
        type: string
        description: The type of the card.
        enum:
          - visa
          - mastercard
          - american_express
      funding:
        type: string
        description: The type of card funding.
        enum:
          - credit
          - debit
          - prepaid
      card_country_code:
        type: string
        description: The 2-letter country code of the country where the card was issued.
      card_bin:
        type: string
        description: The BIN of the card.
        minLength: 6
        maxLength: 6
      card_last_four:
        type: string
        description: The last four digits of the card number.
        minLength: 4
        maxLength: 4
      card_expiry:
        type: string
        format: MM/YY
        description: The expiry date of the card in the format of MM/YY.
      cardholder_name:
        type: string
        description: The name of the cardholder.
      checks:
        $ref: "#/x-ext/c7dd364"
      authorisation_code:
        $ref: "#/x-ext/81aebf6"
      arn:
        $ref: "#/x-ext/a164737"
      capture_deadline:
        $ref: "#/x-ext/3cfba3a"
      fingerprint:
        $ref: "#/x-ext/1a4ec64"
      network_transaction_id:
        $ref: "#/x-ext/9bbb548"
    required:
      - type
  30ffe89:
    type: object
    description: Object containing details of a card used via Apple Pay.
    properties:
      $ref: "#/x-ext/4282f0c/properties"
    required:
      - type
  6b05d26:
    type: object
    description: Object containing details of a card used via Google Pay.
    properties:
      $ref: "#/x-ext/4282f0c/properties"
    required:
      - type
  9146afc:
    type: object
    description: Object containing details of a card used via Revolut Pay.
    properties:
      $ref: "#/x-ext/4282f0c/properties"
    required:
      - type
  fa3eb14:
    type: object
    properties:
      type:
        type: string
        description: The type of the order fee.
        enum:
          - fx
          - acquiring
      amount:
        type: integer
        description: The amount of the payment fee (minor currency unit). For example,
          enter `7034` for €70.34 in the field.
      currency:
        type: string
        description: |-
          The currency of the payment fee. [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.

          :::info
          For 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/).
          :::
  87bb99b:
    type: array
    description: The details of the order fee.
    items:
      $ref: "#/x-ext/fa3eb14"
  8f4fd3d:
    type: string
    enum:
      - three_ds
      - three_ds_fingerprint
    description: Type of the authentication challenge the payment triggers.
  2f0ed56:
    title: three_ds_fingerprint
    type: object
    description: Information about the 3DS fingerprint challenge.
    properties:
      type:
        $ref: "#/x-ext/8f4fd3d"
      fingerprint_html:
        type: string
        description: >-
          Base64-encoded HTML string for the 3DS fingerprint challenge. This
          HTML is fully

          constructed by Revolut — no modifications are needed.


          Decode this value using a `base64` decoder and render the resulting
          HTML in your

          front-end application. Revolut automatically moves the payment to the
          full 3DS

          challenge if the fingerprint is not handled within 15 seconds.
        contentEncoding: base64
    required:
      - type
      - fingerprint_html
  2d92828:
    title: three_ds_fingerprint
    type: object
    description: Information about the 3DS fingerprint challenge.
    properties:
      type:
        $ref: "#/x-ext/8f4fd3d"
      fingerprint_url:
        type: string
        format: url
        description: The URL of the fingerprint. (Used only internally by Revolut.)
      fingerprint_data:
        type: string
        format: JSON
        description: >-
          Data about the fingerprint used for authentication. (Used only
          internally

          by Revolut.)
    required:
      - type
      - fingerprint_url
      - fingerprint_data
  3e78e0d:
    type: object
    description: >-
      Details about the authentication challenge that should be performed to
      complete the authentication process. For more information about Revolut's
      3DS solution, see: [3D Secure
      overview](/docs/guides/merchant/reference/3d-secure).


      Only returned if the payment's state is `authentication_challenge`.
    discriminator:
      propertyName: type
      mapping:
        three_ds: ./Three-Ds.yaml
        three_ds_fingerprint: ./Three-Ds-Fingerprint-v2.yaml
    oneOf:
      - $ref: "#/x-ext/35cad8b"
      - $ref: "#/x-ext/2f0ed56"
  faf3b7e:
    type: object
    description: >-
      Details about the authentication challenge that should be performed to
      complete the authentication process. For more information about Revolut's
      3DS solution, see: [3D Secure
      overview](/docs/guides/merchant/reference/3d-secure).


      Only returned if the payment's state is `authentication_challenge`.
    discriminator:
      propertyName: type
      mapping:
        three_ds: ./Three-Ds.yaml
        three_ds_fingerprint: ./Three-Ds-Fingerprint.yaml
    oneOf:
      - $ref: "#/x-ext/35cad8b"
      - $ref: "#/x-ext/2d92828"
  16d7e79:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/6ebce25"
    post:
      summary: Pay for an order
      operationId: payOrder
      description: |-
        Initiate a payment to pay full amount for an order using a customer's saved payment method.

        :::note
        The `/orders/{order_id}/confirm` endpoint has been deprecated. It will be only supported for already existing implementations.
        :::

        :::warning
        This endpoint is part of a new API, pay attention to the different endpoint URL. 
        :::

        For more information about how to save and charge payment methods, see: [Charge a customer's saved payment method](/docs/guides/merchant/optimise-checkout/save-payment-methods/charge-saved-payment-method).

        The following table shows who can initiate payments on saved payment methods (`initiator` parameter), depending on if the payment method was saved for the customer or the merchant (`savedPaymentMethodFor` parameter):

          |                           | `savePaymentMethodFor: customer` | `savePaymentMethodFor: merchant` |
          | ------------------------- | -------------------------------- | -------------------------------- |
          | **`initiator: customer`** | Allowed                          | Allowed                          |
          | **`initiator: merchant`** | Not allowed                      | Allowed                          |


        :::note
        Using this endpoint, only merchant initiated payments are supported with Revolut Pay.
        :::
                  
        For more information about customers' payment methods, see the [Retrieve payment method list of a customer](/docs/api/merchant#retrieve-payment-method-list) operation.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/e7ed3e3"
            examples:
              saved_card_customer:
                summary: Saved card (customer initiator)
                value:
                  saved_payment_method:
                    type: card
                    id: 2b83c23a-650e-40c3-8989-00ee24478738
                    initiator: customer
                    environment:
                      type: browser
                      time_zone_utc_offset: 180
                      color_depth: 48
                      screen_width: 1920
                      screen_height: 1080
                      java_enabled: true
                      challenge_window_width: 640
                      browser_url: https://business.revolut.com
              saved_card_merchant:
                summary: Saved card (merchant initiator)
                value:
                  saved_payment_method:
                    type: card
                    id: 2b83c23a-650e-40c3-8989-00ee24478738
                    initiator: merchant
              revolut_pay:
                summary: Saved Revolut Pay (merchant initiator)
                value:
                  saved_payment_method:
                    type: revolut_pay
                    id: 2b83c23a-650e-40c3-8989-00ee24478738
                    initiator: merchant
      responses:
        "200":
          description: Payment initiated
          content:
            application/json:
              schema:
                $ref: "#/x-ext/11ca5af"
              examples:
                successful_payment_card:
                  summary: Payment authorised (card)
                  value:
                    id: 63c55e04-4208-a43d-9c96-eaee848ffbaf
                    order_id: 63c55df6-1461-a886-b90f-f49d3c370253
                    payment_method:
                      type: card
                      id: 2b83c23a-650e-40c3-8989-00ee24478738
                      brand: mastercard_credit
                      last_four: "1234"
                    state: authorisation_passed
                successful_payment_revolut_pay_account:
                  summary: Payment authorised (Revolut Pay - Revolut account)
                  value:
                    id: 63c55e04-4208-a43d-9c96-eaee848ffbaf
                    order_id: 63c55df6-1461-a886-b90f-f49d3c370253
                    payment_method:
                      type: revolut_pay
                      subtype: revolut_account
                      id: 2b83c23a-650e-40c3-8989-00ee24478738
                    state: authorisation_passed
                successful_payment_revolut_pay_card:
                  summary: Payment authorised (Revolut Pay - card)
                  value:
                    id: 63c55e04-4208-a43d-9c96-eaee848ffbaf
                    order_id: 63c55df6-1461-a886-b90f-f49d3c370253
                    payment_method:
                      type: revolut_pay
                      subtype: card
                      id: 2b83c23a-650e-40c3-8989-00ee24478738
                      brand: visa
                      last_four: "1234"
                    state: authorisation_passed
                three_ds:
                  summary: Saved card payment (3DS challenge)
                  value:
                    id: 5e96b328-4054-41ed-b089-595ccc4d0870
                    order_id: a16718e0-077a-4942-89bc-23ac17a2e14c
                    payment_method:
                      type: card
                      id: 2b83c23a-650e-40c3-8989-00ee24478738
                      brand: mastercard_credit
                      last_four: "1234"
                    state: authentication_challenge
                    authentication_challenge:
                      type: three_ds
                      acs_url: https://example.com
                three_ds_fingerprint:
                  summary: Saved card payment (3DS fingerprint challenge)
                  value:
                    id: 5e96b328-4054-41ed-b089-595ccc4d0870
                    order_id: a16718e0-077a-4942-89bc-23ac17a2e14c
                    payment_method:
                      type: card
                      id: 2b83c23a-650e-40c3-8989-00ee24478738
                      brand: mastercard_credit
                      last_four: "1234"
                    state: authentication_challenge
                    authentication_challenge:
                      type: three_ds_fingerprint
                      fingerprint_url: https://example.com
                      fingerprint_data: string
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorId:
                    type: string
                    description: |-
                      The ID of the error. You can share this ID with Revolut
                      support for troubleshooting.
                  timestamp:
                    type: integer
                    description: The date and time the error happened.
              examples:
                example-1:
                  value:
                    errorId: 94b27660-fdda-49ec-8b85-cd46a068ade0
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorId:
                    type: string
                    description: |-
                      The ID of the error. You can share this ID with Revolut
                      support for troubleshooting.
                  timestamp:
                    type: integer
                    description: The date and time the error happened.
                  code:
                    type: integer
              examples:
                example-1:
                  value:
                    errorId: 94b27660-fdda-49ec-8b85-cd46a068ade0
                    timestamp: 1601296792533
                    code: 1024
      security:
        - Api-Key: []
      tags:
        - Orders
        - Payments
    get:
      summary: Retrieve payment list of an order
      operationId: retrievePaymentList
      description: >-
        Retrieve a list of payments for a specific order, based on the order's
        ID.


        :::note

        This endpoint is part of a new API, pay attention to the different
        endpoint URL.

        :::


        Use this endpoint to retrieve payment details for saved payment methods
        to make merchant and customer initiated transactions. For more
        information, see: 
          - [Speed up customer checkout by using saved card details](/docs/guides/merchant/optimise-checkout/save-payment-methods/checkout-with-saved-card)
          - [Manage subscriptions](/docs/guides/merchant/optimise-checkout/save-payment-methods/subscription-management)
      responses:
        "200":
          description: List of payments
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/x-ext/11ca5af"
              examples:
                payment_list:
                  summary: List of payments (failed card attempt, SEPA Direct Debit retry)
                  value:
                    - id: 63dd0e4a-42c4-a1a6-ab2c-6ac9d255ca4b
                      token: 294358bf-3818-49b2-aacc-7ca971f52695
                      order_id: 63dd0e3f-7b84-ab5c-927c-1a06f7c9583a
                      state: declined
                      amount: 100
                      currency: EUR
                      payment_method:
                        type: card
                        card_brand: visa
                        funding: credit
                        card_last_four: "1234"
                    - id: 649adc44-3e86-a832-879c-2f6d0255dd4c
                      token: 8061e645-35e0-42bb-8318-603abaeab7b7
                      order_id: 63dd0e3f-7b84-ab5c-927c-1a06f7c9583a
                      state: declined
                      amount: 100
                      currency: EUR
                      decline_reason: insufficient_funds
                      payment_method:
                        type: revolut_pay
                        subtype: revolut_account
                    - id: 663387f1-1c2e-a295-b143-9f1fb1eec175
                      token: 663387f1-c91e-a464-908a-1cc4548ebc6a
                      order_id: 63dd0e3f-7b84-ab5c-927c-1a06f7c9583a
                      state: pending
                      amount: 100
                      currency: EUR
                      payment_method:
                        type: sepa_direct_debit
                        debtor_iban_last_four: "1234"
                        debtor_name: John Doe
                        mandate_reference: A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1720528890647
        "401":
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1720528890647
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
                examples:
                  - code: not_found
                    message: Order with id b8883ab5-964a-4329-aa44-4d3c76cf3f54 was not found
                    timestamp: 1720528890647
      security:
        - Api-Key: []
      tags:
        - Orders
        - Payments
  04afbe6:
    type: object
    description: Object containing details of the card used for the payment.
    properties:
      type:
        $ref: "#/x-ext/d6c34b8"
      card_brand:
        $ref: "#/x-ext/2d85eab"
      card_last_four:
        $ref: "#/x-ext/2205e29"
    required:
      - type
  3894c9a:
    type: object
    description: Object containing details of a card used via Apple Pay.
    properties:
      $ref: "#/x-ext/04afbe6/properties"
    required:
      - type
  22ecf3d:
    type: object
    description: Object containing details of a card used via Google Pay.
    properties:
      $ref: "#/x-ext/04afbe6/properties"
    required:
      - type
  13faa8b:
    type: object
    description: Object containing details of a card used via Revolut Pay.
    properties:
      $ref: "#/x-ext/04afbe6/properties"
    required:
      - type
  dda9908:
    type: integer
    minimum: 1
    description: >-
      The sequential order of this phase in the subscription billing lifecycle.


      Phases execute in ascending order based on this value:

      - Phase with `ordinal=1` executes first

      - Phase with `ordinal=2` executes second, and so on


      When a phase completes its `cycle_count`, the subscription automatically
      progresses to the phase with the next `ordinal` value.


      **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
  ac8b01b:
    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).


      This determines how often the customer is billed during this phase. The
      total time spent in a phase is `cycle_duration × cycle_count`.


      **Common durations**:


      | Duration | Description |

      | -------- | ----------- |

      | `P1M` | 1 month |

      | `P1Y` | 1 year |

      | `P15D` | 15 days |

      | `P1W` | 1 week |

      | `PT2H` | 2 hours |


      **Example**: If `cycle_duration=P1M` and `cycle_count=12`, the customer
      will be billed monthly for 12 months (1 year total).
  ec64f3c:
    type:
      - integer
      - "null"
    minimum: 1
    description: >-
      Number of billing cycles for this phase before moving to the next phase.


      | Value | Behavior |

      | ----- | -------- |

      | `null` or omitted | Phase continues indefinitely. The subscription
      remains in this phase with no automatic progression. |

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


      **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.


      :::note

      If no next phase exists in after a cycle with a specific `cycle_count`,
      the subscription will automatically stop when it completes its cycles.

      :::
    title: Cycle-Count
  4ec08a4:
    type: integer
    minimum: 0
    description: >-
      Subscription amount in minor currency units (e.g., cents for USD, pence
      for GBP).


      For example, `9900` in `GBP` represents £99.00.


      :::info

      Conversion 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).

      :::
  b8ffdcd:
    type: string
    description: >-
      The type of the scheduled action.


      | Value | Description |

      | ----- | ----------- |

      | `cancel` | A cancellation scheduled to take effect at the end of the
      current billing cycle. |

      | `change_plan_variation` | A plan variation change scheduled to take
      effect at the end of the current billing cycle. |
    enum:
      - cancel
      - change_plan_variation
    examples:
      default:
        value: change_plan_variation
  f5fcfbb:
    title: Subscription-Scheduled-Action-Change-Plan
    type: object
    description: A plan variation change scheduled to take effect at the end of the
      current billing cycle.
    required:
      - type
      - reason
      - plan_variation_id
    properties:
      type:
        $ref: "#/x-ext/b8ffdcd"
      reason:
        $ref: "#/x-ext/bf5b368"
      plan_variation_id:
        $ref: "#/x-ext/8ee29c2"
      plan_variation_phase_id:
        $ref: "#/x-ext/2a76ad9"
  97cd1fe:
    title: Subscription-Scheduled-Action-Cancel
    type: object
    description: A cancellation scheduled to take effect at the end of the current
      billing cycle.
    required:
      - type
      - reason
    properties:
      type:
        $ref: "#/x-ext/b8ffdcd"
      reason:
        $ref: "#/x-ext/bf5b368"
  1ec7a53:
    description: A pending scheduled action on the subscription, applied at the end
      of the current billing cycle.
    type: object
    discriminator:
      propertyName: type
      mapping:
        cancel: ./Subscription-Scheduled-Action-Cancel.yaml
        change_plan_variation: ./Subscription-Scheduled-Action-Change-Plan.yaml
    oneOf:
      - $ref: "#/x-ext/97cd1fe"
      - $ref: "#/x-ext/f5fcfbb"
  72e398f:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    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.


        There are several supported flows for creating and activating
        subscriptions, depending on your integration needs.


        :::note

        The customer must already exist in the API. The `customer_id` is
        required for all subscription flows.

        :::


        <details>

        <summary>


        #### Flow 1: Hosted Payment Page (HPP)


        </summary>


        Use this flow to redirect the customer to Revolut's Hosted Payment Page
        to complete the first payment and save their payment method.


        **Backend flow:**

        1. Create a subscription with optional `setup_order_redirect_url`:

           | `setup_order_redirect_url` | Behaviour |
           | -------------------------- | --------- |
           | **Provided** | The setup order's `redirect_url` field is set to this value. |
           | **Omitted** | The setup order uses Revolut's default redirect behaviour. |

        1. The subscription is created in a `pending` state with a
        `setup_order_id` in the response.

        1. [Retrieve the order](/docs/api/merchant/2024-09-01#retrieve-order)
        using `setup_order_id` as the `order_id` in the path to get the
        `checkout_url`.

        1. Redirect the customer to the `checkout_url` for the Hosted Payment
        Page.


        **Customer flow:**

        1. Customer is redirected to Revolut's Hosted Payment Page.

        1. Customer completes payment on the HPP, and their payment method is
        saved.

        1. Customer redirect after payment depends on your setup:

           | `setup_order_redirect_url` | Customer redirect |
           | -------------------------- | ----------------- |
           | **Provided** | Customer is redirected to your custom URL. |
           | **Omitted** | Customer sees the default Revolut completion screen. |

        **Key characteristics:**

        - Customer completes payment on Revolut's hosted page

        - Payment method is automatically saved for future billing cycles

        - Optional custom redirect after payment

        - Best for web-based integrations


        </details>


        <details>


        <summary>


        #### Flow 2: Widget or card-not-present (CNP) payment


        </summary>


        Use 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.


        **Backend flow:**

        1. Create a subscription with minimal required parameters.

        1. The subscription is created in a `pending` state with a
        `setup_order_id` in the response.

        1. [Retrieve the order](/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.

        1. 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.


        **Customer flow:**

        1. Customer stays on your website/application.

        1. Customer completes payment, and their payment method is saved for
        future billing cycles.


        **Key characteristics:**

        - Payment experience embedded directly in your application

        - Customer never leaves your website

        - Payment method is saved for future billing cycles

        - Best for native mobile apps or fully custom web experiences


        </details>
      tags:
        - Subscriptions
      parameters:
        - $ref: "#/x-ext/c0cdbbb"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/x-ext/fe2eb4d"
            examples:
              with_setup_order:
                $ref: "#/x-ext/7ee7838"
              with_setup_order_no_url:
                $ref: "#/x-ext/e1b67f4"
              with_trial:
                $ref: "#/x-ext/bd0d8f6"
              skip_trial:
                $ref: "#/x-ext/40b394b"
      responses:
        "201":
          description: Subscription created successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/5815e4b"
              examples:
                with_setup_order:
                  $ref: "#/x-ext/11fb27f"
                with_setup_order_no_url:
                  $ref: "#/x-ext/f6a4312"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      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:

          | Filtering | Pagination |
          | --------- | ---------- |
          | 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: "#/x-ext/4349f60"
        - $ref: "#/x-ext/cff174f"
        - $ref: "#/x-ext/d10b9fd"
        - name: external_reference
          in: query
          schema:
            type: string
          description: Return subscriptions with a specific `external_reference`. Used for
            **filtering**.
          required: false
        - $ref: "#/x-ext/0997c5b"
      responses:
        "200":
          description: List of subscriptions retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/eac66d9"
              examples:
                subscriptions_list:
                  $ref: "#/x-ext/99763f4"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
  d4c2387:
    type: object
    description: Coordinates of the location.
    properties:
      lat:
        type: number
        format: double
        description: The latitude of the location, in decimal degrees.
        minimum: -90
        maximum: 90
      lon:
        type: number
        format: double
        description: To longitude of the location, in decimal degrees.
        minimum: -180
        maximum: 180
    required:
      - lat
      - lon
  9ab4dd9:
    title: Terminal name
    type: string
    description: The name of the terminal device.
  a651264:
    title: Terminal type
    type: string
    description: The hardware type/model of the terminal device.
    enum:
      - youtransactor_ucube_touch
      - newland_n950
      - newland_n750
      - newland_r25p
  b5263b8:
    title: Terminal serial number
    type: string
    description: The serial number of the terminal device.
    examples:
      default:
        value: RT-00123456
  519b915:
    title: Terminal battery level
    type: integer
    description: The current battery level of the terminal as a percentage (0-100).
    minimum: 0
    maximum: 100
  be470bf:
    title: Terminal online status
    type: boolean
    description: |-
      Indicates whether the terminal is currently online and connected.

      | Value | Description |
      |-------|-------------|
      | `true` | Terminal is online and available |
      | `false` | Terminal is offline |
  25d3924:
    title: Terminal last online timestamp
    type: string
    format: date-time
    description: The date and time when the terminal was last seen online.
  d594899:
    title: Terminal
    type: object
    description: Represents a Revolut Terminal device.
    properties:
      id:
        $ref: "#/x-ext/6b77b6c"
      name:
        $ref: "#/x-ext/9ab4dd9"
      type:
        $ref: "#/x-ext/a651264"
      serial_number:
        $ref: "#/x-ext/b5263b8"
      battery_level:
        $ref: "#/x-ext/519b915"
      online:
        $ref: "#/x-ext/be470bf"
      last_online_at:
        $ref: "#/x-ext/25d3924"
    required:
      - id
      - name
      - type
      - serial_number
      - battery_level
      - online
      - last_online_at
  11efa34:
    type: array
    description: List of terminal devices.
    items:
      $ref: "#/x-ext/d594899"
  1df77f8:
    title: Terminals response
    type: object
    description: Response containing a list of terminals.
    properties:
      terminals:
        $ref: "#/x-ext/11efa34"
    required:
      - terminals
  2226ae4:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/a200791"
    get:
      summary: Retrieve terminal list
      operationId: retrieveTerminalList
      description: |-
        Retrieve a list of Revolut Terminal devices available to the merchant.

        This endpoint is primarily used for push payments to Revolut Terminal integration, allowing POS systems to discover available terminals at a specific location and in the correct operation mode.

        :::tip
        For push payments integration, use the `operation_mode=pos` query parameter to filter only terminals in **Pay at Counter** mode that are ready to receive payment intents.
        :::

        :::info
        For more information about integration, see: [Push payments to Revolut Terminal](/docs/guides/merchant/accept-payments/in-person-payments/terminal/push-payments).
        :::
      parameters:
        - $ref: "#/x-ext/193a752"
        - $ref: "#/x-ext/aef1bf5"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/1df77f8"
              examples:
                terminals_list:
                  $ref: "#/x-ext/fc6d57b"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
      tags:
        - Terminals
  fb0171f:
    type: object
    properties:
      first_name:
        type: string
        description: Passenger's first name.
      last_name:
        type: string
        description: Passenger's last name.
    required:
      - first_name
      - last_name
  4ab1712:
    type: array
    description: Array containing information of passengers associated with the booking.
    items:
      $ref: "#/x-ext/fb0171f"
  db10c08:
    type: object
    properties:
      sequence:
        type: integer
        description: >-
          Sequence of the journey legs. Increment by 1 for each flight included
          in the ticket.


          For example: For a `FRA > LHR > DUB > LHR > FRA` journey the sequence
          will be assigned as:
            - `FRA > LHR`: 1
            - `LHR > DUB`: 2
            - `DUB > LHR`: 3
            - `LHR > FRA`: 4
      departure_airport_code:
        type: string
        description: The [IATA](https://www.iata.org/en/services/codes) 3-letter airport
          code for the departure airport.
      arrival_airport_code:
        type: string
        description: The [IATA](https://www.iata.org/en/services/codes) 3-letter airport
          code for the arrival airport.
      flight_number:
        type: string
        description: The flight identifier, without airline code.
      fare_base_code:
        type: string
        description: The fare base code for the given journey leg.
      travel_date:
        type: string
        format: date-time
        description: The UTC date and time of the flight departure for the given journey
          leg.
      airline_name:
        type: string
        description: The name of the airline associated with the journey leg.
      airline_code:
        type: string
        description: The IATA 2-letter accounting code identifying the airline
          associated with the journey leg.
      pnr:
        type: string
        format: alphanumeric
        pattern: ^[a-zA-Z0-9]*$
        maxLength: 20
        description: >-
          The Passenger Name Record (PNR) for the journey leg issued by the
          airline. 


          PNR is a unique identifier for the booking, acting as a digital
          certificate allowing passengers to retrieve or manage their booking
          details.


          :::warning

          This is a required field for OTAs.

          :::
    required:
      - sequence
      - departure_airport_code
      - arrival_airport_code
      - travel_date
      - airline_name
      - airline_code
  bf1b821:
    type: array
    description: >-
      Array containing information of journey legs associated with the booking.


      :::info

      This field is required for activating **Revolut Flight Alerts**
      functionalities within the Revolut app. 


      This information is used to compile a tracking widget that provides
      real-time updates on flight status and sends notifications, such as a
      check-in reminders, boarding alerts, and notifications for cancellations
      or delays. 


      To enable the widget the following fields are required on order creation
      or update, before capturing the order:

        ```
        sequence,
        departure_airport_code,
        arrival_airport_code,
        flight_number,
        travel_date,
        airline_name,
        airline_code,
        ```
      :::
    items:
      $ref: "#/x-ext/db10c08"
  1c15274:
    type: object
    description: |-
      Object containing additional information about an airline booking associated with the order.

      Use this object to provide required data to enable **Revolut Flight Alerts**. This feature allows users to receive real-time flight updates such as check-in reminders, boarding alerts, and notifications for cancellations or delays in the Revolut app.

      To enable **Revolut Flight Alerts** functionalities in the Revolut app, the following fields are **required** on order creation or update, before capturing the order:
        ```
        tickets_purchase,
        journey_legs,
        booking_url
        ```

      :::note
      These are the specific data field requirements for merchants who must provide airline data. Note that these requirements can be extended on a case by case basis as decided by Revolut.

      | Required for airline/charter merchants | Required for OTA merchants |
      | -------------------------------------- | -------------------------- |
      | <ul><li>`booking_id`</li><li>`fulfillment_date`</li><li>`passengers[].first_name`</li><li>`passengers[].last_name`</li><li>`journey_legs[].pnr`</li><li>`journey_legs[].sequence`</li><li>`journey_legs[].flight_number`</li><li>`journey_legs[].travel_date`</li><li>`journey_legs[].airline_code`</li><li>`journey_legs[].departure_airport_code`</li><li>`journey_legs[].arrival_airport_code`</li></ul> | <ul><li>`booking_id`</li><li>`fulfillment_date`</li><li>`passengers[].first_name`</li><li>`passengers[].last_name`</li><li>`journey_legs[].pnr`</li><li>`journey_legs[].arrival_airport_code`</li></ul> |
      :::
    properties:
      booking_id:
        $ref: "#/x-ext/91fdcb6"
      fulfillment_date:
        type: string
        format: date-time
        description: >-
          The UTC date and time of the final journey leg.


          :::warning

          The following limitations apply:
            - When creating or updating an order, `fulfillment_date` cannot be set to a date in the past.
            - When updating an order, if the current `fulfillment_date` value is already in the past, it cannot be modified. The date must remain as is to maintain data integrity for completed transactions.
          :::
      tickets_purchase:
        type: boolean
        description: >-
          Flag indicating whether the order includes actual ticket purchases.
          Set to `true` if the order contains ticket purchases, and `false` if
          it does not (e.g., it **only** contains seat reservations, or baggage
          upgrades).


          :::info

          This field is required for activating **Revolut Flight Alerts**
          functionalities within the Revolut app.


          Provide the info on order creation or update, before capturing the
          order.

          :::
      ticket_type:
        type: string
        enum:
          - fixed
          - flexible
        description: >-
          The type of the ticket.


          | Parameter value | Description |

          | --------------- | ----------- |

          | `fixed`         | Non-modifiable once confirmed. |

          | `flexible`      | Allows modifications or cancellations under
          specified conditions. |
      crs_code:
        type: string
        maxLength: 4
        description: The code of the Computer Reservation System (CRS) used to make the
          booking and purchase the ticket.
      ticket_change_indicator:
        type: string
        enum:
          - new
          - modification
        description: Parameter indicating whether this order is related to a new ticket
          reservation or a modification of an existing one.
      refundability:
        $ref: "#/x-ext/111a824"
      passengers:
        $ref: "#/x-ext/4ab1712"
      journey_legs:
        $ref: "#/x-ext/bf1b821"
      booking_url:
        type: string
        format: uri
        pattern: ^https?:\/{2}.+/gi
        maxLength: 2000
        description: >-
          URL to the online portal for managing the airline booking, which
          includes check-in functionality. This URL may be a personalised,
          pre-populated check-in link specific to the user or a generic link,
          and it is essential for enabling direct access to booking details
          within the Revolut app.


          :::info

          This field is required for activating **Revolut Flight Alerts**
          functionalities within the Revolut app.


          Provide the info on order creation or update, before capturing the
          order.

          :::


          :::warning

          Restrictions:

          - Must be a valid URI as defined by [RFC
          3986](https://datatracker.ietf.org/doc/html/rfc3986)

          - URI scheme is required and must be either `http` or `https`

          - URI host is required and cannot be `localhost` or an IP address

          - Max length: `2000`

          - Reserved or invalid characters must be percent-encoded (for example,
          use `%20` instead of a space)

          :::
    required:
      - booking_id
  73478d8:
    type: object
    description: Details of a physical address.
    properties:
      street_line_1:
        type: string
        description: Primary address line.
        maxLength: 100
      street_line_2:
        type: string
        description: Secondary address line, such as floor and apartment number.
        maxLength: 100
      region:
        type: string
        description: State or province of the address.
        maxLength: 100
      city:
        type: string
        description: City of the address.
        maxLength: 100
      country_code:
        type: string
        pattern: ^[A-Z]{2}$
        description: ISO 2-letter country code.
        minLength: 2
        maxLength: 2
      country_subdivision_code:
        type: string
        pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$
        description: >-
          The subdivision code represents the state, province, or region within
          the country, following the [ISO
          3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) standard. This code
          uniquely identifies subdivisions within a country. 


          For example, for London in the United Kingdom, use `GB-LND`.


          :::warning

          The parameter is required for countries listed on the [ISO
          3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) page.

          :::
        minLength: 5
        maxLength: 6
      postcode:
        type: string
        description: Postal code of the address.
        maxLength: 100
    required:
      - street_line_1
      - city
      - country_code
      - postcode
  62e9a8b:
    type: object
    description: >-
      Object containing information about crypto transactions associated with
      the order.


      :::info

      Processing crypto on-ramp transactions with Revolut has additional
      compliance requirements. Please reach out to your account executive for
      additional details.


      **Required data fields for crypto services:**


      ```

      transactions[].id

      transactions[].status

      transactions[].recipient_wallet_id

      seller.id

      seller.name

      seller.website

      seller.phone

      seller.address

      seller.mcc

      customer.full_name

      customer.date_of_birth

      ```


      Note that these requirements can be extended on a case by case basis as
      decided by Revolut.

      :::
    properties:
      transactions:
        type: array
        description: Array of crypto transaction data associated with the order.
        items:
          $ref: "#/x-ext/a448e4a"
        minItems: 1
      seller:
        type: object
        description: >-
          Information about the crypto conversion affiliate.


          This should be provided when a customer completes a payment on a
          subseller's website rather than directly on the merchant's website,
          providing insight into the type of business conducted by the
          subseller.


          :::note

          This needs to be provided only by crypto on-ramp providers for
          payments they are processing for conversion affiliates.


          For their own payments, `seller` can be omitted.

          :::
        properties:
          $ref: "#/x-ext/a4df7da/properties"
          mcc:
            type: string
            description: A string representing the four-digit [Merchant Category Code
              (MCC)](https://en.wikipedia.org/wiki/Merchant_category_code) of
              the conversion affiliate.
            maxLength: 4
            minLength: 4
            pattern: ^\d{4}$
        required:
          - id
          - name
          - website
          - phone
          - address
          - mcc
    required:
      - transactions
  6a1e83e:
    type: string
    format: date-time
    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
      when the funds are released to merchants."
  613db16:
    type: object
    description: Object containing information about a ticket associated with the booking.
    properties:
      id:
        type: string
        description: A unique identifier provided by the merchant associated with the
          ticket.
      transferable:
        type: boolean
        description: Indicates whether the ticket is transferable to another buyer.
      refundability:
        $ref: "#/x-ext/111a824"
    required:
      - id
  ffbe862:
    type: object
    description: "Object containing booking information about a specific event. "
    properties:
      start_date:
        type: string
        format: date-time
        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
          when the event starts."
      end_date:
        type: string
        format: date-time
        description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
          when the event ends."
      supplier:
        type: string
        description: Legal name of the ticket vendor/event organiser.
      supplier_payment_date:
        $ref: "#/x-ext/6a1e83e"
      name:
        type: string
        description: The name of the event.
      location:
        type: object
        description: The address of the event location.
        properties:
          $ref: "#/x-ext/7e82680/properties"
        required:
          $ref: "#/x-ext/7e82680/required"
      category:
        type: string
        enum:
          - concert
          - conference
          - convention
          - exhibition
          - festival
          - party
          - performance
          - other
        description: The type of the event.
      market:
        type: string
        enum:
          - primary
          - secondary
        description: >-
          Indicates the relationship between the ticket vendor and the event
          organiser. 


          | Parameter value | Description |

          | --------------- | ----------- |

          | `primary`       | The merchant is the organiser and primary
          distributor of the tickets. |

          | `secondary`     | The merchant is a reseller, only distributing the
          tickets. |
      tickets:
        type: array
        items:
          $ref: "#/x-ext/613db16"
        description: A list of tickets associated with the booking.
  b5c2fad:
    type: object
    description: >-
      Object containing booking information for a list of event tickets
      associated with the order.


      :::info

      These are the specific data field requirements for merchants who must
      provide event data. Note that these requirements can be extended on a case
      by case basis as decided by Revolut.


      ```

      booking_id

      events[].start_date

      events[].end_date

      events[].supplier

      events[].tickets[].id

      ```

      :::
    properties:
      booking_id:
        $ref: "#/x-ext/91fdcb6"
      events:
        type: array
        description: A list of events associated with the booking.
        items:
          $ref: "#/x-ext/ffbe862"
    required:
      - booking_id
  2014c75:
    type: string
    format: date-time
    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
      of the check-in."
  f11bbb5:
    type: string
    format: date-time
    description: "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time
      of the check-out."
  22df96c:
    type: string
    enum:
      - bed_and_breakfast
      - hostel
      - hotel
      - short_term_rental
      - other
    description: The type of the accommodation associated with the booking.
  6b47cf2:
    type: object
    description: Object containing supplier information about the lodging provider.
    properties:
      id:
        type: string
        description: Unique identifier of the lodging supplier.
      name:
        type: string
        description: Legal name of the lodging supplier.
      payment_date:
        $ref: "#/x-ext/6a1e83e"
  "9183e30":
    type: string
    enum:
      - fixed
      - flexible
    description: >-
      Indicates whether the booking terms are fixed or flexible.


      | Parameter value | Description |

      | --------------- | ----------- |

      | `fixed`         | Non-modifiable once confirmed. |

      | `flexible`      | Allows modifications or cancellations under specified
      conditions.
  656af02:
    type: object
    description: Address of the accommodation.
    properties:
      $ref: "#/x-ext/7e82680/properties"
    required:
      $ref: "#/x-ext/7e82680/required"
  c7dd364:
    type: object
    description: The details of the check for card payment. Only for orders with
      successful payments.
    properties:
      three_ds:
        type: object
        description: >-
          The details of the 3D Secure check. Only for orders with successful
          payments.


          :::note

          Not returned for Apple Pay and Google Pay payments.

          :::
        properties:
          eci:
            type: string
            description: The Electronic Commerce Indicator (ECI) value corresponds to the
              authentication result and indicates the level of security used
              when the payment information was provided.
          state:
            type: string
            description: The result of 3D Secure check.
            enum:
              - verified
              - failed
              - challenge
          version:
            type: integer
            description: The 3D Secure version.
      cvv_verification:
        type: string
        description: |-
          The result of CVV verification.

          | Parameter value | Description |
          | ----- | ----------- |
          | `match` | CVV matches the card's CVV |
          | `not_match` | CVV does not match the card's CVV |
          | `incorrect` | CVV format is incorrect for this type of card |
          | `not_processed` | CVV verification was not performed |
        enum:
          - match
          - not_match
          - incorrect
          - not_processed
      address:
        type: string
        description: The result of address verification.
        enum:
          - match
          - not_match
          - n_a
          - invalid
      postcode:
        type: string
        description: The result of postcode verification.
        enum:
          - match
          - not_match
          - n_a
          - invalid
      cardholder:
        type: string
        description: The result of cardholder verification.
        enum:
          - match
          - not_match
          - n_a
          - invalid
  81aebf6:
    type: string
    description: >-
      The authorisation code (or auth code) is a short, alphanumeric code
      returned by the cardholder's issuing bank to the merchant's terminal or
      payment gateway.


      It serves as confirmation that the transaction has been approved and funds
      are available.
    pattern: ^[a-zA-Z0-9]{2,6}$
    minLength: 2
    maxLength: 6
    examples:
      default:
        value: T483XF
  a164737:
    type: string
    description: |-
      Acquirer Reference Number (ARN) of the payment.

      :::note
      Only returned for refund payments made by a card.
      :::
    minLength: 23
    maxLength: 23
    examples:
      default:
        value: "74839572049583726403928"
  3cfba3a:
    type: string
    format: date-time
    description: >-
      The date and time by which the payment must be captured.


      After this deadline, the authorised funds may be automatically released by
      the card issuer.
  1a4ec64:
    type: string
    minLength: 44
    maxLength: 44
    description: >-
      A unique identifier for a payment method, always 44 characters long. This
      fingerprint can be used to uniquely identify various payment methods.


      #### Fingerprint generation


      | Payment method | Description |

      | -------- | ----------- |

      | **All payment methods** | A fingerprint is generated for all payment
      methods, including cards, Revolut Pay (card, account-to-account payments),
      Apple Pay, and Google Pay. |

      | **Cards (Revolut Pay & Card Gateway)** | For cards, the fingerprint is
      based on the PAN. Cards processed via Revolut Pay and our card gateway
      will share the same fingerprint. Renewed cards (new expiry/CVV) retain the
      same fingerprint for efficient blocking. |

      | **Apple Pay & Google Pay** | Since Apple Pay and Google Pay provide us
      Device PANs (DPAN), the fingerprint is based on the DPAN provided by
      Apple/Google, not the connected card's PAN. This means that a new DPAN
      (and fingerprint) is generated for cards in case they are re-added to the
      customer's digital wallet, or added to different devices. |


      #### Detecting duplicate payment methods


      Fingerprints are a valuable tool for detecting duplicate payment methods
      by identifying if a payment method has been seen before. This capability,
      in turn, helps in preventing various types of misuse (e.g., exploitation
      of free trials, or association with known problematic accounts, which can
      be a form of fraud). To effectively use fingerprints for this purpose, you
      will need to create and maintain your own lists (e.g., blocklists of known
      problematic fingerprints, allowlists for trusted customers, or tracking
      frequently used fingerprints). 


      The ideal way to utilise fingerprints is by combining them with a manual
      capture process. While automatic capture with subsequent refunds for
      problematic payments is possible, manual capture based on fingerprint
      validation is recommended.


      During your manual capture workflow, after a payment was authorised:
        
        - Check the fingerprint status by comparing it against your maintained lists and internal business rules.
        - If you decide to proceed with the payment (e.g., the fingerprint is not on a blocklist, or matches a trusted customer's previous payment method): [Capture the order](/docs/api/merchant#capture-order).
        - If you decide not to proceed with the payment (e.g., the fingerprint matches a known fraudulent fingerprint, or exhibits suspicious patterns): [Cancel the order](/docs/api/merchant#cancel-order).
    examples:
      default:
        value: 1JAllfQY4POhBV8DaddAQ4LC5RbMP8LMLvUdJW4s5JY=
  861939a:
    type: object
    properties:
      id:
        type: string
        format: uuid
        description: |-
          ID of the saved payment method.

          :::note
          The `id` parameter is only returned when the payment method is saved.
          :::
      type:
        $ref: "#/x-ext/a32ab53"
      fingerprint:
        $ref: "#/x-ext/1a4ec64"
    required:
      - type
  9bbb548:
    type: string
    description: >-
      The Network Transaction ID (NTI) is a unique identifier assigned by the
      card scheme (e.g., Visa or Mastercard) to a card transaction.


      It can be used to trace the transaction across the payment network, link
      recurring or instalment payments to the original authorisation, and
      support dispute resolution.
  f8a2cbb:
    type: object
    description: The details of the payment method used to make the payment.
    discriminator:
      propertyName: type
      mapping:
        apple_pay: ./Apple-Pay.yaml
        card: ./Card.yaml
        google_pay: ./Google-Pay.yaml
        revolut_pay_card: ./Revolut-Pay-Card.yaml
        revolut_pay_account: ./Revolut-Pay-Account.yaml
        sepa_direct_debit: ./Sepa-Direct-Debit.yaml
    oneOf:
      - $ref: "#/x-ext/30ffe89"
      - $ref: "#/x-ext/4282f0c"
      - $ref: "#/x-ext/6b05d26"
      - $ref: "#/x-ext/9146afc"
      - $ref: "#/x-ext/861939a"
      - $ref: "#/x-ext/71cc49f"
  d6c34b8:
    type: string
    enum:
      - apple_pay
      - apple_tap_to_pay
      - card
      - google_pay
      - revolut_pay_account
      - revolut_pay_card
      - sepa_direct_debit
    description: >-
      Type of the payment method used for the original payment.


      Available values:


      | Payment method `type` | Description |

      | --------------------- | ----------- |

      | `apple_pay` | The customer paid the order using Apple Pay. |

      | `apple_tap_to_pay` | The customer paid the order using Apple Tap to Pay.
      |

      | `card` | The customer paid the order using their credit or debit card. |

      | `google_pay` | The customer paid the order using Google Pay. |

      | `revolut_pay_card` | The customer paid the order via Revolut Pay using
      their credit or debit card. |

      | `revolut_pay_account` | The customer paid the order via Revolut Pay
      using their Revolut account. |

      | `sepa_direct_debit` | The customer paid the order via SEPA Direct Debit.
      |
  a4df84d:
    type: object
    description: Object containing details of a payment made via Revolut Pay account.
    properties:
      type:
        $ref: "#/x-ext/d6c34b8"
    required:
      - type
  b3c6de6:
    type: object
    description: Object containing details of a SEPA Direct Debit payment.
    properties:
      type:
        $ref: "#/x-ext/d6c34b8"
      debtor_iban_last_four:
        $ref: "#/x-ext/b4be48a"
      debtor_name:
        $ref: "#/x-ext/910c00d"
      mandate_reference:
        $ref: "#/x-ext/ff0c6e3"
    required:
      - type
  387ce55:
    type: object
    description: Object containing details of a payment made via Apple Tap to Pay.
    properties:
      type:
        $ref: "#/x-ext/d6c34b8"
    required:
      - type
  a409034:
    type: object
    description: |-
      Payment method used for the original payment.

      Use the `type` field to determine the specific payment method variant.
    discriminator:
      propertyName: type
      mapping:
        apple_pay: ./Dispute-Payment-Method-Apple-Pay.yaml
        apple_tap_to_pay: ./Dispute-Payment-Method-Apple-Tap-To-Pay.yaml
        card: ./Dispute-Payment-Method-Card.yaml
        google_pay: ./Dispute-Payment-Method-Google-Pay.yaml
        revolut_pay_account: ./Dispute-Payment-Method-Revolut-Pay-Account.yaml
        revolut_pay_card: ./Dispute-Payment-Method-Revolut-Pay-Card.yaml
        sepa_direct_debit: ./Dispute-Payment-Method-Sepa-Direct-Debit.yaml
    oneOf:
      - $ref: "#/x-ext/3894c9a"
      - $ref: "#/x-ext/387ce55"
      - $ref: "#/x-ext/04afbe6"
      - $ref: "#/x-ext/22ecf3d"
      - $ref: "#/x-ext/a4df84d"
      - $ref: "#/x-ext/13faa8b"
      - $ref: "#/x-ext/b3c6de6"
  d9f57d1:
    type: object
    description: Object containing the details of the original payment associated
      with the dispute.
    properties:
      id:
        $ref: "#/x-ext/f4132b2"
      order_id:
        $ref: "#/x-ext/e9a0cb1"
      created_at:
        $ref: "#/x-ext/8c76515"
      arn:
        $ref: "#/x-ext/bf0957e"
      amount:
        $ref: "#/x-ext/0fd0216"
      currency:
        $ref: "#/x-ext/1b2472a"
      payment_method:
        $ref: "#/x-ext/a409034"
  83428fb:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
      - $ref: "#/x-ext/eb2136b"
    get:
      summary: Retrieve a dispute
      operationId: retrieveDispute
      servers:
        - description: Production server (uses live data)
          url: https://merchant.revolut.com
      description: |-
        Retrieve the details of a specific dispute by its ID.

        :::note
        This endpoint is only available in **Production** environment.
        :::
      responses:
        "200":
          description: Successful response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/81cce34"
              examples:
                card_dispute:
                  $ref: "#/x-ext/62ed9e2"
                sepa_direct_debit_dispute:
                  $ref: "#/x-ext/95f25ba"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Missing Revolut-Api-Version header
                    timestamp: 1601296792533
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: not_found
                    message: The requested resource is not found
                    timestamp: 1721050063886
      security:
        - Api-Key: []
      tags:
        - Disputes
  bd72d25:
    type: array
    description: |-
      A list of one or more time intervals for a single day. 

      A day can have multiple intervals (e.g., closing for a lunch break).
    items:
      type: object
      properties:
        from:
          type: string
          format: time
          description: >-
            The local time when the interval begins.


            :::note

            The format is `hh:mm[:ss]`; seconds are optional and must be `00` if
            provided.

            :::
          examples:
            - 09:00:00
        to:
          type: string
          format: time
          description: >-
            The local time when the interval ends.


            :::note

            The format is `hh:mm[:ss]`; seconds are optional and must be `00` if
            provided.

            :::
          examples:
            - 18:00:00
      required:
        - from
        - to
  51f7943:
    type: object
    description: |-
      An object containing the opening hours for each day of the week.

      A day can have multiple intervals (e.g., closing for a lunch break).
    properties:
      monday:
        description: Opening hours for Monday.
        $ref: "#/x-ext/bd72d25"
      tuesday:
        description: Opening hours for Tuesday.
        $ref: "#/x-ext/bd72d25"
      wednesday:
        description: Opening hours for Wednesday.
        $ref: "#/x-ext/bd72d25"
      thursday:
        description: Opening hours for Thursday.
        $ref: "#/x-ext/bd72d25"
      friday:
        description: Opening hours for Friday.
        $ref: "#/x-ext/bd72d25"
      saturday:
        description: Opening hours for Saturday.
        $ref: "#/x-ext/bd72d25"
      sunday:
        description: Opening hours for Sunday.
        $ref: "#/x-ext/bd72d25"
  86ae415:
    type: object
    properties:
      name:
        $ref: "#/x-ext/c1e66bb"
      type:
        $ref: "#/x-ext/fc3b5f1"
      details:
        $ref: "#/x-ext/874157f"
    required:
      - name
      - type
      - details
  2975c2e:
    type: object
    description: Request body for creating a location. The structure of the
      `details` object depends on the `type` of the location.
    oneOf:
      - $ref: "#/x-ext/c17f5d5"
      - $ref: "#/x-ext/86ae415"
    discriminator:
      propertyName: type
      mapping:
        online: ./Location-Creation-Online.yaml
        physical: ./Location-Creation-Physical.yaml
  45a45bc:
    parameters:
      - $ref: "#/x-ext/90b9838"
    post:
      summary: Create a location
      operationId: createLocation
      description: Create a `Location` object. Supports `online` and `physical`
        location types.
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/2975c2e"
            examples:
              example_online_location:
                $ref: "#/x-ext/363f6bd"
              example_physical_location:
                $ref: "#/x-ext/4a64a36"
      responses:
        "201":
          description: Location created
          content:
            application/json:
              schema:
                $ref: "#/x-ext/cf5e7ce"
              examples:
                example_online_location:
                  $ref: "#/x-ext/dd56a7e"
                example_physical_location:
                  $ref: "#/x-ext/9ca09cb"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/329b2d1"
      security:
        - Api-Key: []
      tags:
        - Locations
    get:
      summary: Retrieve location list
      operationId: retrieveLocationList
      description: >-
        Retrieve a list of locations registered for the merchant.


        :::note [Default behavior]

        Without the `type` query parameter, this endpoint returns only
        **online** locations by default. To retrieve physical locations, you
        must explicitly specify `type=physical` in the query parameters.

        :::
      parameters:
        - $ref: "#/x-ext/741a418"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/x-ext/cf5e7ce"
              examples:
                list_of_locations:
                  summary: Location list
                  value:
                    - id: 8d9a7125-805f-40f3-a405-bc89765db996
                      name: Grocery website
                      type: online
                      details:
                        domain: groceries.example.com
                    - id: 066223df-d5a8-42f0-b3ce-688c7a76f9a8
                      name: Cars website
                      type: online
                      details:
                        domain: cars.example.com
                    - id: 299050a4-cc7a-44b0-8b2b-7cd1e335ef38
                      name: Example Street Store
                      type: physical
                      details:
                        address:
                          street_line_1: 123 Example Street
                          city: Example city
                          postcode: "12345"
                          country_code: GB
                        geo_location:
                          lat: 12.3456
                          lon: -12.3456
                        opening_hours:
                          monday:
                            - from: 09:00
                              to: 15:00
                            - from: 16:00
                              to: 18:00
                          tuesday:
                            - from: 10:00
                              to: 13:00
                            - from: 16:00
                              to: 18:00
        "401":
          description: Unauthorized
      security:
        - Api-Key: []
      tags:
        - Locations
  ae9a74f:
    type: object
    properties:
      first_name:
        type: string
        description: Guest's first name.
      last_name:
        type: string
        description: Guest's last name.
    required:
      - first_name
      - last_name
  d0bd4f7:
    type: array
    items:
      $ref: "#/x-ext/ae9a74f"
    description: List of guests associated with the booking.
  4b967ce:
    type: object
    description: Object containing details of an individual lodging entry.
    properties:
      check_in_date:
        $ref: "#/x-ext/2014c75"
      check_out_date:
        $ref: "#/x-ext/f11bbb5"
      category:
        $ref: "#/x-ext/22df96c"
      supplier:
        $ref: "#/x-ext/6b47cf2"
      booking_type:
        $ref: "#/x-ext/9183e30"
      refundability:
        $ref: "#/x-ext/111a824"
      location:
        $ref: "#/x-ext/656af02"
      guests:
        $ref: "#/x-ext/d0bd4f7"
  0eba7e9:
    type: object
    description: >-
      Object containing details of a lodging booking.


      :::info

      These are the specific data field requirements for merchants who must
      provide lodging data. Note that these requirements can be extended on a
      case by case basis as decided by Revolut.


      ```

      booking_id

      lodgings[].check_in_date

      lodgings[].check_out_date

      lodgings[].supplier.payment_date

      ```

      :::
    properties:
      booking_id:
        $ref: "#/x-ext/91fdcb6"
      lodgings:
        type: array
        description: List of lodging entries associated with this booking.
        items:
          $ref: "#/x-ext/4b967ce"
    required:
      - booking_id
  6e08b16:
    type: object
    description: Object schema containing information about order creation body
      request parameters.
    properties:
      amount:
        $ref: "#/x-ext/7dfa842"
      currency:
        $ref: "#/x-ext/1b2472a"
      settlement_currency:
        $ref: "#/x-ext/4da391a"
      description:
        $ref: "#/x-ext/a0887df"
      customer:
        $ref: "#/x-ext/f66f113"
      enforce_challenge:
        $ref: "#/x-ext/d9d8857"
      line_items:
        $ref: "#/x-ext/bca3068"
      shipping:
        $ref: "#/x-ext/a437221"
      capture_mode:
        $ref: "#/x-ext/e3d4819"
      authorisation_type:
        $ref: "#/x-ext/60768e8"
      cancel_authorised_after:
        $ref: "#/x-ext/bd14ecb"
      expire_pending_after:
        $ref: "#/x-ext/9977eda"
      location_id:
        $ref: "#/x-ext/38a61e6"
      metadata:
        $ref: "#/x-ext/c146ad0"
      industry_data:
        $ref: "#/x-ext/f93fd93"
      merchant_order_data:
        $ref: "#/x-ext/31aea79"
      upcoming_payment_data:
        $ref: "#/x-ext/7d308f4"
      redirect_url:
        $ref: "#/x-ext/25c3c73"
      statement_descriptor_suffix:
        $ref: "#/x-ext/52074cd"
    required:
      - amount
      - currency
  bb13491:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    post:
      summary: Create an order
      operationId: createOrder
      description: |-
        Create an `Order` object.

        Creating orders is one of the basic operations of the Merchant API. Most of the other operations are related to creating orders. Furthermore, the payment methods merchants can use to take payments for their orders are also built on order creation.

        To learn more about how you can accept payments, see:
          - [Revolut Pay](/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction)
          - [Card payments](/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction)
          - [Apple Pay and Google Pay](/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction)
          - [Pay by Bank](/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction)
          - [Revolut Checkout](/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction)
          - [Hosted Checkout Page](/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction)


        ### Pre-authorisation and incremental authorisation

        Orders can be created with `authorisation_type: pre_authorisation` to enable incremental authorisation. This allows you to increase the authorised amount after the initial authorisation.

        **Requirements:**
        - `capture_mode` must be set to `manual`
        - `authorisation_type` must be set to `pre_authorisation`
        - Only supported for card payments currently

        **Example use cases:**
        - Hotels: authorise deposit, then increment for room service and minibar
        - Car rentals: authorise deposit, then increment for damages or fuel

        :::info
        For more information, see:
        - [Pre-authorisation guide](/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation)
        - [Incremental authorisation guide](/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation)
        - [Increment authorisation endpoint](/docs/api/merchant/2026-03-12#increment-authorisation)
        :::

        <details>
        <summary>Industry-specific requirements</summary>

        If you operate in any of the industries listed below, sharing industry-specific data is mandatory. Not providing the necessary information will result in further scrutiny from Revolut and/or the imposition of risk mitigation actions.

        | Industry | Related fields |
        | ------- | --------------- |
        | Retail merchants | `line_items`, `shipping` |
        | Airlines | `industry_data` with `type: airline` |
        | Car rentals | `industry_data` with `type: car_rental` |
        | Hotels & accommodation | `industry_data` with `type: lodging` |
        | Travel agencies (OTAs) | `industry_data` with `type: airline` and `industry_data` with `type: lodging` |
        | Crypto merchants | `industry_data` with `type: crypto`; `customer.full_name`, `customer.date_of_birth` |
        | Financial institutions | `customer.full_name`, `customer.date_of_birth` |
        | Stored value / Wallets | `customer.full_name`, `customer.date_of_birth` |
        | Event ticket sellers | `industry_data` with `type: event` |
        | Marketplace merchants | `industry_data` with `type: marketplace` |

        </details>
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/x-ext/6e08b16"
            examples:
              example_order_min_params:
                $ref: "#/x-ext/e37bb36"
              example_order_additional:
                $ref: "#/x-ext/49aaa46"
              example_order_pre_auth:
                $ref: "#/x-ext/95e8559"
              example_order_line_items:
                $ref: "#/x-ext/15a16ad"
              example_order_shipping:
                $ref: "#/x-ext/1edb9c3"
              example_order_airline:
                $ref: "#/x-ext/a298482"
              example_order_car_rental:
                $ref: "#/x-ext/30235cd"
              example_order_crypto:
                $ref: "#/x-ext/150521e"
              example_order_marketplace:
                $ref: "#/x-ext/bcaf3e4"
              example_order_event:
                $ref: "#/x-ext/a02f1c8"
              example_order_lodging:
                $ref: "#/x-ext/8919d30"
              example_order_multi_industry:
                $ref: "#/x-ext/e4ad330"
      responses:
        "201":
          description: Order created
          content:
            application/json:
              schema:
                $ref: "#/x-ext/3c2231c"
              examples:
                example_order_min_params:
                  $ref: "#/x-ext/e8e192f"
                example_order_additional:
                  $ref: "#/x-ext/8bef905"
                example_order_pre_auth:
                  $ref: "#/x-ext/cfb7391"
                example_order_line_items:
                  $ref: "#/x-ext/312ca55"
                example_order_shipping:
                  $ref: "#/x-ext/72aed61"
                example_order_airline:
                  $ref: "#/x-ext/147ace7"
                example_order_car_rental:
                  $ref: "#/x-ext/11b2c83"
                example_order_crypto:
                  $ref: "#/x-ext/4f45ac1"
                example_order_marketplace:
                  $ref: "#/x-ext/d9c197e"
                example_order_event:
                  $ref: "#/x-ext/10620c4"
                example_order_lodging:
                  $ref: "#/x-ext/d17e5f9"
                example_order_multi_industry:
                  $ref: "#/x-ext/a613f42"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1721049596461
          headers: {}
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
              examples:
                default:
                  value:
                    code: unauthenticated
                    message: Authentication failed
                    timestamp: 1721049596461
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      tags:
        - Orders
      security:
        - Api-Key: []
    get:
      summary: Retrieve an order list
      operationId: retrieveOrderList
      description: >-
        Get a paginated list of your orders, returned as a wrapped `orders`
        array.


        The response contains simplified `Order` objects. To get the full
        details of a specific order, use the [Retrieve an
        order](/docs/api/merchant/2026-03-12#retrieve-order) endpoint.
      parameters:
        - $ref: "#/x-ext/4349f60"
        - $ref: "#/x-ext/cff174f"
        - $ref: "#/x-ext/d10b9fd"
        - $ref: "#/x-ext/f24b8ce"
        - $ref: "#/x-ext/4d4a20f"
        - $ref: "#/x-ext/e19a240"
        - $ref: "#/x-ext/aef1bf5"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/x-ext/4fe92c0"
              examples:
                list_of_orders:
                  $ref: "#/x-ext/b98243c"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      tags:
        - Orders
      security:
        - Api-Key: []
  316120c:
    type: string
    description: The name of the subscription item.
    maxLength: 250
    examples:
      default:
        value: Base Subscription Fee
  0cf68e9:
    type: string
    description: The type of subscription item.
    enum:
      - flat
      - usage
    examples:
      default:
        value: flat
  5faf289:
    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.


      For 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.


      Set to `1` to price each unit individually.
    examples:
      default:
        value: 1
  925e2ad:
    type: string
    description: The unit of measurement for the item.
    maxLength: 100
    examples:
      default:
        value: subscription
  81ae8b8:
    type: number
    description: The quantity of the item.
    examples:
      default:
        value: 1
  e57c867:
    type: object
    description: Object structure of flat subscription item.
    properties:
      name:
        $ref: "#/x-ext/316120c"
      type:
        $ref: "#/x-ext/0cf68e9"
      package_size:
        $ref: "#/x-ext/5faf289"
      unit:
        $ref: "#/x-ext/925e2ad"
      quantity:
        $ref: "#/x-ext/81ae8b8"
      amount:
        type: integer
        description: Amount in minor currency units (e.g., cents for USD).
        examples:
          - 9900
      currency:
        $ref: "#/x-ext/1b2472a"
    required:
      - name
      - type
      - amount
      - currency
      - unit
      - quantity
  e381635:
    type: string
    description: >-
      The method used to aggregate usage events over a billing cycle to
      calculate the chargeable amount.


      | Value | Behaviour |

      | ----- | --------- |

      | `sum` | Totals all reported usage events during the cycle. Use for
      cumulative metrics (e.g., API calls, data transferred). |

      | `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). |

      | `max` | Uses the peak value reported during the cycle. Use for
      capacity-based billing (e.g., max concurrent connections). |
    enum:
      - sum
      - latest
      - max
    examples:
      default:
        value: sum
  a978337:
    type: object
    properties:
      upper_quantity_threshold:
        type:
          - number
          - "null"
        description: The upper bound of the tier (exclusive). Null means unlimited.
        examples:
          - 100
      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.
        examples:
          - 500
    required:
      - amount
  6c68f10:
    type: object
    description: Object structure for usage subscription item.
    properties:
      name:
        $ref: "#/x-ext/316120c"
      type:
        $ref: "#/x-ext/0cf68e9"
      package_size:
        $ref: "#/x-ext/5faf289"
      unit:
        $ref: "#/x-ext/925e2ad"
      amount:
        type: integer
        description: Flat amount per unit in minor currency units. Mutually exclusive
          with `tiers`.
        examples:
          - 10
      currency:
        $ref: "#/x-ext/1b2472a"
      tiers:
        type: array
        description: Graduated pricing tiers. Mutually exclusive with `amount`.
        items:
          $ref: "#/x-ext/a978337"
      code:
        $ref: "#/x-ext/42f1cfe"
      usage_aggregation_method:
        $ref: "#/x-ext/e381635"
    required:
      - name
      - type
      - currency
      - unit
      - code
      - usage_aggregation_method
  b7e5d5c:
    title: Subscription item
    type: object
    description: A subscription item for a plan phase. Can be either a fixed-fee
      (flat) item or a metered (usage) item.
    discriminator:
      propertyName: type
      mapping:
        flat: ./Subscription-Item-Flat-Creation.yaml
        usage: ./Subscription-Item-Usage-Creation.yaml
    oneOf:
      - $ref: "#/x-ext/e57c867"
      - $ref: "#/x-ext/6c68f10"
  e1e949a:
    type: array
    description: A list of subscription items for this phase.
    items:
      $ref: "#/x-ext/b7e5d5c"
  4fc3b5d:
    type: object
    properties:
      ordinal:
        $ref: "#/x-ext/dda9908"
      cycle_duration:
        $ref: "#/x-ext/ac8b01b"
      cycle_count:
        $ref: "#/x-ext/ec64f3c"
      amount:
        $ref: "#/x-ext/4ec08a4"
      currency:
        $ref: "#/x-ext/1b2472a"
      subscription_items:
        $ref: "#/x-ext/e1e949a"
    required:
      - ordinal
      - cycle_duration
      - amount
      - currency
  2887ebf:
    type: object
    required:
      - phases
    properties:
      phases:
        type: array
        minItems: 1
        description: List of billing phases for this variation.
        items:
          $ref: "#/x-ext/4fc3b5d"
  db3be83:
    type: object
    required:
      - name
      - variations
    properties:
      name:
        $ref: "#/x-ext/a325319"
      trial_duration:
        $ref: "#/x-ext/cab1828"
      variations:
        type: array
        minItems: 1
        description: List of subscription plan variations (e.g., monthly, yearly pricing
          options).
        items:
          $ref: "#/x-ext/2887ebf"
  12b8a92:
    type: string
    format: uuid
    description: The unique identifier of the subscription item.
  68fd494:
    type: object
    description: Object structure of flat subscription item.
    properties:
      id:
        $ref: "#/x-ext/12b8a92"
      name:
        $ref: "#/x-ext/316120c"
      type:
        $ref: "#/x-ext/0cf68e9"
      package_size:
        $ref: "#/x-ext/5faf289"
      unit:
        $ref: "#/x-ext/925e2ad"
      quantity:
        $ref: "#/x-ext/81ae8b8"
      amount:
        type: integer
        description: Amount in minor currency units (e.g., cents for USD).
        examples:
          - 9900
      currency:
        $ref: "#/x-ext/1b2472a"
    required:
      - id
      - name
      - type
      - amount
      - currency
      - unit
      - quantity
  a27b9b4:
    type: object
    description: Object structure of usage subscription item.
    properties:
      id:
        $ref: "#/x-ext/12b8a92"
      name:
        $ref: "#/x-ext/316120c"
      type:
        $ref: "#/x-ext/0cf68e9"
      package_size:
        $ref: "#/x-ext/5faf289"
      unit:
        $ref: "#/x-ext/925e2ad"
      amount:
        type: integer
        description: Flat amount per unit in minor currency units. Mutually exclusive
          with `tiers`.
        examples:
          - 10
      currency:
        $ref: "#/x-ext/1b2472a"
      tiers:
        type: array
        description: Graduated pricing tiers. Mutually exclusive with `amount`.
        items:
          $ref: "#/x-ext/a978337"
      code:
        $ref: "#/x-ext/42f1cfe"
      usage_aggregation_method:
        $ref: "#/x-ext/e381635"
    required:
      - id
      - name
      - type
      - currency
      - unit
      - code
      - usage_aggregation_method
  8a0325b:
    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.
    discriminator:
      propertyName: type
      mapping:
        flat: ./Subscription-Item-Flat.yaml
        usage: ./Subscription-Item-Usage.yaml
    oneOf:
      - $ref: "#/x-ext/68fd494"
      - $ref: "#/x-ext/a27b9b4"
  2b77ff9:
    type: array
    description: A list of subscription items for this phase.
    items:
      $ref: "#/x-ext/8a0325b"
  7eb47cd:
    type: object
    properties:
      id:
        $ref: "#/x-ext/2a76ad9"
      ordinal:
        $ref: "#/x-ext/dda9908"
      cycle_duration:
        $ref: "#/x-ext/ac8b01b"
      cycle_count:
        $ref: "#/x-ext/ec64f3c"
      amount:
        $ref: "#/x-ext/4ec08a4"
      currency:
        $ref: "#/x-ext/1b2472a"
      subscription_items:
        $ref: "#/x-ext/2b77ff9"
    required:
      - id
      - ordinal
      - cycle_duration
  bb8fa9e:
    type: object
    required:
      - id
      - phases
    properties:
      id:
        $ref: "#/x-ext/8ee29c2"
      phases:
        type: array
        description: List of billing phases for this variation.
        items:
          $ref: "#/x-ext/7eb47cd"
  5297a3e:
    parameters:
      - $ref: "#/x-ext/90b9838"
      - $ref: "#/x-ext/13f2186"
    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: "#/x-ext/db3be83"
            examples:
              simple_plan:
                $ref: "#/x-ext/2d1cb43"
              trial_plan_with_duration:
                $ref: "#/x-ext/1ee0f2a"
              limited_plan:
                $ref: "#/x-ext/bf216c8"
              usage_base_plan:
                $ref: "#/x-ext/3e66982"
              hybrid_plan:
                $ref: "#/x-ext/ecc203e"
              package_plan:
                $ref: "#/x-ext/c8ea6ed"
              items_plan:
                $ref: "#/x-ext/a43de5c"
      responses:
        "201":
          description: Subscription plan created successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/67bcd73"
              examples:
                simple_plan:
                  $ref: "#/x-ext/f0b24c8"
                trial_plan_with_duration:
                  $ref: "#/x-ext/915beaa"
                limited_plan:
                  $ref: "#/x-ext/ec7a584"
                usage_base_plan:
                  $ref: "#/x-ext/3febf78"
                hybrid_plan:
                  $ref: "#/x-ext/dc0b51f"
                package_plan:
                  $ref: "#/x-ext/ce946e6"
                items_plan:
                  $ref: "#/x-ext/34858b1"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      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:

          | Filtering | Pagination |
          | --------- | ---------- |
          | 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: "#/x-ext/4349f60"
        - $ref: "#/x-ext/cff174f"
        - $ref: "#/x-ext/d10b9fd"
        - $ref: "#/x-ext/0997c5b"
      responses:
        "200":
          description: List of subscription plans retrieved successfully
          content:
            application/json:
              schema:
                $ref: "#/x-ext/6efd23a"
              examples:
                plans_list:
                  $ref: "#/x-ext/9f78c60"
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
        default:
          description: Error response
          content:
            application/json:
              schema:
                $ref: "#/x-ext/a4a371d"
      security:
        - Api-Key: []
