Quote FX, execute a USD → EUR transfer, wait for settlement.
Cross-border transfers move money between currencies — USD to EUR, USDC to EURC, USD to BRL via Pix, etc. They always need a quote first to lock in the FX rate.
The transfer inherits amounts + rate + fee from the quote.
Always use an idempotency_key. If your process crashes after POSTing but before receiving the response, you don’t want a duplicate transfer on retry. Keys are cached 24 hours.
For INSUFFICIENT_BALANCE, funds never left your wallet — retry after topping up.For RAIL_DECLINED, the receiving bank rejected — usually a bad account number or compliance flag. Surface to the user, don’t auto-retry.For SANCTIONS_HIT, the destination hit a sanctions list. Do not retry; escalate to compliance.