# Kertivo Check: Payment Verify

> Kertivo Check: Payment Verify is a paid API for AI agents from kertivo.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-30).

Verifies a USDC payment on Base mainnet — checks confirmation, real USDC transfer, correct recipient and amount, and flags fake tokens or lookalike addresses

## Facts

- Endpoint: POST https://kertivo.com/check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/kertivo-check-payment-verify-94d85b2b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ajJR2JIxIrp_T3hy53Y0R

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 kertivo-check-payment-verify-94d85b2b -d '<json body>'
```

Example prompt: Can you verify that transaction 0xabc123...def456 on Base actually paid 0.01 USDC to my wallet 0x1234...abcd, and flag if it used a fake USDC token or a lookalike address?

## When to prefer this

Use this endpoint when you need to validate an x402 USDC payment on Base before releasing a resource, granting API access, or fulfilling an order — especially when you need fraud signals like fake-USDC detection, lookalike-address warnings, and payer funding source classification. Prefer it over raw RPC calls when you want a human-readable summary and structured receipt without writing custom blockchain parsing logic.

## Known failure modes

- Invalid or malformed tx hash returns 400 bad_request
- Unsupported token (non-USDC) returns 400 unsupported_token and no charge
- Transaction not found on Base mainnet returns a not-found or pending status
- If authorization provided but no matching tx found, authorization fields are checked instead
- Mismatched expectedPayTo or expectedAmount returned as failed validation with details
- Network timeout or RPC unavailability may cause transient errors

## 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 receipt with: confirmation count, whether the transfer used real USDC on Base, whether expectedPayTo and expectedAmount match, warnings for fake USDC tokens or lookalike addresses, payer funding source classification (external, self_funded, or unknown), and a plain-English summary of the payment status.

## 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\")"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/kertivo-check-payment-verify-94d85b2b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from kertivo.com](https://www.zero.xyz/host/kertivo.com/llms.txt)
