- Track the progress of a conversion in real time
- Update wallet balances when the swap settles
- Detect and react to provider rejections
- Reconcile fees and applied rates
COMPLETED represent finalized balance movements.
FX Swap Events
Events represent lifecycle transitions of an FX swap. An FX swap follows this state flow:State Definitions
Available Events
The webhook
data.status values (PROCESSING / COMPLETED / FAILED) differ from the REST order state (PENDING / SETTLED / FAILED) returned by the FX swap endpoints. They describe the same lifecycle.FX Swap Behavior
FX swaps are internal conversions between two wallets of the same user:data.swapTypeis alwaysfxSwapsource.typeanddestination.typeare alwaysaccount- The
sourcewallet is debited in the origin currency; thedestinationwallet is credited in the destination currency - Fees are charged in the origin currency
- The applied provider rate and pair are reported in
amounts.fx
Amount Flow (Important)
Theamounts object represents how funds move through the conversion:
debitedAmount— Gross amount deducted from the origin walletfees— Total fees in the origin currency, with abreakdownofsystemFeeandmerchantFee. Omitted when no fees apply.amountAfterFees— Net origin amount actually converted (debitedAmount - fees.total)fx— The appliedpair(e.g.EUR/USD) and providerratecreditedAmount— Final amount received by the destination wallet, in the destination currency. Omitted onswap_failed.
swap_failed, the payload additionally carries a failure object with code and reason describing the provider rejection.
All amounts are expressed in minor units.