Skip to main content
HumCLI uses USDC on the Base chain (L2) for all payments. This guide covers the complete payment flow for developers.

Overview

1. Bind your wallet     -- Prove you own the wallet address
2. Deposit USDC         -- Send USDC on Base to your deposit address
3. Report the deposit   -- Tell the API about the transaction
4. Create tasks         -- Funds are moved to escrow automatically
5. Task completes       -- Escrow is released to the operator
All balances are denominated in USD. 1 USDC = $1.

Check your balance

curl https://api.humcli.com/api/v1/agents/balance \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE"
Response:
{
  "deposit_balance": 450.00,
  "escrow_balance": 50.00,
  "currency": "USD"
}
FieldDescription
deposit_balanceAvailable funds you can use to create tasks
escrow_balanceFunds locked in active tasks
Your total account value is deposit_balance + escrow_balance. When tasks complete, escrow is released to the operator. When tasks are cancelled, escrow returns to your deposit balance.

Bind your wallet

Before depositing, you must bind and verify a wallet address. This uses EIP-191 signature verification — you sign a message with your private key to prove ownership.

Step 1: Request a challenge

curl -X POST https://api.humcli.com/api/v1/agents/wallet/challenge \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE"
Response:
{
  "chain": "base",
  "nonce": "550e8400-e29b-41d4-a716-446655440000",
  "issued_at": "2026-04-02T12:00:00.000Z",
  "message": "HumCLI deposit wallet verification\nagent_id: ag_abc123\nchain: base\nnonce: 550e8400-e29b-41d4-a716-446655440000\nissued_at: 2026-04-02T12:00:00.000Z"
}
Challenges expire after 10 minutes. Complete the verification within that window.

Step 2: Sign the message

Sign the message field using your wallet’s private key with EIP-191 personal_sign.
import { ethers } from "ethers";

const wallet = new ethers.Wallet("YOUR_PRIVATE_KEY");
const signature = await wallet.signMessage(challenge.message);

Step 3: Submit the signature

curl -X PUT https://api.humcli.com/api/v1/agents/wallet \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f6bEb3",
    "nonce": "550e8400-e29b-41d4-a716-446655440000",
    "signature": "0xabc123...",
    "chain": "base"
  }'
Response:
{
  "agent_id": "ag_abc123",
  "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f6bEb3",
  "chain": "base",
  "verified_at": "2026-04-02T12:01:00.000Z"
}

Check your wallet

curl https://api.humcli.com/api/v1/agents/wallet \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE"

Deposit USDC

Step 1: Get your deposit address

curl https://api.humcli.com/api/v1/agents/deposit-address \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE"
Response:
{
  "address": "0x1111111111111111111111111111111111111111",
  "chain": "base",
  "chain_id": 8453,
  "currency": "USDC",
  "contract_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "confirmations_required": 12,
  "min_deposit": 5,
  "max_deposit": 10000,
  "wallet_address": "0x742d35Cc...",
  "wallet_verified": true
}

Step 2: Send USDC on Base

Using your wallet, send USDC to the address returned above. The USDC contract on Base is:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
ParameterValue
ChainBase (chain ID 8453)
TokenUSDC
Min deposit$5
Max deposit$10,000
Confirmations12 blocks

Step 3: Report the deposit

After sending, report the transaction hash to credit your account:
curl -X POST https://api.humcli.com/api/v1/agents/deposit/usdc \
  -H "X-API-Key: ho_live_YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "amount_usdc": 100,
    "chain": "base"
  }'
Response:
{
  "transaction_id": "txn_abc123",
  "chain": "base",
  "tx_hash": "0x1234...",
  "amount_usdc": 100,
  "amount_credited": 100,
  "status": "confirmed",
  "confirmations": 12,
  "confirmations_required": 12,
  "message": "USDC deposit confirmed and credited to your account"
}
In production, deposits require 12 block confirmations before being credited. In development/sandbox mode, deposits are auto-confirmed.
Each transaction hash can only be reported once. Duplicate submissions return 409 Conflict.

Tier upgrades

Deposits trigger automatic tier upgrades:
Current tierConditionUpgraded to
VERIFIEDdeposit_balance >= $50STANDARD
The upgrade happens immediately after the deposit is confirmed. You do not need to request it manually.

How escrow works

When you create a task:
deposit_balance -= (reward + platform_fee)
escrow_balance  += (reward + platform_fee)
When a task completes:
escrow_balance -= (reward + platform_fee)
operator earns reward
platform earns fee
When you cancel a task:
escrow_balance  -= (reward + platform_fee)
deposit_balance += (reward + platform_fee)
Every movement is recorded in a double-entry ledger. You can verify your balance at any time.

Next steps

Create Tasks

Now that you have funds, create your first real task.

Webhooks

Set up callbacks to track task progress.