English
Fund Payment Assets
Discover IDs from the target environment before creating a deposit address. Do not assume an asset or network ID from another deployment.
Discover the asset and network
bash
usdt_response="$(wallet_request GET '/asset-types?code=USDT&page=1&page_size=20')"
sepolia_response="$(wallet_request GET '/networks?is_active=true&page=1&page_size=100')"
export ASSET_TYPE_ID="$(printf '%s' "$usdt_response" | jq -er '.data.items[0].id // empty')"
export NETWORK_ID="$(printf '%s' "$sepolia_response" | jq -er '.data.items[] | select(.chain_id == 11155111) | .network_id')"
export ASSET_DECIMALS="$(printf '%s' "$usdt_response" | jq -er '.data.items[0].decimals // empty')"First verify success and the USDT result. Select Sepolia by chain_id: 11155111 rather than an environment-specific code. If it is absent, check subsequent pages and availability in the target environment, and stop until resolved.
Verify that the asset is deployed and active on the selected network.
bash
asset_response="$(
wallet_request GET "/assets/by-type-network?asset_type_id=$ASSET_TYPE_ID&network_id=$NETWORK_ID"
)"
printf '%s\n' "$asset_response" | jqProceed only when success and data.is_active are true, and the response identifies the intended asset and network.
Issue a customer deposit address
bash
deposit_address_body="{\"asset_type_id\":$ASSET_TYPE_ID,\"network_id\":$NETWORK_ID}"
deposit_address_response="$(
wallet_request POST "/accounts/$USER_ACCOUNT_ID/deposit-addresses" "$deposit_address_body"
)"
printf '%s\n' "$deposit_address_response" | jqStore and display the returned address together with the customer account, asset, network, and tag_or_memo. Use the test-token provisioning method agreed during onboarding and send tokens matching the selected USDT deployment. Sending only testnet ETH does not increase the USDT balance. EVM networks identify the destination by address, so tag_or_memo is normally null; other networks may require it.
Confirm the deposit and balance
After sending testnet USDT to the address, allow time for network confirmations and service processing.
bash
wallet_request GET "/deposits?account_id=$USER_ACCOUNT_ID&type=EXTERNAL&after_id=0&limit=100" | jq
wallet_request GET "/accounts/$USER_ACCOUNT_ID/balances/$ASSET_TYPE_ID" | jqStore the deposit next_cursor. Track every discovered non-final deposit with GET /deposits/{deposit_id}?type=EXTERNAL. Deposit APIs have no user_status; only status: COMPLETED confirms successful customer funding. Follow Status Codes for approval, verification, and refund states.
For USDT with six decimals, 1.00 USDT equals 1000000 raw units. Compare available_amount_raw with integer or decimal-safe types, never binary floating point.
Next: Move assets between accounts.