---
title: "Get an indicative quote for a transfer"
method: POST
path: "/pay/indicative-quote"
tags: ["Transfers"]
---

# Get an indicative quote for a transfer

`POST /pay/indicative-quote`

## Request

- Base URL: `https://b2b.revolut.com/api/1.0`
- URL: `https://b2b.revolut.com/api/1.0/pay/indicative-quote`
- Auth: HTTP bearer

Get a non-binding estimate of fees, the exchange rate, and the expected delivery time for a potential [transfer](https://developer.revolut.com/docs/api/business#create-payment).
No money is moved and no resource is created.

The request mirrors the [`/pay` endpoint](https://developer.revolut.com/docs/api/business#create-payment) that is used to initiate a transfer, but it excludes irrelevant fields that do not affect pricing or delivery time, such as the request ID or reference.

If the counterparty has multiple payment methods available, for example, 2 accounts, or 1 account and 1 card, you **must specify the account or card** to which you want to transfer the money (`receiver.account_id` or `receiver.card_id` respectively).
Note that in a single request, you can specify either an account or a card, but not both.

:::note[Sandbox behaviour]
In Sandbox, this feature is only available for testing.
While **incomplete** or **invalid requests** will return production-like error responses, **complete and valid requests** in Sandbox do not return real values and `estimated_arrival` will always return `instant`.
:::

For more details, see the guides: **Check costs and delivery time before paying** section in [Bank transfers](https://developer.revolut.com/docs/guides/manage-accounts/transfers/bank-transfers#check-costs-and-delivery-time-before-paying) or [Card transfers](https://developer.revolut.com/docs/guides/manage-accounts/transfers/card-transfers#check-costs-and-delivery-time-before-paying).

## Request body

- IndicativeQuoteRequest: The request details for an indicative quote.
  - `account_id` string, uuid, required: The ID of the account from which the transfer will be made.
  - `receiver` PaymentReceiver, required: The details of the transfer recipient. If the counterparty has multiple payment methods available (e.g. 2 accounts, or 1 account and 1 card), you must specify the account (`account_id`) or card (`card_id`) to which you want to transfer the money.
    - `counterparty_id` string, uuid, required: The ID of the receiving counterparty.
    - `account_id` string, uuid: The ID of the receiving counterparty's account. Used for bank transfers. If the counterparty has multiple payment methods available, use it to specify the account to which you want to send the money.
    - `card_id` string, uuid: The ID of the receiving counterparty's card. Used for card transfers. If the counterparty has multiple payment methods available, use it to specify the card to which you want to send the money.
  - `amount` number, double, required: The transfer amount in major units.
  - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `charge_bearer` 'shared' | 'debtor' | 'prefer_debtor': The party to which any transaction fees are charged if the resulting transaction route has associated fees: | Value | Description | | --- | --- | | **`shared`** | Also known as **SHA**. The transaction route fees are split between the sender and the recipient. The sender pays the fees charged by their bank, while the recipient pays the fees charged by the receiving and any intermediary banks. | | **`debtor`** | Also known as **OUR**. The sender pays all explicit transaction fees. | | **`prefer_debtor`** | Selects the SWIFT **OUR** option when available. If the payment doesn't offer the OUR option, this value is ignored and the default fee handling applies — no error `3287` is returned. | :::note Some transactions with fees might not support forced charge bearer selection. If this is the case, the request will return an error. This does **not** apply to `prefer_debtor`, which falls back to default if `debtor` is not available. :::
  - `transfer_reason_code` string: The reason code for the transaction. Transactions to certain countries and currencies might require you to provide a transfer reason. You can check available reason codes with the [`GET /transfer-reasons` operation](https://developer.revolut.com/docs/api/business#get-transfer-reasons). If a transfer reason is not required for the given currency and country, this field is ignored.
  - `exchange_reason_code` string: The reason code for the exchange. Depending on the country and the amount of funds to be exchanged, you might be required to provide an exchange reason. You can check available reason codes with the [`GET /exchange-reasons` operation](https://developer.revolut.com/docs/api/business#get-exchange-reasons). If an exchange reason is not required, this field is ignored.

## Response `200`

The expected processing attributes for the potential transfer

- IndicativeQuoteResponse: The expected processing attributes for a potential transfer.
  - `amount` Money, required: A monetary amount and its associated currency.
    - `amount` number, double, required: Amount in major units.
    - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `fee` IndicativeQuoteFee, required: Details of the total fee for the transfer.
    - `amount` number, double, required: Fee amount in major units.
    - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
    - `breakdown` IndicativeQuoteFeeBreakdown: Breakdown of transfer and exchange fees. When the total `fee` is zero, this field is omitted from the response.
      - `transfer_fee` SimpleFee: A specific fee component.
        - `amount` number, double, required: Fee amount in major units.
        - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
      - `exchange_fee` SimpleFee: A specific fee component.
        - `amount` number, double, required: Fee amount in major units.
        - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `estimated_total` Money, required: A monetary amount and its associated currency.
    - `amount` number, double, required: Amount in major units.
    - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `estimated_exchange_rate` string: Exchange rate for the transfer. For same-currency transfers, this field is omitted from the response.
  - `estimated_amount_after_exchange` Money: A monetary amount and its associated currency.
    - `amount` number, double, required: Amount in major units.
    - `currency` string, required: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `estimated_arrival` IndicativeQuoteEstimatedArrival: Estimated time and speed of funds arrival in relation to the current date and time. Present if such information is available.
    - `date` string, date, required: The estimated arrival date provided in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
    - `speed` 'instant' | 'in_seconds' | 'today' | 'tomorrow' | 'by_date', required: The expected speed of the transfer. Possible values are: | Value | Description | | --- | --- | | **`instant`** | The funds are expected to reach the recipient **immediately** after the transfer is created. | | **`in_seconds`** | The funds are expected to reach the recipient **within 5 minutes** after the transfer is created. | | **`today`** | The funds are expected to reach the recipient by the end of the **same day** the transfer is created. | | **`tomorrow`** | The funds are expected to reach the recipient by the end of the **day after** the transfer is created. | | **`by_date`** | The funds are expected to reach the recipient by the end of the **day specified** in the `date` parameter. |
  - `warnings` string[]: Potential warnings regarding the quote: | Value | Description | | --- | --- | | **`volatile_fx_rate`** | Returned when the specified FX rate is volatile. |

## Other responses

- `400`: Bad request For example: - the request is invalid (e.g. malformed body, validation failure) - both `account_id` and `card_id` are provided in `receiver` (only one of these values can be provided in a single request) - the specified `charge_bearer` is not supported - `exchange_reason_code` is required for such a transfer but was not provided in the request - the specified counterparty, account, or card was not found
- `default`: Unexpected error

---

[API](https://skmtc.dev/revolut/apis/business-api.md) - [All operations](https://skmtc.dev/revolut/apis/business-api/llms.txt) - [OpenAPI document](https://skmtc.dev/revolut/apis/business-api/revisions/be089d9fa8b4?raw)
