# x402 Base USDC Payment Checker

> x402 Base USDC Payment Checker is a paid API for AI agents from paycheck.hectichustle.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-16).

Verifies a Base mainnet USDC payment by transaction hash, checking confirmations, real USDC transfers, expected recipient/amount match, fake-USDC warnings, and payer funding source

## Facts

- Endpoint: POST https://paycheck.hectichustle.workers.dev/check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-base-usdc-payment-checker-c5d324cc
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_eRz02Q1xbGKBv3Mo5DLgL

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 x402-base-usdc-payment-checker-c5d324cc -d '<json body>'
```

Example prompt: Can you verify this Base mainnet USDC payment for me — tx hash 0xabc123...def456 — and confirm it actually sent 0.01 USDC to 0xRecipientAddress...5678, and flag any fake-USDC or lookalike address issues?

## When to prefer this

Choose this endpoint when you need to cryptographically verify a specific Base mainnet USDC payment before fulfilling an obligation, especially when fraud risk is a concern. It is uniquely suited for detecting fake USDC tokens, lookalike recipient addresses, and tracing payer funding origin — features not typically available in generic block explorers. Prefer it over manual block explorer checks when you need a structured, machine-readable result with plain-English summary and fraud signals in a single API call.

## Known failure modes

- Invalid or malformed txHash (not a valid 0x-prefixed 64-char hex) returns validation error
- Transaction not found on Base mainnet returns not-found error
- Transaction exists but involves no USDC transfer — mismatch flagged
- Fake or non-standard USDC contract detected — warning returned with details
- RPC rate limits or node connectivity issues may cause scan_incomplete funding classification
- expectedPayTo or expectedAmount mismatch returns failed verification with details

## How this service works

Payment verification for x402: verify a USDC transaction on Base — did this payment really settle, and did it pay the right address the right amount? Send a tx hash (or x402 authorization): confirmations, real-USDC transfer check, expectedPayTo/expectedAmount match, fake-USDC and lookalike-address warnings, who funded the payer (external, self_funded, unknown), plain-English summary and a receipt. Body {txHash|authorization, expectedPayTo?, expectedAmount?}. Free demo: POST /demo.

## Output

Returns a structured report including: number of confirmations, detected USDC transfer details, boolean match results for expectedPayTo and expectedAmount, fake-USDC and lookalike-address warnings, payer funding source classification (external | self_funded | unknown) with reason code (no_inbound_in_window | scan_incomplete), a plain-English summary of the payment status, and a receipt showing blocks scanned, RPC calls made, and cost.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "token": {
   "type": "string",
   "description": "Optional (aliases asset, currency): \"USDC\" or the Base USDC contract 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (apexfaucet-style). Any other token is a 400 unsupported_token, not charged. Responses always echo token \"USDC\"."
  },
  "txHash": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{64}$",
   "description": "Base mainnet transaction hash"
  },
  "minAmount": {
   "type": [
    "string",
    "number"
   ],
   "description": "Optional floor (aliases min_amount, min): payment must be at least this many USDC; unlike expectedAmount it is not exact"
  },
  "authorization": {
   "type": "object",
   "required": [
    "from",
    "nonce"
   ],
   "properties": {
    "from": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]{40}$"
    },
    "nonce": {
     "type": "string",
     "pattern": "^0x[0-9a-fA-F]{64}$"
    },
    "validAfter": {
     "type": [
      "string",
      "integer"
     ]
    },
    "validBefore": {
     "type": [
      "string",
      "integer"
     ],
     "description": "unix seconds"
    }
   },
   "description": "Optional EIP-3009 authorization (x402 exact payload) to check when there is no tx or the tx is not found"
  },
  "expectedPayTo": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Expected recipient (full-address, case-insensitive compare)"
  },
  "expectedPayer": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Optional expected payer (aliases from, payer): the USDC Transfer's from must equal it"
  },
  "selfAddresses": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "maxItems": 10,
   "description": "Optional: other addresses you control; funding from them counts as self_funded"
  },
  "expectedAmount": {
   "type": [
    "string",
    "number"
   ],
   "description": "Expected USDC amount, decimal (e.g. \"0.01\")"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "mode": "live_paid",
  "block": 52409752,
  "found": true,
  "match": {
   "ok": true,
   "payToMatch": true,
   "amountMatch": true
  },
  "funding": {
   "verdict": "external",
   "scannedBlocks": {
    "to": 52409752,
    "from": 52360000,
    "complete": false,
    "stoppedEarly": "enough recent funding found"
   }
  },
  "payment": {
   "to": "0x509e55c4f898b43c856fb0e51048b1b7bfbc9ede",
   "from": "0xfc1e390266f3b29179b5d63a7937a689d1e5279a",
   "amount": "1"
  },
  "receipt": {
   "reason": null,
   "verdict": "external",
   "rpcCalls": 9,
   "priceCharged": "0.01 USDC",
   "blocksScanned": {
    "to": 52409752,
    "from": 52360000,
    "complete": false
   }
  },
  "summary": "1 USDC from 0xfc1e… to 0x509e… at block 52409752. Matches expected payment. Payer was funded externally.",
  "warnings": [],
  "confirmed": true,
  "confirmations": 1200
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-base-usdc-payment-checker-c5d324cc/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from paycheck.hectichustle.workers.dev](https://www.zero.xyz/host/paycheck.hectichustle.workers.dev/llms.txt)
