---
title: "Execute exchange transfer"
method: POST
path: "/exchange_transfers/execute"
tags: ["Exchange transfers"]
---

# Execute exchange transfer

`POST /exchange_transfers/execute`

Execute an exchange transfer to move funds from one of your accounts in one currency (USD, for example) to another one of your accounts in another currency (EUR, for example) at an exchange rate set by your peer who maintains both of your accounts on their ledger. An exchange transfer enables you to fund a foreign currency account from your domestic currency account in bulk.

Before you make this request, you may want to use the Quote Exchange Transfer request to see a quote for the exchange transfer you want to make.

## Request body

- FiatExchangeTransferExecuteRequest — JSON request object to execute an exchange transfer.
  - `sender_address` string, required — RippleNet account name and address of the sender, in the format `accountname@ripplenetaddress`. For example, `new_york@rn.us.ny.new_york`.
  - `receiver_address` string, required — RippleNet account name and address of the receiver, in the format `accountname@ripplenetaddress`. For example, `new_york@rn.us.ny.new_york`.
  - `amount` number, required — Amount transferred, expressed in the curency of the account indicated by the `amount_type` value.
  - `amount_type` 'SENDER_AMOUNT' | 'RECEIVER_AMOUNT', required — Amount type used for the exchange transfer.<p>To indicate that the `amount` is expressed in the currency of the account provided by the `sender_address` value, set to `SENDER_AMOUNT`.</p> <p>To indicate that the `amount` is expressed in the currency of the account provided by the `receiver_address` value, set to `RECEIVER_AMOUNT`.</p>
  - `end_to_end_id` string — ID set by the sender that is persisted on all fiat node instances that participated in the transfer.
  - `internal_id` string — Internal ID that the sender can optionally specify. Only visible to the sender. Only the sending fiat node instance stores this ID.
  - `user_info` object — Provide one or more arbitrary key/value pairs.

## Response `200`

Successfully executed exchange transfer.

- FiatExchangeTransferExecuteResponse — JSON response object that represents an exchange transfer.
  - `exchange_transfer_id` string, uuid, required — Unique identifier of the exchange transfer.
  - `state` 'EXECUTED' | 'COMPLETED' | 'FAILED', required — State of the exchange transfer.
  - `type` 'FIRM' | 'INDICATIVE', required — Indicates the exchange transfer's quoted FX rate type.
  - `sender_address` string, required — RippleNet account name and address of the sender, in the format `accountname@ripplenetaddress`. For example, `new_york@rn.us.ny.new_york`.
  - `receiver_address` string, required — RippleNet account name and address of the receiver, in the format `accountname@ripplenetaddress`. For example, `new_york@rn.us.ny.new_york`.
  - `source_amount` number, required — Sending amount of the exchange transfer.
  - `destination_amount` number, required — Receiving amount of the exchange transfer.
  - `source_currency` string, required — Sending currency of the exchange transfer.
  - `destination_currency` string, required — Receiving currency of the exchange transfer.
  - `fx_transfer_rate` ExchangeTransferRate, required — Describes an exchange rate used in an exchange transfer.
    - `rate` number, required — Exchange rate used to make the exchange transfer.
    - `base_currency` string, required — Base currency for custom rate for the sending account.
    - `counter_currency` string, required — Counter currency for custom rate for the sending account.
    - `rate_type` string, required — Rate type used to make the exchange transfer. Valid values are `BUY` or `SELL`.
  - `end_to_end_id` string, required — ID set by the sender that is persisted on all fiat node instances that participated in the transfer.
  - `internal_id` string, required — Internal ID that the sender can optionally specify. Only visible to the sender. Only the sending fiat node instance stores this ID.
  - `user_info` FiatExchangeTransferUserInfo[], required — Custom information set by a RippleNet address involved in the exchange transfer.
    - `node_address` string, required — RippleNet address of the fiat node instance that set the user information.
    - `state` 'EXECUTED' | 'COMPLETED' | 'FAILED', required — State of the exchange transfer set when the RippleNet address set the user information.
    - `json` object, required — One or more arbitrary key/value pairs.
    - `created_at` string, date-time — timestamp of when this user info was created

## Other responses

- `400` — Bad request.

---

[API](https://skmtc.net/ripple/apis/ripplenet-server-api.md) · [All operations](https://skmtc.net/ripple/apis/ripplenet-server-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ripple/ripplenet-server-api/revisions/7843f07ca150/schema)
