Skip to main content
After creating a wallet, fund it by sending USDC to the wallet’s deposit addresses.

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

  • depositAddresses.ethereum is a Sepolia address. Fund with Sepolia USDC from the Circle faucet.

Deposit lifecycle

StatusTerminalMeaning
confirmedNoOnchain transfer confirmed; deployment into strategy positions starting
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.

Leg statuses

Deposits include legStatuses showing per-position deployment progress:
{
  "legStatuses": {
    "usdz": "completed",
    "rlp": "processing"
  }
}
Each key is a positionKey from the wallet’s strategy. A deposit is fully complete when all legs reach a terminal status.

Deposit response

{
  "id": "2a3ad0af-11b3-41d5-96c5-2b9d8799f1e2",
  "amount": "50000.00",
  "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 USD 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)

Deposit response

{
  "id": "2a3ad0af-11b3-41d5-96c5-2b9d8799f1e2",
  "amount": "50000.000000",
  "chain": "ethereum",
  "fromAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "txHash": "0xabc123def456...",
  "status": "completed",
  "createdAt": "2026-02-05T09:40:00.000Z",
  "completedAt": "2026-02-05T09:45:00.000Z"
}
FieldDescription
idUnique deposit identifier (UUID)
amountDeposit amount as a fixed-precision decimal string (6 decimal places)
chainChain the deposit was received on (e.g. arbitrum, ethereum, solana)
fromAddressSender address of the deposit transaction (may be null if not yet resolved)
txHashOnchain transaction hash (may be null for simulated deposits or before confirmation)
statusCurrent deposit status: detected, processing, or completed
createdAtISO-8601 timestamp when the deposit was first observed
completedAtISO-8601 timestamp when the deposit was fully processed (null while 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.00",
      "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