x402 Protocol

Facilitator Discovery

Find and connect to P402's production facilitator network.

Facilitator Endpoint

Production facilitator deployed on Cloudflare Workers

https://p402.io/api/v1/facilitator

Discovery Protocol

x402 facilitators expose capabilities via /.well-known/agent.json

// Discover facilitator capabilities
const response = await fetch('https://p402.io/.well-known/agent.json');
const capabilities = await response.json();

console.log('Facilitator:', capabilities.name);
console.log('Payment Schemes:', capabilities.payment_schemes);
console.log('Supported Networks:', capabilities.networks);
console.log('Fee Structure:', capabilities.fee_structure);

// Expected response:
{
  "type": "x402-facilitator",
  "name": "P402 Cloudflare Facilitator",
  "version": "1.0.0",
  "operator": "P402.io",
  "description": "Production x402 facilitator on Cloudflare Edge",

  "payment_schemes": ["exact", "onchain", "receipt"],
  "supported_tokens": ["USDC"],
  "networks": ["eip155:8453"],

  "fee_structure": {
    "percentage": 1.0,
    "minimum_usd": 0.01,
    "maximum_usd": 10000.00
  },

  "endpoints": {
    "verify": "/verify",
    "settle": "/settle",
    "receipt": "/receipt",
    "health": "/health"
  },

  "locations": [
    "IAD", "DFW", "ORD", "ATL", "MIA",  // US
    "LHR", "CDG", "FRA", "AMS",         // Europe
    "NRT", "ICN", "SIN", "HKG",         // Asia
    "SYD", "MEL"                        // Oceania
  ],

  "sla": {
    "uptime": 99.9,
    "verify_latency_p95": 50,    // 50ms
    "settle_latency_p95": 2000   // 2 seconds
  }
}

Health Monitoring

Monitor facilitator status and performance

// Check facilitator health
const health = await fetch('https://p402.io/api/v1/facilitator/health');
const status = await health.json();

console.log('Status:', status.status);
console.log('Uptime:', status.uptime);
console.log('Response Time:', status.checks.response_time.duration_ms);

// Health check response:
{
  "status": "healthy",
  "timestamp": "2024-01-15T10:30:00Z",
  "uptime": 1705321800,
  "version": "1.0.0",
  "checks": {
    "kv_storage": {
      "healthy": true,
      "message": "KV storage accessible",
      "latency_ms": 50
    },
    "base_rpc": {
      "healthy": true,
      "message": "Base RPC accessible",
      "chain_id": 8453,
      "latency_ms": 120,
      "endpoint": "https://mainnet.base.org"
    },
    "treasury": {
      "healthy": true,
      "message": "Treasury wallet configured",
      "address": "0xb23f146251e3816a011e800bcbae704baa5619ec"
    },
    "facilitator": {
      "healthy": true,
      "message": "Facilitator wallet configured",
      "key_format": "valid"
    },
    "response_time": {
      "healthy": true,
      "duration_ms": 45,
      "threshold_ms": 1000
    }
  }
}

Network Architecture

Global Edge Deployment

  • • 15 regions worldwide
  • • Cloudflare Workers runtime
  • • Sub-50ms P95 verification latency
  • • 99.9% uptime SLA

Security Features

  • • Rate limiting (100 req/min per IP)
  • • API key authentication
  • • Treasury address validation
  • • Replay protection via nonce checking

Integration Example

Complete payment flow using facilitator discovery

// 1. Discover facilitator
const discovery = await fetch('https://p402.io/.well-known/agent.json');
const facilitator = await discovery.json();

// 2. Verify payment capability
if (!facilitator.payment_schemes.includes('exact')) {
  throw new Error('Facilitator does not support EIP-3009 exact payments');
}

// 3. Check facilitator health
const health = await fetch('https://p402.io/api/v1/facilitator/health');
const healthStatus = await health.json();

if (healthStatus.status !== 'healthy') {
  throw new Error('Facilitator is not healthy');
}

// 4. Verify payment (x402 wire format)
const verification = await fetch('https://p402.io/api/v1/facilitator/verify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    paymentPayload: {
      x402Version: 2, scheme: 'exact', network: 'eip155:8453',
      payload: { signature: '0x...', authorization: eip3009Authorization }
    },
    paymentRequirements: {
      scheme: 'exact', network: 'eip155:8453',
      maxAmountRequired: '1000000',
      resource: 'https://example.com/api',
      description: 'AI inference',
      payTo: '0xb23f...', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
    }
  })
});

const verifyResult = await verification.json();

// 5. Execute settlement if verified
if (verifyResult.isValid) {
  const settlement = await fetch('https://p402.io/api/v1/facilitator/settle', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      paymentPayload: {
        x402Version: 2, scheme: 'exact', network: 'eip155:8453',
        payload: { signature: '0x...', authorization: eip3009Authorization }
      },
      paymentRequirements: {
        scheme: 'exact', network: 'eip155:8453',
        maxAmountRequired: '1000000',
        resource: 'https://example.com/api',
        description: 'AI inference',
        payTo: '0xb23f...', asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
      }
    })
  });

  const settleResult = await settlement.json();
  console.log('Transaction:', settleResult.transaction); // "0x..."
  console.log('Network:', settleResult.network);          // "eip155:8453"
}

// 6. Create receipt for reuse
const receipt = await fetch('https://p402.io/api/v1/receipts', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    txHash: settleResult.txHash,
    sessionId: 'session_123',
    amount: 1.0
  })
});

console.log('Receipt created for future sessions');

Production Configuration

Base Network (Chain ID: 8453)

Ethereum L2 optimized for low-cost transactions

RPC: https://mainnet.base.org
Explorer: https://basescan.org

USDC Contract

Native USDC on Base with EIP-3009 support

Address: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Decimals: 6

P402 Treasury

Multi-signature treasury with on-chain governance

Address: 0xb23f146251e3816a011e800bcbae704baa5619ec
Multisig: 3-of-5 signatures required