# Exchange money

You can use the Business API to:

- [Get sell exchange rates](#get-an-exchange-rate) between two currencies with accompanying fees
- [Make a foreign exchange](#make-a-foreign-exchange) to sell or buy currency

## Supported currencies

The API supports the same currencies as the Revolut Business app.
You can find the [full list of Production currencies](https://help.revolut.com/business/help/receiving-payments/currency-exchanges/which-currencies-can-i-exchange-and-keep-in-my-account/) in the Help Centre.

:::note [Currency support in Sandbox]
Some of the supported currencies might not be available in the Sandbox environment.
:::

## Get an exchange rate

To get a sell exchange rate, provide the following details:

- `from`: The currency that you want to sell, i.e. from which you want to make the exchange.
- `amount`: The amount of the currency that you want to sell. If you don't provide it, it defaults to `1.00`.
- `to`: The currency that you want to exchange the money to.

For example, to get the rate for an exchange of 100 EUR to USD, make the following request:

- ![$Production]

  ```shell
  curl -L -X GET 'https://b2b.revolut.com/api/1.0/rate?from=EUR&amount=100&to=USD' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <your access token>'
  ```

- ![$Sandbox]

  ```shell
  curl -L -X GET 'https://sandbox-b2b.revolut.com/api/1.0/rate?from=EUR&amount=100&to=USD' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <your access token>'
  ```

In the response, you get the proposed exchange rate and expected accompanying fees, as well as the date of the proposed exchange rate.

To see example requests and responses:

[See the API reference: Get an exchange rate](/docs/api/business#get-rate)

## Make a foreign exchange

You can exchange money using one of these methods:

- ![Sell currency]

  You sell currency when you know the amount of currency from which you want to exchange money.
  For example, you want to exchange 135.5 USD to some EUR.

  To sell currency, provide the following details:

  - **`from`: The details of the account and currency from which you want to make the exchange.**
    - `account_id`: The ID of the account from which you want to sell currency.
    - `currency`: The currency from which you want to exchange money.
    - `amount`: The amount of currency that you want to sell.
  - **`to`: The details of the account and currency to which you want to make the exchange.**
    - `account_id`: The ID of the account to which you want to receive the exchanged currency.
    - `currency`: The currency to which you want to exchange money.

  :::note
  - Depending on the country and amount, you might also need to specify the [`exchange_reason_code`](/docs/api/business#get-exchange-reasons).
  - Optionally, you can also provide a `reference` for your exchange transaction so that you can easily identify it later.
  :::

  For example, to sell 135.50 USD for EUR, make the following request:

  - ![$Production]

    ```shell
    curl -X POST https://b2b.revolut.com/api/1.0/exchange \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your access token>" \
      -d '{
            "from": {
              "account_id": "d56dd396-523b-4613-8cc7-54974c17bcac",
              "currency": "USD",
              "amount": 135.5
            },
            "to": {
              "account_id": "a44dd365-523b-4613-8457-54974c8cc7ac",
              "currency": "EUR"
            },
            "reference": "Time to sell",
            "request_id": "e0cbf84637264ee082a848b"
          }'
    ```

  - ![$Sandbox]

    ```shell
    curl -X POST https://sandbox-b2b.revolut.com/api/1.0/exchange \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your access token>" \
      -d '{
            "from": {
              "account_id": "d56dd396-523b-4613-8cc7-54974c17bcac",
              "currency": "USD",
              "amount": 135.5
            },
            "to": {
              "account_id": "a44dd365-523b-4613-8457-54974c8cc7ac",
              "currency": "EUR"
            },
            "reference": "Time to sell",
            "request_id": "e0cbf84637264ee082a848b"
          }'
    ```

- ![Buy currency]

  You buy currency when you know the amount of currency to which you want to exchange money.
  For example, you want to exchange some USD to 200 EUR.

  To buy currency, provide the following details:

  - **`from`: The details of the account and currency from which you want to make the exchange.**
    - `account_id`: The ID of the account from which you want to make the exchange.
    - `currency`: The currency from which you want to exchange money.
  - **`to`: The details of the account and currency to which you want to make the exchange.**
    - `account_id`: The ID of the account to which you want to receive the exchanged currency.
    - `currency`: The currency to which you want to exchange money.
    - `amount`: The amount of currency that you want to buy.

  :::note
  - Depending on the country and amount, you might also need to specify the [`exchange_reason_code`](/docs/api/business#get-exchange-reasons).
  - Optionally, you can also provide a `reference` for your exchange transaction so that you can easily identify it later.
  :::

  For example, to buy 200 EUR with USD, make the following request:

  - ![$Production]

    ```shell
    curl -X POST https://b2b.revolut.com/api/1.0/exchange \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your access token>" \
      -d '{
            "from": {
              "account_id": "d56dd396-523b-4613-8cc7-54974c17bcac",
              "currency": "USD"
            },
            "to": {
              "account_id": "a44dd365-523b-4613-8457-54974c8cc7ac",
              "currency": "EUR",
              "amount": 200.0
            },
            "reference": "Time to buy",
            "request_id": "A1pH4num3ric2"
          }'
    ```

  - ![$Sandbox]

    ```shell
    curl -X POST https://sandbox-b2b.revolut.com/api/1.0/exchange \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <your access token>" \
      -d '{
            "from": {
              "account_id": "d56dd396-523b-4613-8cc7-54974c17bcac",
              "currency": "USD"
            },
            "to": {
              "account_id": "a44dd365-523b-4613-8457-54974c8cc7ac",
              "currency": "EUR",
              "amount": 200.0
            },
            "reference": "Time to buy",
            "request_id": "A1pH4num3ric2"
          }'
    ```

In the response, you get the exchange transaction ID, state, and creation and completion time.

To see example requests and responses:

[See the API reference: Exchange money](/docs/api/business#exchange-money)