Skip to main content
After creating a wallet, fund it by sending USDC to the wallet’s deposit addresses.
Ground currently supports deposits in usdc only. usdt and dai are not supported deposit tokens.

Fund the wallet

The wallet creation response includes depositAddresses — one address per supported chain. Send USDC to the address on your preferred chain.
to:    0x21246509968c4d24611f414560971AEc2e3A079B
chain: ethereum
token: USDC

Minimum amounts

There is no minimum deposit amount. However, small deposits may remain as undeployed cash if deploying them into yield positions is not economically efficient (considering gas costs, minimum trade sizing, and protocol constraints). This threshold varies by market conditions but is typically around $50–100 of USDC.

Sandbox

  • Use the explicit sandbox key depositAddresses.ethereum_sepolia. Fund it with Sepolia USDC from the Circle faucet.

Deposit lifecycle

StatusTerminalMeaning
processingNoDeployment into yield positions in progress
completedYesFully deployed; wallet balances updated
failedYesDeposit processing failed
As deposits settle, the wallet’s balance.totalUsd and positions update. Deployment follows the wallet’s current strategy using the yield sources returned by the live catalog for that environment.

Deposit response

{
  "id": "2a3ad0af-11b3-41d5-96c5-2b9d8799f1e2",
  "amount": "50000.000000",
  "chain": "ethereum",
  "token": "usdc",
  "fromAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "txHash": "0xabc123def456789012345678901234567890abcdef1234567890abcdef123456",
  "status": "completed",
  "createdAt": "2026-02-05T09:30:00.000Z",
  "completedAt": "2026-02-05T09:45:00.000Z"
}
FieldDescription
idUnique deposit identifier
amountDeposit amount as a fixed-precision decimal string
chainSource chain
tokenDeposited token (usdc)
fromAddressSender address (when available)
txHashOnchain transaction hash
statusCurrent status (see lifecycle table above)
createdAtWhen the deposit was first detected
completedAtWhen fully deployed (null if in progress)

List deposits

curl "$BASE_URL/v2/wallets/$WALLET_ID/deposits?limit=25" \
  -H "Authorization: Bearer $GROUND_API_TOKEN"
{
  "data": [
    {
      "id": "2a3ad0af-11b3-41d5-96c5-2b9d8799f1e2",
      "amount": "50000.000000",
      "chain": "ethereum",
      "token": "usdc",
      "fromAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
      "txHash": "0xabc123def456789012345678901234567890abcdef1234567890abcdef123456",
      "status": "completed",
      "createdAt": "2026-02-05T09:30:00.000Z",
      "completedAt": "2026-02-05T09:45:00.000Z"
    }
  ],
  "nextCursor": null
}
Supports cursor-based pagination. See API Conventions.

Fetch a deposit by ID

curl "$BASE_URL/v2/wallets/$WALLET_ID/deposits/$DEPOSIT_ID" \
  -H "Authorization: Bearer $GROUND_API_TOKEN"

Look up by transaction hash

curl "$BASE_URL/v2/wallets/$WALLET_ID/deposits/lookup?txHash=$TX_HASH" \
  -H "Authorization: Bearer $GROUND_API_TOKEN"
Optionally scope to a specific chain:
curl "$BASE_URL/v2/wallets/$WALLET_ID/deposits/lookup?txHash=$TX_HASH&chain=arbitrum" \
  -H "Authorization: Bearer $GROUND_API_TOKEN"

Deposit webhooks

Subscribe to portfolio_wallet.deposit.status_changed for real-time deposit tracking. See Webhooks.

Next steps