x402 Facilitator
Verify and settle x402 exact-scheme payments through Mesh: no chain infra, gasless for buyers, non-custodial.
MeshGateway runs an open x402 facilitator at:
https://facilitator.meshgateway.coA facilitator does the on-chain work of an x402 payment so resource servers
don't have to. Your server receives a signed payment payload from a buyer and
forwards it to the facilitator: /verify checks it, /settle broadcasts it.
The facilitator wallet pays only gas. Funds always move directly from payer
to merchant via the signed authorization, so the facilitator never holds or
custodies funds.
Supported networks
| Network | CAIP-2 | Asset | Transfer method |
|---|---|---|---|
| Base | eip155:8453 | USDC | EIP-3009 |
| Base Sepolia (testnet) | eip155:84532 | USDC | EIP-3009 |
| Robinhood Chain | eip155:4663 | USDG | Permit2 (x402ExactPermit2Proxy) |
Scheme: exact · Protocol: x402 v2.
Endpoints
GET /supported
Payment kinds, networks, and settlement signer addresses.
curl https://facilitator.meshgateway.co/supported{
"kinds": [
{ "x402Version": 2, "scheme": "exact", "network": "eip155:8453" },
{ "x402Version": 2, "scheme": "exact", "network": "eip155:84532" },
{ "x402Version": 2, "scheme": "exact", "network": "eip155:4663" }
],
"extensions": [],
"signers": { "eip155:*": ["0xc231248d8f821Cf5e03Dcc11A9258ff8596b1dc3"] }
}POST /verify
Checks a signed payment payload against the payment requirements without settling: signature recovery, expiry window, payer balance, and a full on-chain simulation of the transfer.
{
"x402Version": 2,
"paymentPayload": { "x402Version": 2, "payload": { "..." : "..." }, "accepted": { "...": "..." } },
"paymentRequirements": { "scheme": "exact", "network": "eip155:8453", "...": "..." }
}Responds { "isValid": true, "payer": "0x..." }, or isValid: false with a
machine-readable invalidReason (for example
invalid_exact_evm_insufficient_balance).
POST /settle
Same request body as /verify. Re-verifies, then broadcasts the transfer
from the facilitator wallet and waits for the receipt:
{ "success": true, "payer": "0x...", "transaction": "0x...", "network": "eip155:8453" }If confirmation outlasts the request deadline the response reports the broadcast transaction hash with a pending status rather than failing.
Use it from a resource server
Any x402 v2 server SDK works. Point the facilitator config at Mesh:
import { x402HTTPResourceServer } from '@x402/core/http';
const server = new x402HTTPResourceServer({
facilitator: { url: 'https://facilitator.meshgateway.co' },
routes: {
'GET /report': { price: '$0.01', network: 'eip155:8453' },
},
});For USDG on Robinhood Chain, price routes on eip155:4663. Buyers pay
gasless in both cases: EIP-3009 and Permit2 authorizations are plain
signatures, and the facilitator pays the settlement gas.
Guarantees and limits
- Non-custodial. The settlement wallet can never move funds without a payer's signed authorization; it spends gas only.
- Verified before settled. Every settle re-runs verification, including on-chain simulation, before broadcasting.
- Replay-safe. EIP-3009 nonces and Permit2 nonces are enforced by the token contracts themselves; a payload can settle at most once.
- Rate limits. Verify and settle are rate limited per client IP. If you need sustained throughput, contact us.
Related
- How agents pay: the 402 exchange end to end.
- Networks: chains, tokens, and contract addresses.
- x402 specification