Verify x402 settlement

$0.004 per call · USDC via x402 · GET /api/x402-verify · Cached 1d

Confirm a USDC payment actually settled: given a tx hash (and network), returns whether it succeeded and the USDC transfers it contains (from, to, amount). Send GET /api/x402-verify with the required field hash and pay $0.004 per call over x402 or MPP (there is no free tier). It returns a JSON object with hash, network, settled, status, transfers and 1 more.

Optionally check it paid a specific address at least a minimum amount. Read-only proof of payment. ?hash=0x…&network=base&to=0x…&min=0.001

Category: Payments & x402 · Tags: x402 verify settlement receipt usdc proof multichain

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
hashstringyes0x transaction hash Also accepted as tx, txid, txHash, tx_hash, transaction, signature.
networkstringnochain: base | polygon | arbitrum | optimism | ethereum | monad | celo | avalanche | sei | robinhood (default base)
tostringnooptional: expected recipient address to check
minnumbernooptional: minimum USDC expected to that recipient

Example request

curl -i "https://agent402.tools/api/x402-verify?hash=0x09f85fcf1844d85277b8cce528efc8d25c6df632b1fed1c8337f078901a69562&network=base&min=0.001"

Without payment this returns HTTP 402 Payment Required with the exact price for x402-verify; any x402 v2 or MPP client pays it and retries.

Example response

{
  "hash": "0x09f85fcf1844d85277b8cce528efc8d25c6df632b1fed1c8337f078901a69562",
  "network": "base",
  "settled": true,
  "status": "success",
  "transfers": [
    {
      "from": "0x…",
      "to": "0x…",
      "usdc": "0.01"
    }
  ],
  "matched": true
}
FieldTypeAlways presentIn the example
hashstringno0x09f85fcf1844d85277b8cce528efc8d25c6df632b1fed1c8337f078901a69562
networkstringnobase
settledbooleannotrue
statusstringnosuccess
transfersarray of objectsno1 item in the example
matchedbooleannotrue

From an MCP client

catalog.call {
  "slug": "x402-verify",
  "params": {
    "hash": "0x09f85fcf1844d85277b8cce528efc8d25c6df632b1fed1c8337f078901a69562",
    "network": "base",
    "min": 0.001
  }
}

The hosted connector at https://agent402.tools/mcp needs a payment for x402-verify; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/x402-verify?hash=0x09f85fcf1844d85277b8cce528efc8d25c6df632b1fed1c8337f078901a69562&network=base&min=0.001");

Related tools

Build USDC transfer authorization

$0.003 · POST /api/transfer-authorization

Build the EIP-3009 transferWithAuthorization typed data for a gasless USDC transfer on Base/Polygon/Arbitrum/Optimism/Et…

Rate a call you paid for

$0.001 · POST /api/feedback

Tell this server whether a call you paid for delivered what it promised. Bound to the receipt: give it the settlement tr…

Transaction status

$0.001 · GET /api/tx-status

Check the confirmation status of a transaction by hash on Base/Polygon/Arbitrum/Optimism/Ethereum/Monad/Celo/Avalanche/S…

USDC balance

$0.003 · GET /api/usdc-balance

Read the USDC balance of any address on Base, Polygon, Arbitrum, Optimism, Ethereum, Monad, Celo, Avalanche, or Sei. Rea…

x402 seller dossier

$0.05 · POST /api/seller-dossier

Everything Agent402 knows about one x402 seller origin, in one read: identity and crawl history, the catalog with the pr…

x402 seller payability check

$0.10 · POST /api/seller-payability

Buy one call from an x402 seller endpoint right now and report exactly what happened: the unpaid call's status, the 402 …