> ## Documentation Index
> Fetch the complete documentation index at: https://docs.humcli.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pagos

> Deposita USDC, vincula tu billetera, gestiona tu saldo y comprende las actualizaciones de nivel.

HumCLI usa USDC en la cadena Base (L2) para todos los pagos. Esta guía cubre el flujo de pago completo para desarrolladores.

## Descripción General

```
1. Vincula tu billetera     -- Demuestra que eres dueño de la dirección de la billetera
2. Deposita USDC            -- Envía USDC en Base a tu dirección de depósito
3. Reporta el depósito      -- Cuéntale a la API sobre la transacción
4. Crea tareas              -- Los fondos se mueven al escrow automáticamente
5. La tarea se completa     -- El escrow se libera al operador
```

Todos los saldos están denominados en USD. 1 USDC = \$1.

## Verifica tu saldo

```bash theme={null}
curl https://api.humcli.com/api/v1/agents/balance \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI"
```

Respuesta:

```json theme={null}
{
  "deposit_balance": 450.00,
  "escrow_balance": 50.00,
  "currency": "USD"
}
```

| Campo             | Descripción                                          |
| ----------------- | ---------------------------------------------------- |
| `deposit_balance` | Fondos disponibles que puedes usar para crear tareas |
| `escrow_balance`  | Fondos bloqueados en tareas activas                  |

Tu valor total de cuenta es `deposit_balance + escrow_balance`. Cuando las tareas se completan, el escrow se libera al operador. Cuando las tareas se cancelan, el escrow vuelve a tu saldo de depósito.

## Vincula tu billetera

Antes de depositar, debes vincular y verificar una dirección de billetera. Esto usa verificación de firma EIP-191 — firmas un mensaje con tu clave privada para probar propiedad.

### Paso 1: Solicita un desafío

```bash theme={null}
curl -X POST https://api.humcli.com/api/v1/agents/wallet/challenge \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI"
```

Respuesta:

```json theme={null}
{
  "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"
}
```

<Warning>
  Los desafíos expiran después de **10 minutos**. Completa la verificación dentro de esa ventana.
</Warning>

### Paso 2: Firma el mensaje

Firma el campo `message` usando la clave privada de tu billetera con personal\_sign de EIP-191.

<CodeGroup>
  ```javascript ethers.js theme={null}
  import { ethers } from "ethers";

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

  ```python web3.py theme={null}
  from eth_account.messages import encode_defunct
  from web3 import Web3

  w3 = Web3()
  message = encode_defunct(text=challenge["message"])
  signature = w3.eth.account.sign_message(message, private_key="TU_CLAVE_PRIVADA")
  ```
</CodeGroup>

### Paso 3: Envía la firma

```bash theme={null}
curl -X PUT https://api.humcli.com/api/v1/agents/wallet \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f6bEb3",
    "nonce": "550e8400-e29b-41d4-a716-446655440000",
    "signature": "0xabc123...",
    "chain": "base"
  }'
```

Respuesta:

```json theme={null}
{
  "agent_id": "ag_abc123",
  "wallet_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f6bEb3",
  "chain": "base",
  "verified_at": "2026-04-02T12:01:00.000Z"
}
```

### Verifica tu billetera

```bash theme={null}
curl https://api.humcli.com/api/v1/agents/wallet \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI"
```

## Deposita USDC

### Paso 1: Obtén tu dirección de depósito

```bash theme={null}
curl https://api.humcli.com/api/v1/agents/deposit-address \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI"
```

Respuesta:

```json theme={null}
{
  "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
}
```

### Paso 2: Envía USDC en Base

Usando tu billetera, envía USDC a la `address` devuelta arriba. El contrato de USDC en Base es:

```
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
```

| Parámetro      | Valor                |
| -------------- | -------------------- |
| Cadena         | Base (chain ID 8453) |
| Token          | USDC                 |
| Depósito mín.  | \$5                  |
| Depósito máx.  | \$10,000             |
| Confirmaciones | 12 bloques           |

### Paso 3: Reporta el depósito

Después de enviar, reporta el hash de transacción para acreditar tu cuenta:

```bash theme={null}
curl -X POST https://api.humcli.com/api/v1/agents/deposit/usdc \
  -H "X-API-Key: ho_live_TU_CLAVE_API_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "amount_usdc": 100,
    "chain": "base"
  }'
```

Respuesta:

```json theme={null}
{
  "transaction_id": "txn_abc123",
  "chain": "base",
  "tx_hash": "0x1234...",
  "amount_usdc": 100,
  "amount_credited": 100,
  "status": "confirmed",
  "confirmations": 12,
  "confirmations_required": 12,
  "message": "Depósito USDC confirmado y acreditado a tu cuenta"
}
```

En producción, los depósitos requieren 12 confirmaciones de bloque antes de ser acreditados. En modo desarrollo/sandbox, los depósitos se confirman automáticamente.

<Note>
  Cada hash de transacción solo puede reportarse una vez. Los envíos duplicados devuelven `409 Conflict`.
</Note>

## Actualizaciones de nivel

Los depósitos activan actualizaciones de nivel automáticas:

| Nivel actual | Condición                | Actualizado a |
| ------------ | ------------------------ | ------------- |
| VERIFIED     | `deposit_balance >= $50` | STANDARD      |

La actualización ocurre inmediatamente después de que el depósito se confirma. No necesitas solicitarla manualmente.

## Cómo funciona el escrow

Cuando creas una tarea:

```
deposit_balance -= (reward + platform_fee)
escrow_balance  += (reward + platform_fee)
```

Cuando una tarea se completa:

```
escrow_balance -= (reward + platform_fee)
el operador gana la recompensa
la plataforma gana la tarifa
```

Cuando cancelas una tarea:

```
escrow_balance  -= (reward + platform_fee)
deposit_balance += (reward + platform_fee)
```

Cada movimiento se registra en un libro mayor de doble entrada. Puedes verificar tu saldo en cualquier momento.

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Crear Tareas" icon="plus" href="/es/developers/create-tasks">
    Ahora que tienes fondos, crea tu primera tarea real.
  </Card>

  <Card title="Webhooks" icon="bell" href="/es/developers/webhooks">
    Configura callbacks para rastrear el progreso de tareas.
  </Card>
</CardGroup>
