Costs
x402 settlement without running a relay.
Use the public x402 facilitator to settle USDC on HyperEVM and Base without running your own relay.
Live check
Public facilitator URL
One public URL for support, verify, settle, and health checks.
https://facilitator.0xarchive.io- State
- Loading
- Networks
- Loading
- Signer sets
- Loading
Checking health and support endpoints.
Live networks
See the exact network, scheme, USDC contract, and explorer before you point a server at the facilitator.
HyperEVM
eip155:999
0xb88339cb7199b77e23db6e890353e22632ba630fBase
eip155:8453
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913What this removes
Use the public facilitator when you want settlement without another relay, another fee layer, or an account gate.
Infra
No extra relay to run
Access
No account gate
Endpoints in order
Check support first, use /verify before settlement, call /settle last, and keep /health for a quick service check.
/verifyChecks payment data before settlement.
Use this after the client prepares payment data and before you settle.
/settleSubmits a verified USDC payment on-chain.
Use this after verify succeeds and the payment is ready to settle.
Set up the server and client
Register the public facilitator on the server, then give the client a signer so paid requests can settle cleanly.
Pick the network and pay-to address
Register the facilitator on the server
Give the client a signer
Register the facilitator on the server
Point the resource server at the public facilitator and choose the exact network it should accept.
import express from "express";import { paymentMiddleware, x402ResourceServer } from "@x402/express";import { ExactEvmScheme } from "@x402/evm/exact/server";import { HTTPFacilitatorClient } from "@x402/core/server";
const app = express();
const facilitatorClient = new HTTPFacilitatorClient({ url: "https://facilitator.0xarchive.io",});
const payTo = "0xYourHyperEvmAddress";
app.use( paymentMiddleware( { "GET /data": { accepts: [{ scheme: "exact", price: "$0.001", network: "eip155:999", payTo, }], description: "Market data endpoint", mimeType: "application/json", }, }, new x402ResourceServer(facilitatorClient) .register("eip155:999", new ExactEvmScheme()), ),);
app.listen(4021);Give the client a signer
Once the client can sign exact EVM payments, paid retries can settle without another service in the middle.
import { wrapFetchWithPayment } from "@x402/fetch";import { x402Client } from "@x402/core/client";import { ExactEvmScheme } from "@x402/evm/exact/client";import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount( process.env.EVM_PRIVATE_KEY as `0x${string}`,);
const client = new x402Client();client.register("eip155:*", new ExactEvmScheme(signer));
const fetchWithPayment = wrapFetchWithPayment(fetch, client);const response = await fetchWithPayment( "https://api.0xarchive.io/v1/hyperliquid/orderbook/BTC",);Continue into wallet auth
Use the facilitator on its own for settlement. Add wallet auth only if you also need sign-in, subscriptions, or billing.