# Get exchange transfer by ID

Gets an exchange transfer by ID.

Endpoint: GET /exchange_transfers/{id}
Version: 4.0.0
Security: Bearer

## Path parameters:

  - `id` (string, required)
    Unique identifier of the exchange transfer you want to retrieve.

## Response 200 fields (application/json):

  - `exchange_transfer_id` (string, required)
    Unique identifier of the exchange transfer.
    Example: "e3b20ba4-28ed-4752-990d-e67887bb331e"

  - `state` (string, required)
    State of the exchange transfer.
    Enum: "EXECUTED", "COMPLETED", "FAILED"

  - `type` (string, required)
    Indicates the exchange transfer's quoted FX rate type.
    Enum: "FIRM", "INDICATIVE"

  - `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.
    Example: "sf@rn.us.ca.san_francisco"

  - `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.
    Example: "sf_gbp@rn.us.ca.san_francisco"

  - `source_amount` (number, required)
    Sending amount of the exchange transfer.
    Example: 1

  - `destination_amount` (number, required)
    Receiving amount of the exchange transfer.
    Example: 355

  - `source_currency` (string, required)
    Sending currency of the exchange transfer.
    Example: "USD"

  - `destination_currency` (string, required)
    Receiving currency of the exchange transfer.
    Example: "GBP"

  - `fx_transfer_rate` (object, required)
    Describes an exchange rate used in an exchange transfer.

  - `fx_transfer_rate.rate` (number, required)
    Exchange rate used to make the exchange transfer.
    Example: 0.89

  - `fx_transfer_rate.base_currency` (string, required)
    Base currency for custom rate for the sending account.
    Example: "USD"

  - `fx_transfer_rate.counter_currency` (string, required)
    Counter currency for custom rate for the sending account.
    Example: "GBP"

  - `fx_transfer_rate.rate_type` (string, required)
    Rate type used to make the exchange transfer. Valid values are BUY or SELL.
    Example: "BUY"

  - `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` (array, required)
    Custom information set by a RippleNet address involved in the exchange transfer.

  - `user_info.node_address` (string, required)
    RippleNet address of the fiat node instance that set the user information.
    Example: "rn.us.ny.new_york"

  - `user_info.state` (string, required)
    State of the exchange transfer set when the RippleNet address set the user information.
    Enum: "EXECUTED", "COMPLETED", "FAILED"

  - `user_info.json` (object, required)
    One or more arbitrary key/value pairs.

  - `user_info.created_at` (string)
    timestamp of when this user info was created

## Response 404 fields (application/json):

  - `type` (string)
    URL to the error documentation.
    Example: "https://errors.ripplenet.ripple.com/error/json-processing-error"

  - `title` (string)
    Summary of the returned problem.
    Example: "Invalid Request Object"

  - `detail` (string)
    Description of the returned problem.
    Example: "The request parameter [account_id] is not in the correct format."

  - `status` (number)
    HTTP error code.
    Example: 400

  - `ripplenet_error_code` (string)
    RippleNet specific error code.
    Example: "E0104"

  - `finality` (string)
    Specifies if the request can be retried for a successful response.
    Example: "PERMANENT"


