Revolut Report runs API

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](https://developer.revolut.com/docs/guides/merchant/monitor-and-observe/reports-reconciliation). :::

OpenAPI Specification

revolut-report-runs-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  version: '1.0'
  title: Business Accounting Report runs 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: 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](https://developer.revolut.com/docs/guides/merchant/monitor-and-observe/reports-reconciliation).

    :::'
paths:
  /api/report-runs:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    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.\n\nUse the returned `report_run_id` and the [Retrieve report run details](https://developer.revolut.com/docs/api/merchant#retrieve-report-run) operation to check the status of the generation.\n\nAfter generation is done, use the [Download report file](https://developer.revolut.com/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. \n\n### Report types\n\nThe table below helps to choose the right report type for your use case:\n\n| Report type | What it covers |\n| ----------- | -------------- |\n| `custom_report` | Settled and processing transactions with configurable columns |\n| `settlement_report` | All settled transactions, with a configurable set of columns |\n| `payments_report` | All payments including failed and declined ones |\n| `payout_statement_report` | All transactions contributing to a specific payout |\n| `icpp_fee_breakdown_report` | IC++ fees per transaction for a specific IC++ charge |\n\n### IDs across report types\n\nEach report type uses a different primary ID, depending on which system the data comes from:\n\n| ID column | System | Report types |\n| --------- | ------ | ------------ |\n| `payment_id`, `id` | **Acquiring system** - identifies a payment attempt | `payments_report`, `icpp_fee_breakdown_report` |\n| `transaction_id` | **Core ledger** - identifies the settlement entry created when a payment is captured | `settlement_report`, `payout_statement_report`, `custom_report` |\n| `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'
                  custom_report: '#/components/schemas/Report-Run-Custom-Report'
                  payments_report: '#/components/schemas/Report-Run-Payments-Report'
                  payout_statement_report: '#/components/schemas/Report-Run-Payout-Report'
                  icpp_fee_breakdown_report: '#/components/schemas/Report-Run-Icpp-Report'
              oneOf:
              - $ref: '#/components/schemas/Report-Run-Settlement-Report'
              - $ref: '#/components/schemas/Report-Run-Custom-Report'
              - $ref: '#/components/schemas/Report-Run-Payments-Report'
              - $ref: '#/components/schemas/Report-Run-Payout-Report'
              - $ref: '#/components/schemas/Report-Run-Icpp-Report'
            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: '#/components/schemas/Report-Run'
              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: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Report runs
  /api/report-runs/{report_run_id}:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Report-Run-Id'
    get:
      summary: Retrieve a report run
      operationId: retrieveReportRun
      description: "Retrieve details of a report run, based on the `report_run_id`. \n\nUse this method to check the status of a report run.\n\nIf a report run's `status` is `completed`, the report file can be downloaded using the `file_url` for 24 hours after report generation finishes.\n\nOnce 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: '#/components/schemas/Report-Run'
              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: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Report runs
  /api/report-runs/{report_run_id}/file:
    parameters:
    - $ref: '#/components/parameters/Authorization'
    - $ref: '#/components/parameters/Report-Run-Id'
    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: '#/components/schemas/Report-Run-Csv-Settlement'
                - $ref: '#/components/schemas/Report-Run-Csv-Custom'
                - $ref: '#/components/schemas/Report-Run-Csv-Payments'
                - $ref: '#/components/schemas/Report-Run-Csv-Payout'
                - $ref: '#/components/schemas/Report-Run-Csv-Icpp'
              examples:
                settlement_report:
                  $ref: '#/components/examples/Res-Settlement-Report'
                custom_report:
                  $ref: '#/components/examples/Res-Custom-Report'
                payments_report:
                  $ref: '#/components/examples/Res-Payments-Report'
                payout_statement_report:
                  $ref: '#/components/examples/Res-Payout-Report'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error-v2'
      security:
      - Api-Key: []
      tags:
      - Report runs
components:
  schemas:
    Report-Run-Currency:
      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/).

        :::'
      example: GBP
      minLength: 3
      maxLength: 3
    Report-Run:
      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
    Report-Run-Custom-Options:
      type: object
      description: Further options to customise the report.
      properties:
        timezone:
          $ref: '#/components/schemas/Report-Run-Timezone'
        columns:
          type: array
          description: "Names of the columns to include in the report.\n\nIf not specified, all available columns are included. An empty array returns an error.\n\nTo include custom order metadata, use `metadata.*` with the attribute name, for example `metadata.my_attribute`.\n\nAvailable columns:\n\n  | Column name | Description |\n  | ----------- | ----------- |\n  | `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. |\n  | `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. |\n  | `transaction_description` | Description of the transaction. |\n  | `payout_id` | Unique identifier of the payout that this transaction contributed to. |\n  | `dispute_id` | Unique identifier of the dispute associated with this transaction, if applicable. |\n  | `account_id` | Unique identifier of the merchant account. |\n  | `account_balance` | Account balance at the time of the transaction. |\n  | `order_id` | Unique identifier of the order. Use to cross-reference with the payments or payout reports. |\n  | `original_order_id` | For refunds and chargebacks, the order ID of the original payment. For settlement transactions, matches `order_id`. |\n  | `original_order_ext_ref` | Merchant's order identifier of the original order for external reference. |\n  | `order_description` | Description of the order. |\n  | `order_channel` | Channel through which the order was created. |\n  | `order_customer_note` | Note added by the customer at the time of the order. |\n  | `order_tip_amount` | Tip amount set at the order level. |\n  | `order_created_by` | Identifier of the user who created the order. |\n  | `payment_initiated_by` | Identifier of who initiated the payment. |\n  | `order_line_items` | Line items included in the order, if any. |\n  | `payout_reference` | Reference of the payout transfer associated with the transaction. |\n  | `invoice_reference` | Invoice reference associated with the order, if any. |\n  | `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. |\n  | `created_date` | Date and time the order was created. |\n  | `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. |\n  | `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. |\n  | `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. |\n  | `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. |\n  | `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](https://developer.revolut.com/docs/api/merchant#download-report-file). |\n  | `legacy_type` | Legacy type value for backwards compatibility. |\n  | `state` | State of the transaction. |\n  | `description` | Description of the transaction. |\n  | `merchant_order_ext_ref` | Merchant's order reference. The value of the `merchant_order_data.reference` field set when the order was created. |\n  | `customer_id` | Unique identifier of the customer. |\n  | `amount` | Total amount of the order. |\n  | `currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the order. |\n  | `settlement_amount` | Total amount settled on the merchant's account. |\n  | `settlement_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the settled amount. |\n  | `exchange_rate` | Exchange rate applied if currency conversion occurred. |\n  | `refunded_amount` | Amount refunded for the order. |\n  | `statement_descriptor` | Statement descriptor shown on the customer's bank statement. |\n  | `tip_amount` | Tip amount included in the transaction. |\n  | `terminal_hardware_id` | Identifier of the card reader hardware used, for in-person payments. |\n  | `customer_name` | Name of the customer. |\n  | `customer_email` | Email address of the customer. |\n  | `customer_card_number` | Masked card number used for the payment. |\n  | `customer_card_brand` | Card brand used for the payment. Derived from BIN data. Example values: `VISA`, `MASTERCARD`, `MASTERCARD_DEBIT`, `MAESTRO`, `AMEX`, `DINERS`, `DISCOVER`, `JCB`. |\n  | `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](https://developer.revolut.com/docs/api/merchant#download-report-file). |\n  | `customer_card_category` | Card commercial category. Values: `consumer` (personal card) and `commercial` (business or corporate card). |\n  | `payment_method` | Payment method the customer used to pay for the order. |\n  | `fee_amount` | Total fee amount applied to the order, aggregated across all fee components (acquiring markup + interchange + scheme fees). |\n  | `fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the total fee. |\n  | `processing_fee_amount` | Acquiring markup fee only — a subset of `fee_amount`. Represents Revolut's service fee, excluding interchange and scheme fees. |\n  | `processing_fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the acquiring markup fee. |\n  | `fx_fee_amount` | Foreign exchange fee amount, if applicable. |\n  | `fx_fee_currency` | The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the FX fee. |\n  | `browser_url` | The URL where the customer initiated the payment. |\n  | `beneficiary_name` | Name of the beneficiary, for bank transfer payments. |\n  | `beneficiary_account_number` | Account number of the beneficiary, for bank transfer payments. |\n  | `location_id` | Unique identifier of the location related to the transaction. |\n  | `location_name` | Name of the location related to the transaction. |\n  | `surcharge_amount` | Surcharge amount applied to the transaction. Omitted when no surcharge applies. |\n  | `order_surcharge_amount` | Surcharge amount set at the order level. |\n  | `order_custom_field_name` | Name of a custom field set on the order. |\n  | `order_custom_field_value` | Value of a custom field set on the order. |\n  | `offline_payment_state` | State of an offline payment, if applicable. |\n  | `order_authorisation_type` | Authorisation type of the order, for example `FULL` or `PRE_AUTH`. |\n  | `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.*
          example:
          - transaction_id
          - amount
          - currency
          - metadata.my_attribute
    Icpp-Charge-Id:
      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.'
    Report-Run-From:
      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.'
    Report-Run-Csv-Payments:
      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.
          example: 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 c

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