For the complete documentation index, see llms.txt. This page is also available as Markdown.

Custody Deposits

Transfer the selected asset from its external network to an assigned custody address, then confirm credit in the user's Spot account. Unlike a bridge deposit, the sender transfers to that address rather than calling a bridge contract. Custody deposits credit Spot directly; no ValueChain EVM-to-Spot transfer is required.

1. Select the route

From Asset Configuration, select a chains entry whose custody.allowDeposit is true. Use its exact chainName. custody.minDepositAmount is the amount that must arrive, in human-readable asset units. Source-network fees are extra; if the received amount is below the minimum, the deposit can be rejected or stay Processing.

Do not reuse a custody address from another chainName or asset. A valid destination for one route is not valid for another.

2. Obtain and verify the address

Create or query the destination and verify it on ValueChain as described in Generate Custody Address. Do not transfer until API status is Enabled and the address is an exact string in getDepositWalletList on SoDexTokenCustody.

The deposit-address object has only chain, address, and status. It does not include a memo or tag. Do not invent a tag or derive one from the user's EVM address. If the destination network requires a memo or tag and you do not have it from the custody assignment, do not open the transfer. See Custody addresses.

3. Transfer from the external network

In the source wallet or exchange, select the same asset and the network that matches chainName (for example TON is not an EVM network). Send to the verified address. Save the source-network transaction hash.

The transfer is performed by that wallet or exchange, not by the address-creation API. No bridge approval or bridge call is required.

4. Track the deposit

Query Deposit status with the saved hash and the same chainName:

curl -sS --get "https://mainnet-gw.sodex.dev/api/v1/user/deposit/status" \
  --data-urlencode "chain=$CHAIN" \
  --data-urlencode "txHash=$SOURCE_TX_HASH" \
  -H "Accept: application/json"
  • If chain does not match the indexed record, the API returns an empty result, not an error.

  • The same txHash can match several records with different n. Inspect every data.records entry, including status, failCode, and failReason.

  • Empty records or Processing do not confirm credit.

Confirm the deposited asset in the user's Spot balance. Custody deposits do not credit the ValueChain EVM wallet or Perps directly. Do not send a second transfer to retry a status query.

Generate Custody AddressHistory & StatusMirror Protocol Lifecycle

Last updated