{
  "policy": "AgentPay x402 Facilitator — Settlement Policy Manifest",
  "version": "1.0.0",
  "generated_at": "2026-10-19",
  "humanReadable": "https://x402-agent-pay.com/settlement-policy",
  "facilitator": "https://x402-agent-pay.com/facilitator",
  "scheme": {
    "name": "x402",
    "version": 2,
    "mechanism": "EIP-3009 transferWithAuthorization (USDC)",
    "flow": "buyer attaches signed payment to HTTP request -> seller calls /facilitator/verify -> on success calls /facilitator/settle -> payment lands on-chain on Base"
  },
  "accepted": {
    "asset": "USDC",
    "network": "base-mainnet",
    "chainId": 8453,
    "tokenContract": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
    "payee": "0x367F1b3D8Ca90D1e087481a9A40d585Bf3451a03",
    "minAmountUsdc": 0.001
  },
  "fees": [
    {"service": "verify", "fee": "free", "note": "signature recovery, payee/amount/expiry checks, on-chain authorization state and balance"},
    {"service": "cost preview (/facilitator/cost)", "fee": "free", "note": "all-in cost of a payment including settlement gas, and the break-even below which self-broadcasting costs more than the good"},
    {"service": "simulate (dry-run settle)", "fee": "free", "note": "verdict, exact cost, refusal reasons, versioned state snapshot"},
    {"service": "settle", "fee": "no facilitator fee", "note": "the USDC amount transfers to the payee; settlement gas is paid by the facilitator for in-scope resources"},
    {"service": "payee disbursement rail", "fee": "1% of disbursed amount", "note": "charged only on successful on-chain disbursement; a failed disbursement is retried at no extra fee"}
  ],
  "scope": "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.",
  "refusal_rules": {
    "failClosed": true,
    "meaning": "A payment that fails any verification rule never executes. The paid endpoint returns 402 and nothing is charged or settled.",
    "verifyRefusals": {
      "MALFORMED_PAYLOAD": "the payment header is not valid x402 JSON",
      "MISSING_AUTHORIZATION": "no EIP-3009 authorization in the payment",
      "MISSING_SIGNATURE": "no EIP-712 signature over the authorization",
      "SIGNATURE_MISMATCH": "signature does not recover to the payer",
      "UNSUPPORTED_SCHEME": "payment is not x402 v2",
      "UNSUPPORTED_NETWORK": "chain is not Base L2",
      "UNSUPPORTED_ASSET": "asset is not USDC",
      "MALFORMED_AMOUNT": "amount is not a valid integer",
      "INSUFFICIENT_AMOUNT": "amount below the minimum (0.001 USDC)",
      "WRONG_PAYEE": "payTo is not the treasury address",
      "PAYEE_NOT_SERVED_HERE": "payee is outside the facilitator scope",
      "AUTHORIZATION_NOT_YET_VALID": "authorization validAfter is in the future",
      "AUTHORIZATION_EXPIRED": "authorization validBefore has passed",
      "AUTHORIZATION_ALREADY_USED": "this authorization nonce has already been spent on-chain",
      "INSUFFICIENT_FUNDS": "payer balance below the amount",
      "INVALID_PAYMENT": "payment failed verification (wrapper)"
    },
    "settleRefusals": {
      "STALE_SIMULATION": "the simulated state has moved since the dry-run snapshot",
      "SETTLE_REJECTED": "settlement rejected on-chain or by the settlement provider",
      "SETTLE_UNREACHABLE": "settlement provider unreachable; nothing was charged",
      "CHAIN_READ_FAILED": "on-chain state could not be read; nothing was charged",
      "RATE_LIMITED": "too many requests; retry after the window"
    }
  },
  "failure_handling": {
    "verifyBeforeExecute": "every gated endpoint verifies payment through the facilitator before doing paid work",
    "idempotency": "a nonce already spent on-chain for the same resource is treated as already-settled, not double-charged",
    "freePreviews": "use /facilitator/cost and /facilitator/simulate before signing anything; both are free and send no payment",
    "whenSomethingBreaks": "file a report at https://x402-agent-pay.com/x402-feedback/ (free) with the transaction hash; failures verified against our settlement records are repaid in USDC on Base per https://x402-agent-pay.com/refund-policy",
    "liveness": "https://x402-agent-pay.com/facilitator/recent shows the last on-chain settlements; https://x402-agent-pay.com/facilitator/live shows them in real time"
  },
  "discovery": {
    "supported": "https://x402-agent-pay.com/facilitator/supported",
    "openapi": "https://agentpaystore.com/openapi.json",
    "mcp": "https://agentworld.me/mcp",
    "sandboxWizard": "https://x402-agent-pay.com/sandbox/"
  },
  "contact": "support@x402-agent-pay.com",
  "publisher": "AgentPay, LLC"
}
