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

Supported deposit chains

ChainNetworkNotes
ethereumEthereum mainnet
arbitrumArbitrum One
baseBase
polygonPolygon PoS
optimismOP Mainnet
solanaSolana mainnet
All EVM chains share a single deposit address per wallet. Solana uses a separate address. Deposits from unlisted chains are not detected.

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.
  • depositAddresses.solana is a Solana devnet address. Fund with devnet USDC from the Circle faucet (select Solana devnet).

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)

List deposits

curl "$BASE_URL/v2/portfolio-wallets/$WALLET_ID/deposits?limit=25" \
  -H "Authorization: Bearer $BRAID_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/portfolio-wallets/$WALLET_ID/deposits/$DEPOSIT_ID" \
  -H "Authorization: Bearer $BRAID_API_TOKEN"

Look up by transaction hash

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

Deposit webhooks

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

Next steps