FX settles on the trading account only, so money in a virtual account moves across first and, when the payout should be funded from a virtual account, back again.
FX trades can settle only through the trading account. Funds held in a virtual account must therefore be transferred to the trading account before conversion. After the FX trade settles, the converted funds must be transferred back to the relevant virtual account if that account will fund the payout.
↳ Quotes are short-lived, typically about 30 seconds. Read
expires_at on every quote and never hard-code a window.Youthe API callerHopautomaticBankcounterparty
- 1YouMove the source currency from the virtual account to the trading accountPOST/accounts/{aid}/transferstrf_ only when the money sits in a virtual account
- 2YouRequest a quote for the pair and amountPOST/accounts/{aid}/fx/quotes
- 3Hop
- 4YouExecute before expires_atPOST/fx/quotes/{id}/execute
- 5Hop
- 6YouMove the proceeds to a virtual account in the target currency when the payout should be funded from onePOST/accounts/{aid}/transferstrf_ only when the payout is funded from a virtual account
- 7YouReconcile trades, including manual and reversal trades booked by HopGET/accounts/{aid}/fx/trades
Known gaps: a failed execution returns
200 with status: failed; check the body, not the status code. There is no Get FX Trade endpoint and no trade webhooks, so a timed-out execute is recovered by reading the quote’s executed_at and scanning List FX Trades for the quote_id. Hop-booked manual and reversal trades change balances with no event.