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

# Send USDC

> Send USDC on-chain to an external wallet address.

<Warning>
  This endpoint is deprecated. Use [POST /v1/pay](/api-reference/agent/unified-pay) with an EVM address recipient instead.
</Warning>

Sends USDC on-chain from the project's Bridge.xyz wallet to an external wallet address on Base.

<Note>
  Requires a bearer token with the `pay` permission.
</Note>

## Request Body

<ParamField body="amount_usdc" type="number" required>
  Amount of USDC to send (e.g., `10.50` for 10.50 USDC). Max 100,000.
</ParamField>

<ParamField body="to_address" type="string" required>
  Destination EVM address. Must be `0x` followed by 40 hexadecimal characters. Cannot be the zero address.
</ParamField>

<ParamField body="chain" type="string" default="base">
  Blockchain network to send on. Default: `"base"`.
</ParamField>

<ParamField body="description" type="string">
  Payment description for record-keeping. Max 500 characters.
</ParamField>

<ParamField body="idempotency_key" type="string">
  Unique key to prevent duplicate transfers. Max 255 characters.
</ParamField>

## Response

<ResponseField name="id" type="string" required>
  Unique transaction identifier.
</ResponseField>

<ResponseField name="status" type="string" required>
  Transaction status: `pending`, `processing`, `completed`, or `failed`.
</ResponseField>

<ResponseField name="amount_usdc" type="number" required>
  Amount of USDC sent.
</ResponseField>

<ResponseField name="fee_usdc" type="number" required>
  Platform fee in USDC.
</ResponseField>

<ResponseField name="to_address" type="string" required>
  Destination wallet address.
</ResponseField>

<ResponseField name="chain" type="string" required>
  Blockchain network used.
</ResponseField>

<ResponseField name="tx_hash" type="string | null" required>
  On-chain transaction hash. `null` while the transaction is pending.
</ResponseField>

<ResponseField name="created_at" type="string" required>
  ISO 8601 timestamp of when the transfer was created.
</ResponseField>

## Examples

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.unwall.xyz/v1/usdc/transfer \
    -H "Authorization: Bearer aw_live_xxxxxxxxxxxx" \
    -H "Content-Type: application/json" \
    -d '{
      "amount_usdc": 25.00,
      "to_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
      "description": "Contractor payment",
      "idempotency_key": "pay-contractor-2026-03"
    }'
  ```

  ```python Python theme={null}
  import requests

  resp = requests.post(
      "https://api.unwall.xyz/v1/usdc/transfer",
      headers={"Authorization": "Bearer aw_live_xxxxxxxxxxxx"},
      json={
          "amount_usdc": 25.00,
          "to_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
          "description": "Contractor payment",
          "idempotency_key": "pay-contractor-2026-03",
      },
  )
  result = resp.json()
  print(f"Sent {result['amount_usdc']} USDC — tx: {result['tx_hash']}")
  ```

  ```typescript TypeScript theme={null}
  const resp = await fetch("https://api.unwall.xyz/v1/usdc/transfer", {
    method: "POST",
    headers: {
      Authorization: "Bearer aw_live_xxxxxxxxxxxx",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      amount_usdc: 25.0,
      to_address: "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
      description: "Contractor payment",
      idempotency_key: "pay-contractor-2026-03",
    }),
  });
  const result = await resp.json();
  console.log(`Sent ${result.amount_usdc} USDC — tx: ${result.tx_hash}`);
  ```
</CodeGroup>

```json Response (201 Created) theme={null}
{
  "id": "tx_usdc_abc123",
  "status": "processing",
  "amount_usdc": 25.0,
  "fee_usdc": 0.375,
  "to_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
  "chain": "base",
  "tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
  "created_at": "2026-03-11T14:30:00Z"
}
```
