x402 Facilitator — Live on 5 Chains

The Multi-Chain x402 Facilitator for AI Commerce

AgentPay verifies and settles x402 payments across Base, Ethereum, Optimism, Arbitrum, and Polygon — 5 EVM chains, EIP-712/EIP-3009. Built for agent-to-agent commerce with escrow-grade reliability.

Integrate Now View Live Info →
5
EVM Chains
0%
Verify Fee
0.5%
Settle Fee
99.5%
Uptime SLA
<2s
Avg Settlement
Supported Networks

5 Chains. One Facilitator.

All chains use native USDC (Circle-issued) — no bridged or wrapped variants. All chains use EIP-3009 settlement.

🔵
Base
Primary
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
eip155:8453
Ethereum
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
eip155:1
🔴
Optimism
0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85
eip155:10
🔷
Arbitrum One
0xaf88d065e77c8cC2239327C5EDb3A432268e5831
eip155:42161
🟣
Polygon
0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359
eip155:137
REST API

Simple. Standard. Open.

All endpoints at https://x402-agent-pay.com  ·  EIP-712 Grant endpoints ↓

GET
/x402/health
Liveness check. Returns status, version, timestamp.
GET
/x402/info
Full facilitator metadata — chains, fees, settlement wallet, SLA.
GET
/x402/supported-networks
List all supported networks with CAIP-2 identifiers and USDC addresses.
POST
/x402/verify
Validate a PaymentPayload or Agent Grant — EIP-712 (EVM). Checks signature, timing, nonce, amount. No on-chain call. Free.
POST
/x402/settle
Settle on-chain — EIP-3009 (EVM). Routes by network. 0.5% fee on successful settlement.
Quickstart

Integrate in 3 Lines

Point your x402 middleware at AgentPay and start routing payments across 5 EVM chains.

# Python / x402 SDK — point to AgentPay facilitator
from x402.flask import payment_middleware

app.use(payment_middleware(
  facilitator="https://x402-agent-pay.com",
  routes={
    "GET /my-endpoint": {
      "accepts": [{
        "network":           "base",      # or: ethereum, optimism, arbitrum, polygon
        "asset":            "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "maxAmountRequired": "1000",      # 0.001 USDC (6 decimals)
        "payTo":            "0xYourWallet",
        "maxTimeoutSeconds": 300,
      }],
      "description": "My paid endpoint",
    }
  }
))
# Direct verify call
curl -X POST https://x402-agent-pay.com/x402/verify \
  -H "Content-Type: application/json" \
  -d '{
    "paymentPayload": {
      "network": "base",
      "scheme": "exact",
      "payload": { "from": "0x...", "to": "0x...", "value": "1000",
                   "validAfter": "0", "validBefore": "9999999999",
                   "nonce": "0x...", "signature": "0x..." }
    },
    "paymentRequirements": { "maxAmountRequired": "1000", "network": "base" }
  }'

# Returns:
{ "isValid": true, "payer": "0x...", "network": "eip155:8453", "amount": 1000 }
Pricing

Simple Transparent Fees

No subscriptions. No API keys. Pay only on successful settlement.

0%
Verification — always free
0.5%
Settlement — per transaction
0%
Gas — absorbed by facilitator
Why AgentPay

Built for Agent Commerce

Not just a payment relay — a full escrow and commerce infrastructure layer.

🔗
Truly Multi-Chain
5 EVM chains live: Base, Ethereum, Optimism, Arbitrum, Polygon — all using EIP-3009 settlement. network routes everything automatically.
🤝
Escrow Native
AgentPay invented escrow for agent commerce. Payment disputes, refunds, and holds are built in — not bolted on.
🏙️
93 Live Agents
AgentWorld runs 93 NPC agents processing real USDC daily. Our own facilitator handles all of it — production-hardened from day one.
📜
Spec Authors
We wrote the x402 EIP-712 conformance suite and grant lifecycle spec. We know the protocol from the inside.
Free Verification
Verify as many PaymentPayloads as you want at zero cost. Only successful on-chain settlements carry a fee.
🔐
EIP-3009 Native
Full transferWithAuthorization support. Clients sign once, we settle atomically. No gas estimation surprises.
EIP-712 Agent Grants

Native Agent Grant Verification

The facilitator now speaks the full shawnhvac/x402 spec — verifying EIP-712 signed grants with no on-chain calls needed.

🔏

POST /x402/verify-grant

Verify an EIP-712 Agent Grant. Checks: signature recovery, timing (30s grace), totalBudget > 0, agent address match, and 30% revocation window. Accepts JSON body or X-402-Payment header format.

POST /x402/verify-grant
Content-Type: application/json

{
  "grant": { "grantId": "1", "principal": "0x...",
    "agent": "0x...", "issuedAt": "...",
    "expiration": "...", "totalBudget": "1000000",
    "perRequestCap": "5000", "scopes": [],
    "salt": "0x..." },
  "signature": "0x...",
  "expectedAgent": "0x..."
}

GET /x402/conformance

Run all 6 test vectors from the shawnhvac/x402 spec live against the facilitator. Returns pass/fail per vector. Use this to confirm your agent implementation is spec-compliant before mainnet.

GET /x402/conformance

→ { "total": 6, "passed": 6,
    "results": [
      { "id": 1, "name": "valid_grant",
        "expected": "pass", "got": "pass" },
      { "id": 2, "name": "expired_grant",
        "expected": "fail", "got": "fail" },
      ...
    ] }
📋

EIP-712 Domain

The exact EIP-712 domain used by the facilitator. Your signing code must match this exactly for verification to pass.

const DOMAIN = {
  name: "x402-AgentGrant",
  version: "1",
  chainId: 8453, // Base L2
  verifyingContract:
    "0x0000000000000000000000
     0000000000000000"
};
📐

Grant Struct (TypeScript)

Full typed struct definition. Sign with wallet.signTypedData(DOMAIN, TYPES, grant) in ethers v6.

const grant = {
  grantId: 1n,
  principal: "0x...", // signer
  agent: "0x...", // authorized
  issuedAt: BigInt(now),
  expiration: BigInt(now+900), // 15min
  totalBudget: 10_000_000n, // $10
  perRequestCap: 1_000_000n, // $1
  scopes: [keccak256("tool")],
  salt: ethers.id("unique")
};

Validation Rules (all must pass)

Check Rule Error
expirationMust be > now − 30sGrant expired
issuedAtMust be < now + 30sGrant not yet valid
totalBudgetMust be > 0totalBudget must be > 0
agentMust match expectedAgent (if provided)Grant agent mismatch
signatureEIP-712 recovery must match principalSignature does not match principal
revocationChecked only in final 30% of grant lifetimeshouldCheckRevocation: true
📖
Full Grant Spec Complete EIP-712 signing guide, test vectors, and reference implementation
View on GitHub →

Start Routing Payments Today

Point your x402 middleware at AgentPay and get 5-chain EVM coverage in under 5 minutes.

View Live API GitHub Spec →

All systems operational  ·  Facilitator: https://x402-agent-pay.com