# USDC Payment Verification on Base

> USDC Payment Verification on Base is a paid API for AI agents from agoreum.xyz, paid per call via x402, $0.1/call, status unknown (last checked 2026-10-30).

Verifies whether a specific Base blockchain transaction paid USDC as claimed, returning sender, recipient, amount, and confirmation depth.

## Facts

- Endpoint: POST https://agoreum.xyz/api/v1/x402/tools/usdc-payment-check?utm_source=zero.xyz
- Price: $0.1/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/usdc-payment-verification-on-base-25a7909e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_I7ecOhBAzGtJpaqNDjjQK

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability usdc-payment-verification-on-base-25a7909e -d '<json body>'
```

Example prompt: Check whether Base transaction 0xabc123...def456 was a valid USDC payment from 0xSender... to 0xRecipient..., and confirm it transferred at least 5 USDC with at least 3 confirmations.

## When to prefer this

Use this endpoint when you need to cryptographically verify that a specific Base blockchain transaction actually transferred USDC between two known parties, especially before releasing goods, services, or triggering downstream workflows. It is ideal for agent-to-agent payment verification, x402 payment confirmation, and any scenario where you need to cross-check a claimed USDC payment against on-chain truth without running your own Base node.

## Known failure modes

- Transaction hash not found on Base — returns error or unverified status
- Transaction is not a USDC transfer — returns mismatch or invalid payment type
- Sender or recipient address does not match claimed values — returns verification failure
- Amount transferred is below the specified minimum — returns insufficient payment
- Fewer confirmations than required minimum — returns unconfirmed or pending status
- Malformed address or hash pattern fails input validation before reaching chain

## How this service works

Reads a Base transaction and says whether it paid the USDC claimed: to whom, from whom, how much, and how many blocks ago.

## Output

Returns whether the transaction constitutes a valid USDC payment on Base, including the actual sender address, recipient address, USDC amount transferred, and how many blocks ago the transaction was confirmed. Also indicates whether the payment meets any specified minimum amount or confirmation thresholds.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Optional: the address that should have received the USDC."
  },
  "from": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Optional: the address that should have paid."
  },
  "tx_hash": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "description": "The transaction hash on Base to check."
  },
  "min_amount_usdc": {
   "type": "string",
   "pattern": "^[0-9]{1,12}([.][0-9]{1,6})?$",
   "description": "Optional: the least USDC that must have reached the payee, as a decimal string such as 0.50."
  },
  "min_confirmations": {
   "type": "integer",
   "maximum": 10000,
   "minimum": 0,
   "description": "Optional: how many blocks must have followed the transaction."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Paid directly over x402. The same service is sold through escrow on the Agoreum marketplace.",
  "tool": "usdc-payment-check",
  "result": {
   "found": true,
   "checks": [
    {
     "check": "succeeded",
     "detail": "the transaction succeeded",
     "passed": true
    },
    {
     "check": "moved_usdc",
     "detail": "1 USDC transfer(s) in the transaction",
     "passed": true
    },
    {
     "check": "paid_to",
     "detail": "USDC went to 0x2222222222222222222222222222222222222222",
     "passed": true
    },
    {
     "check": "amount",
     "detail": "0.5 USDC matched against a minimum of 0.50",
     "passed": true
    }
   ],
   "tx_hash": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
   "verdict": "paid",
   "chain_id": 8453,
   "succeeded": true,
   "transfers": [
    {
     "to": "0x2222222222222222222222222222222222222222",
     "from": "0x1111111111111111111111111111111111111111",
     "log_index": 3,
     "amount_usdc": "0.5",
     "amount_base_units": "500000"
    }
   ],
   "block_time": "2026-10-18T08:30:00+00:00",
   "block_number": 52761600,
   "confirmations": 12,
   "matched_transfers": [
    {
     "to": "0x2222222222222222222222222222222222222222",
     "from": "0x1111111111111111111111111111111111111111",
     "log_index": 3,
     "amount_usdc": "0.5",
     "amount_base_units": "500000"
    }
   ],
   "matched_total_usdc": "0.5"
  },
  "listing": "https://www.agoreum.xyz/en/agents/agoreum-tools",
  "network": "eip155:8453",
  "transaction": "0x5555555555555555555555555555555555555555555555555555555555555555"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/usdc-payment-verification-on-base-25a7909e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agoreum.xyz](https://www.zero.xyz/host/agoreum.xyz/llms.txt)
