Revolut Orders API

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](https://developer.revolut.com/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](https://developer.revolut.com/docs/api/merchant#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](https://developer.revolut.com/docs/api/merchant#create-order). :::

OpenAPI Specification

revolut-orders-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: '1.0'
  title: Business Accounting Orders API
  description: "As a Revolut Business customer with a Business Account, you can use the Business API to automate your own business processes.\nSave time, reduce your costs, and avoid errors by using the Business API. \n\n:::tip[Before you get started]\nTo learn more about the Business API and its features, check the [**user guides**](https://developer.revolut.com/docs/guides/manage-accounts/introduction).\n\nYou can reach them at any time from the main navigation bar **→ Guides → Business**.\n:::\n\nYou can view accounts, manage counterparties, make payments or currency exchanges without manual effort in the Web UI:\n\n- Accounting: [Account management](https://developer.revolut.com/docs/api/business#get-account), [Accounting settings](https://developer.revolut.com/docs/api/business#tag-accounting), [Expense management](https://developer.revolut.com/docs/api/business#get-expense), [Transactions](https://developer.revolut.com/docs/api/business#get-transactions) \n- Payments: \n  - [Counterparty management](https://developer.revolut.com/docs/api/business#get-counterparties)\n  - Payment management: [Payment drafts](https://developer.revolut.com/docs/api/business#delete-payment-draft), [Payout links](https://developer.revolut.com/docs/api/business#get-payout-link), [Transfers](https://developer.revolut.com/docs/api/business#tag-transfers)\n  - [Foreign exchange](https://developer.revolut.com/docs/api/business#tag-foreign-exchange)\n- Business team: [Card management](https://developer.revolut.com/docs/api/business#delete-card), [Card invitation management](https://developer.revolut.com/docs/api/business#update-card-invitation), [Team member management](https://developer.revolut.com/docs/api/business#delete-team-member)\n- Developer tools: [Sandbox simulations](https://developer.revolut.com/docs/api/business#tag-simulations), [Webhook management](https://developer.revolut.com/docs/api/business#tag-webhooks-v2)\n\nTo see the reference for the specific endpoints and operations of this API, browse the menu on the left.\n\n### Test the Business API\n\nYou can test the Business API in Postman by forking this collection:\n\n[![View in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/revolut-api/workspace/revolut-developers/overview)"
  contact: {}
servers:
- url: https://b2b.revolut.com/api/1.0
  description: Production server (uses live data)
- url: https://sandbox-b2b.revolut.com/api/1.0
  description: Sandbox server (uses test data)
tags:
- name: 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](https://developer.revolut.com/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](https://developer.revolut.com/docs/api/merchant#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](https://developer.revolut.com/docs/api/merchant#create-order).

    :::'
paths:
  /api/orders:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version'
    post:
      summary: Create an order
      operationId: createOrder
      description: "Create an `Order` object.\n\nCreating 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.\n\nTo learn more about how you can accept payments, see:\n  - [Revolut Pay](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/revolut-pay/introduction)\n  - [Card payments](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/card-payments/introduction)\n  - [Apple Pay and Google Pay](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/apple-pay-google-pay/introduction)\n  - [Pay by Bank](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/pay-by-bank/introduction)\n  - [Revolut Checkout](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/revolut-checkout/introduction)\n  - [Hosted Checkout Page](https://developer.revolut.com/docs/guides/merchant/accept-payments/online-payments/hosted-checkout-page/introduction)\n\n\n### Pre-authorisation and incremental authorisation\n\nOrders can be created with `authorisation_type: pre_authorisation` to enable incremental authorisation. This allows you to increase the authorised amount after the initial authorisation.\n\n**Requirements:**\n- `capture_mode` must be set to `manual`\n- `authorisation_type` must be set to `pre_authorisation`\n\n**Payment method support:**\n\nPre-authorisation orders support card, Apple Pay, and Google Pay only — enforced at the API level and on the hosted checkout page. Revolut Pay account-to-account (A2A) payments, Pay by Bank, and SEPA Direct Debit are not supported for pre-authorisation orders.\n\n**`cancel_authorised_after`:**\n\nFor pre-authorisation orders, `cancel_authorised_after` can be set to a maximum of 30 days (`P30D`). For final authorisation orders, the 7-day maximum (`P7D`) still applies. If omitted, only `capture_deadline` governs expiry.\n\n**Example use cases:**\n- Hotels: authorise deposit, then increment for room service and minibar\n- Car rentals: authorise deposit, then increment for damages or fuel\n\n:::info\nFor more information, see:\n- [Pre-authorisation guide](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation)\n- [Incremental authorisation guide](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation)\n- [Increment authorisation endpoint](https://developer.revolut.com/docs/api/merchant#increment-authorisation)\n:::\n\n<details>\n<summary>Industry-specific requirements</summary>\n\nIf 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.\n\n| Industry | Related fields |\n| ------- | --------------- |\n| Retail merchants | `line_items`, `shipping` |\n| Airlines | `industry_data` with `type: airline` |\n| Car rentals | `industry_data` with `type: car_rental` |\n| Hotels & accommodation | `industry_data` with `type: lodging` |\n| Travel agencies (OTAs) | `industry_data` with `type: airline` and `industry_data` with `type: lodging` |\n| Crypto merchants | `industry_data` with `type: crypto` |\n| Event ticket sellers | `industry_data` with `type: event` |\n| Marketplace merchants | `industry_data` with `type: marketplace` |\n\n</details>"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order-Creation-v7'
            examples:
              example_order_min_params:
                $ref: '#/components/examples/Req-Order-Min'
              example_order_additional:
                $ref: '#/components/examples/Req-Order-Additional-v2'
              example_order_pre_auth:
                $ref: '#/components/examples/Req-Order-Pre-Auth'
              example_order_line_items:
                $ref: '#/components/examples/Req-Order-Line-Items'
              example_order_shipping:
                $ref: '#/components/examples/Req-Order-Shipping'
              example_order_airline:
                $ref: '#/components/examples/Req-Order-Airline-v2'
              example_order_car_rental:
                $ref: '#/components/examples/Req-Order-Car-Rental-v2'
              example_order_crypto:
                $ref: '#/components/examples/Req-Order-Crypto-v3'
              example_order_marketplace:
                $ref: '#/components/examples/Req-Order-Marketplace-v3'
              example_order_event:
                $ref: '#/components/examples/Req-Order-Event-v2'
              example_order_lodging:
                $ref: '#/components/examples/Req-Order-Lodging-v2'
              example_order_multi_industry:
                $ref: '#/components/examples/Req-Order-Multi-Industry'
      responses:
        '201':
          description: Order created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order-v7'
              examples:
                example_order_min_params:
                  $ref: '#/components/examples/Res-Order-Min'
                example_order_additional:
                  $ref: '#/components/examples/Res-Order-Additional-v2'
                example_order_pre_auth:
                  $ref: '#/components/examples/Res-Order-Pre-Auth'
                example_order_line_items:
                  $ref: '#/components/examples/Res-Order-Line-Items'
                example_order_shipping:
                  $ref: '#/components/examples/Res-Order-Shipping'
                example_order_airline:
                  $ref: '#/components/examples/Res-Order-Airline-v2'
                example_order_car_rental:
                  $ref: '#/components/examples/Res-Order-Car-Rental-v2'
                example_order_crypto:
                  $ref: '#/components/examples/Res-Order-Crypto-v3'
                example_order_marketplace:
                  $ref: '#/components/examples/Res-Order-Marketplace-v3'
                example_order_event:
                  $ref: '#/components/examples/Res-Order-Event-v2'
                example_order_lodging:
                  $ref: '#/components/examples/Res-Order-Lodging-v2'
                example_order_multi_industry:
                  $ref: '#/components/examples/Res-Order-Multi-Industry'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                code: bad_request
                message: Could not parse JSON
                timestamp: 1721049596461
          headers: {}
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                code: unauthenticated
                message: Authentication failed
                timestamp: 1721049596461
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      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](https://developer.revolut.com/docs/api/merchant#retrieve-order) endpoint.'
      parameters:
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/From'
      - $ref: '#/components/parameters/To'
      - $ref: '#/components/parameters/Customer-Id-Query'
      - $ref: '#/components/parameters/Merchant-Order-Data-Reference'
      - $ref: '#/components/parameters/Order-State-Query'
      - $ref: '#/components/parameters/Location-Id-Query'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Orders-v2'
              examples:
                list_of_orders:
                  $ref: '#/components/examples/Res-Orders-List-v2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      tags:
      - Orders
      security:
      - Api-Key: []
  /api/orders/{order_id}:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version'
    - $ref: '#/components/parameters/Order-Id'
    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: '#/components/schemas/Order-v7'
              examples:
                example_order_min_params:
                  $ref: '#/components/examples/Res-Order-Min'
                example_order_additional:
                  $ref: '#/components/examples/Res-Order-Additional-v2'
                example_order_pre_auth:
                  $ref: '#/components/examples/Res-Order-Pre-Auth'
                example_order_line_items:
                  $ref: '#/components/examples/Res-Order-Line-Items'
                example_order_subscription:
                  $ref: '#/components/examples/Res-Order-Subscription'
                example_order_shipping:
                  $ref: '#/components/examples/Res-Order-Shipping'
                example_order_airline:
                  $ref: '#/components/examples/Res-Order-Airline-v2'
                example_order_car_rental:
                  $ref: '#/components/examples/Res-Order-Car-Rental-v2'
                example_order_crypto:
                  $ref: '#/components/examples/Res-Order-Crypto-v3'
                example_order_marketplace:
                  $ref: '#/components/examples/Res-Order-Marketplace-v3'
                example_order_event:
                  $ref: '#/components/examples/Res-Order-Event-v2'
                example_order_lodging:
                  $ref: '#/components/examples/Res-Order-Lodging-v2'
                example_order_multi_industry:
                  $ref: '#/components/examples/Res-Order-Multi-Industry'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              examples:
                example-1:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1601296792533
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                code: unauthenticated
                message: Authentication failed
                timestamp: 1721049596461
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                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` (maximum 30 days (`P30D`) for `pre_authorisation` orders; 7 days (`P7D`) for `final` orders)</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](https://developer.revolut.com/docs/guides/merchant/reference/order-lifecycle).

        :::'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order-Update-v7'
            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: '#/components/schemas/Order-v7'
              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: '#/components/schemas/Error-v2'
              example:
                code: bad_request
                message: Could not parse JSON
                timestamp: 1721049596461
          headers: {}
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                code: unauthenticated
                message: Authentication failed
                timestamp: 1721049596461
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              example:
                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: '#/components/schemas/Error-v2'
              example:
                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: []
  /api/orders/{order_id}/increment-authorisation:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version'
    - $ref: '#/components/parameters/Order-Id'
    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](https://developer.revolut.com/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](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation)

        :::'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Incremental-Authorisation-Request'
            examples:
              basic_increment:
                $ref: '#/components/examples/Req-Order-Increment-Auth-Basic'
              increment_with_additional:
                $ref: '#/components/examples/Req-Order-Increment-Auth-Additional'
      responses:
        '200':
          description: Authorization increment initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order-v7'
              examples:
                increment_in_progress:
                  $ref: '#/components/examples/Res-Order-Increment-Processing'
                increment_authorised:
                  $ref: '#/components/examples/Res-Order-Increment-Authorised'
                increment_declined:
                  $ref: '#/components/examples/Res-Order-Increment-Declined'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              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: '#/components/schemas/Error-v2'
              example:
                code: not_found
                message: Order not found
                timestamp: 1768397646286
        '422':
          description: Unprocessable Entity - Order state doesn't allow increment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              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: []
  /api/orders/{order_id}/capture:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Revolut-Api-Version'
    - $ref: '#/components/parameters/Order-Id'
    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.\n\n:::info\nFor more information about the order and payment lifecycle, see: [Order and payment\nlifecycle](https://developer.revolut.com/docs/guides/merchant/reference/order-lifecycle).\n:::\n\n## Capture modes\n\nWhen you [create an order](https://developer.revolut.com/docs/api/merchant/2026-03-12#create-order), you can choose one of the following capture modes:\n\n  | **Capture mode** | **Description** |\n  | ---------------- | --------------- |\n  | `automatic` | The order is captured automatically after payment authorisation. No further actions are needed. |\n  | `manual` | The order is not captured automatically and stays in `authorised` state. You must manually capture the order using the steps outlined below. |\n\n:::warning\nBy 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.\n\nThe capture deadline can be customised:\n- Use `cancel_authorised_after` parameter when creating an order to set a custom expiry period\n- The effective deadline is the earlier of `cancel_authorised_after` and the card/network clearing window\n- `capture_deadline` is set when the order becomes `authorised` and doesn't change afterwards\n- Use **pre-authorisation** (`authorisation_type: pre_authorisation`) for extended clearing windows (up to 30 days) and incremental authorisation support (see tip below)\n:::\n\n:::tip [Extended clearing windows]\nIf your business requires longer authorisation hold periods (up to 30 days depending on card scheme and MCC), use [pre-authorisation](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/pre-authorisation) instead of standard authorisation. Pre-authorisation also supports [incremental authorisation](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/advanced-authorisation/incremental-authorisation) for variable-amount scenarios.\n:::\n\n### Manual capture\n\nTo capture an order manually, use one of the following methods:\n\n| **Web UI** | **Merchant API** |\n| ---------- | ------------ |\n| <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. |\n\n:::info\nFor more information about manually capturing an order, see: [Authorise an amount to capture\nlater](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/capture-later).\n:::\n\n#### Partial capture\n\nYou have the option to capture only a fraction of the full amount. In such cases, the uncaptured portion of the amount will be voided.\n\n:::warning\nThe following limitations apply to manual captures:\n  - An order can only be captured once\n  - Captured amount can't exceed the authorised amount\n  - On Web UI, only capturing full amount is possible\n  - `0` amount captures are not allowed\n  - For partial captures, you can only resend the request with the initial amount\n:::\n\n#### Updating line items at capture\n\nYou 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:\n- **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).\n- **Final adjustments:** Update order details when the delivered items differ from the initial authorisation (e.g., out-of-stock items, substitutions, quantity changes).\n\n:::warning\nIf 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.\n:::\n\n:::info\nFor a comprehensive guide including use cases and examples, see: [Authorise a payment to capture later](https://developer.revolut.com/docs/guides/merchant/operations/capture-and-settlement/capture-later#update-line-items-at-capture).\n:::\n\n## Idempotency and repeated requests\n\nThe capture operation is idempotent. This means that an order can only be captured once. If you send a capture request more than once:\n\n- The first valid request captures the order and moves it to the processing stage.\n- Any subsequent request with the same capture amount will not recapture funds and behaves like a [Retrieve an order](https://developer.revolut.com/docs/api/merchant/2026-03-12#retrieve-order) request, returning the current order state.\n- A subsequent request with a different capture amount returns an error.\n\n:::info\nUtilising the idempotent nature of this endpoint helps maintain data consistency and prevents duplicate processing of the same order.\n:::"
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Order-Capture-v2'
            examples:
              example_minimal:
                $ref: '#/components/examples/Req-Order-Capture-Min'
              example_with_line_items:
                $ref: '#/components/examples/Req-Order-Capture-Line-Items'
      responses:
        '200':
          description: Order captured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order-v7'
              examples:
                captured_order_minimal:
                  $ref: '#/components/examples/Res-Order-Capture-Min'
                captured_order_line_items:
                  $ref: '#/components/examples/Res-Order-Capture-Line-Items'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
              examples:
                example-1:
                  value:
                    code: bad_request
                    message: Could not parse JSON
                    timestamp: 1601296792533
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/sch

# --- truncated at 32 KB (300 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revolut/refs/heads/main/openapi/revolut-orders-api-openapi.yml