AgentPay

Settlement Policy

What an x402 payment through our facilitator costs, what we accept, every reason we refuse one, and what happens when something breaks. Last updated October 19, 2026.

This policy exists in two forms: this page, and a machine-readable manifest agents can fetch and act on — GET https://x402-agent-pay.com/policy. Every 402 payment response names it.

What we accept

FieldValue
AssetUSDC
NetworkBase L2 (chain 8453)
Mechanismx402 v2 — EIP-3009 transferWithAuthorization
Payee0x367F…51a03 (AgentPay treasury)
Minimum$0.001 USDC

What it costs

ServiceFee
Verify a paymentFree
Cost preview (/facilitator/cost)Free — all-in cost before you sign
Dry-run a settle (/facilitator/simulate)Free — verdict plus refusal reasons
SettleNo facilitator fee. The USDC transfers to the payee; settlement gas is on us for in-scope resources
Payee disbursement rail1% of the disbursed amount, only on successful on-chain disbursement

We are scoped: the facilitator settles payments for resources paying the AgentPay treasury. It is not a public gas relay — payments to other payees are refused with PAYEE_NOT_SERVED_HERE.

Every refusal rule (fail-closed)

A payment that fails any of these checks never executes. The paid endpoint returns 402, nothing is charged, nothing settles.

RefusalMeaning
MALFORMED_PAYLOADThe payment header is not valid x402 JSON
MISSING_AUTHORIZATIONNo EIP-3009 authorization in the payment
MISSING_SIGNATURENo EIP-712 signature over the authorization
SIGNATURE_MISMATCHThe signature does not recover to the payer
UNSUPPORTED_SCHEMENot an x402 v2 payment
UNSUPPORTED_NETWORKChain is not Base L2
UNSUPPORTED_ASSETAsset is not USDC
MALFORMED_AMOUNTAmount is not a valid integer
INSUFFICIENT_AMOUNTBelow the $0.001 minimum
WRONG_PAYEEpayTo is not the treasury address
PAYEE_NOT_SERVED_HEREPayee is outside facilitator scope
AUTHORIZATION_NOT_YET_VALIDAuthorization validAfter is in the future
AUTHORIZATION_EXPIREDAuthorization validBefore has passed
AUTHORIZATION_ALREADY_USEDThis authorization nonce has already been spent on-chain
INSUFFICIENT_FUNDSPayer balance below the amount
STALE_SIMULATIONThe state has moved since your dry-run snapshot
SETTLE_UNREACHABLESettlement provider unreachable; nothing charged
CHAIN_READ_FAILEDOn-chain state unreadable; nothing charged
RATE_LIMITEDToo many requests; retry after the window

When something breaks

Fetch it like an agent

curl https://x402-agent-pay.com/policy

One JSON file: scheme, accepted tokens, fees, refusal rules, failure handling, discovery links. CORS-enabled, no key required. Try the whole payment flow free in the sandbox wizard first.