Skip to content

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" | jq

Proceed 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" | jq

Store 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" | jq

Store 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.

OOLIN is a digital asset operations infrastructure product by BPMG.