How to verify a payment and a file
A plain-transfer payment
- Open the transaction on Basescan (Base mainnet, chain id 8453).
- Status must be Success.
- Under token transfers there must be a USDC transfer from contract
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913(not bridged USDbC) to0x491Fcf30a5aa0483B3cd8C0041d21801F195B3AF. - The amount must equal your order's amount exactly, to six decimals.
- The block time must fall between the order's creation and its expiry (24 hours).
The Worker runs the same checks through public Base RPC nodes (eth_chainId, eth_getTransactionReceipt, eth_getBlockByNumber), waits for 10 confirmations, and refuses any transaction hash it has accepted before. The order page and /api/orders/<id> show which check failed.
An x402 payment
The paid response carries a PAYMENT-RESPONSE header (base64 JSON) with the settlement transaction hash. The facilitator (facilitator.payai.network or facilitator.xpay.sh) submits your signed EIP-3009 authorization; the USDC moves straight from your address to the seller. Check it on Basescan as above. The Worker also re-checks every settlement on chain before counting it.
A downloaded file
eb29ec3c98aa120d594c02e2831e00b46f33c81cb6432ce6ea1ef3c0e8008583 School-Signals-England-Snapshot-2026-10-14-USDC.zip
865303f832efc795a747a400373bd927c5558af06f2dfbd40c3fa869d9009fc5 DfE-AI-Safety-Evidence-Toolkit-USDC.zip
Run sha256sum <file> (Linux), shasum -a 256 <file> (macOS) or Get-FileHash <file> (PowerShell). Inside each zip, MANIFEST.sha256 lists every file's hash.
The seller's revenue counter
/api/ledger counts only confirmed USDC receipts from addresses other than the seller's wallet. Self-payments, tests and unconfirmed settlements are excluded. It publishes counts and totals, not payer addresses.