# Complete exchange transfer Updates the status of an exchange transfer to COMPLETED. Make this request once the exchange transfer has been made on both the ledger and on internal systems. Endpoint: POST /exchange_transfers/{id}/complete Version: 4.0.0 Security: Bearer ## Path parameters: - `id` (string, required) Unique identifier of the exchange transfer to complete. ## 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"