A deposit reaches COMPLETED when the funds are
credited to your balance. Use the Deposit completed webhook
to receive completion updates. Use
GET /v3/fx/deposits
with cursor pagination to reconcile deposit records and check their current
statuses when a webhook is unavailable.State machine
Only COMPLETED sends a webhook; poll
GET /v3/fx/deposits to see the other two.
How OpenFX detects deposits
Listing recent deposits
startingAfter and endingBefore. See Pagination.
Field reference
id: permanent deposit ID (readable,dpt_-prefixed)depositAmount,currency: what was depositednetwork: settlement network (for example, ETHEREUM for a stablecoin deposit);nullfor a fiat deposittransactionHash: on-chain transaction hash for crypto deposits,nullotherwisereferenceId: external reference id supplied by the customer, if anypaymentDetails: payment-rail-specific identifiers keyed by transfer type (for example, Fedwire IMAD/OMAD). Present only for fiat deposits;nullfor crypto deposits and any deposit without rail metadatacreatedAt: when OpenFX first observed the deposit
Common mistakes
- Ignoring
networkfor stablecoin reconciliation. A USDC deposit on Ethereum and a USDC deposit on Polygon are both USDC but different on-chain rails: readnetworkto tell them apart. - Reaching for
transactionHashon a fiat deposit. It’snullfor fiat. Match fiat deposits onreferenceIdandpaymentDetailsinstead. - Waiting for a webhook on a failed deposit. fx.deposit.completed is the only deposit webhook. A REJECTED or ERROR deposit sends nothing, so poll
GET /v3/fx/depositsto find it.
What’s next
Settlement models
How deposits flow into balances and out as withdrawals.
Withdrawals
The companion state machine.
Pagination
Cursor-based reconciliation patterns.