What an x402 facilitator does, and how to choose one
An x402 facilitator is a small HTTP service that does two things for a server charging per request: it checks that a signed stablecoin payment is valid, and it submits that payment to a blockchain. The x402 documentation puts it the same way: the facilitator "is an optional but recommended service that simplifies the process of verifying and settling payments between clients (buyers) and servers (sellers)" (docs.x402.org).
The status code it revives was never assigned: "RFC 9110 reserves status code 402 (Payment Required) for future use" (draft-king-yew-choo-agentic-payments, citing RFC 9110). It is optional because a resource server can verify and broadcast itself. Most do not want to, because that means chain connectivity, a funded signer and receipt waits inside a request that was supposed to return an API response.
What a facilitator is not
It is not a custodian. The spec says so: "The facilitator does not hold funds or act as a custodian - it performs verification and execution of onchain transactions based on signed payloads provided by clients" (docs.x402.org). Money moves from the payer's wallet to the merchant's address in one transaction the payer authorised. The facilitator supplies the broadcast and the gas.
It is also not a payment facilitator in the card sense. A card-world payfac holds a master merchant account, underwrites sub-merchants and carries chargeback liability. None of that exists here, and there is no settlement cycle because settlement is the transaction. If you want a crypto api payment gateway that also does fiat payouts or refunds, an x402 facilitator is not that product.
And it is not an agent payment processor standing between the agent and the merchant. An x402 client never talks to a facilitator at all. It talks only to the server that answered 402, then signs and retries.
What /verify and /settle actually do
Two POST endpoints carry it, both taking the body {"x402Version": 2, "paymentPayload": ..., "paymentRequirements": ...}.
POST /verify checks the client's signed payload against the terms the server advertised. It moves nothing on chain, and on a well-behaved facilitator it is free: it runs on every request, while settlement runs only on paid ones. Neuronto Payments publishes verificationUsd: "0" in its pricing JSON.
POST /settle broadcasts. Two properties are worth checking before you commit to any provider: idempotency and the pending state.
Idempotency matters because retries are normal and double settlement is not. Neuronto Payments keys on the canonical JSON of the request body: "The identical body is settled once; re-submitting it returns the recorded outcome with Idempotency-Replayed: true" (developer reference). The IETF's analytical draft on agentic payments treats this as part of the general model: a wire scheme "constrains side effects on unpaid requests, retry handling under an idempotency key, and concurrent use of one credential" (draft-king-yew-choo-agentic-payments).
The pending state matters because a broadcast whose receipt you never saw is not a failure. The x402 docs define settlement_pending as a non-terminal error carrying the transaction hash, so the caller can reconcile on chain before retrying (docs.x402.org). Neuronto Payments bounds that wait at about 25 seconds, and re-simulates the transfer before broadcast, so a payer who emptied their wallet after verification fails without costing gas.
Why you read /supported before advertising a price
GET /supported is the capability list: every (x402Version, scheme, network) triple the facilitator will settle right now, plus the signer addresses that pay gas and the per-network facts a payer needs. That last part is not decoration. The EIP-712 domain a wallet signs over differs per network: Base USDC signs as name USD Coin version 2, Base Sepolia USDC as USDC version 2. Get it wrong and every signature verifies as garbage.
The reason to read it on startup is ordering. Neuronto Payments withdraws a network from /supported before it stops settling, "so a client that reads /supported never sends a payment that cannot land" (status). A facilitator that removes a network only when it starts refusing leaves a window in which your 402 advertises terms nobody can satisfy.
The trust boundary
The arrow that never touches the facilitator box is the one that matters. A service asking you to send it funds first carries a different risk profile.
What a search for "x402 facilitator" returns today
The reference documentation is at docs.x402.org, which also keeps a list of production options. That list named 15 services when read for this article, across Base, Solana, Polygon, Celo, NEAR and XRPL, and it says of itself: "The table below lists selected production options; it is not an exhaustive catalog."
Running services publish an endpoint you can call. x402facilitator.ai, operated by Immutifi, Inc., describes itself as "Noncustodial infrastructure for machine commerce" and offers free accounts that "include 1,500 successful x402 transactions each day". Morph runs a facilitator whose integration begins "Register on the Morph x402 Console to get API credentials", with features tied to its own network primitives such as AltFee.
Others are neither. The domain x402facilitators.com is a sales page for the name itself, with a form noting that "Offers below $2,500 are automatically filtered." An ordinary domain listing, but not somewhere you can POST a payment payload. Before comparing features, confirm the result answers GET /supported with JSON.
A checklist you can apply
| Criterion | How to check it | Why it decides anything |
|---|---|---|
| It exists as a service | GET /supported returns JSON with a kinds array | A provider that cannot list what it settles cannot be integrated |
| Your network and asset | Your CAIP-2 id and token contract appear there | Advertising terms nobody can settle turns your paid route into a 402 loop |
| Account requirement | Does /verify need a key or a registration | An agent with a wallet and no signup is the reason the standard exists |
| Cost of verification | Published separately from settlement | Verify runs on every request; settle runs only on paid ones |
| Cost of settlement | A per-network figure, how it is derived, and the notice period before it changes | This is your margin on a $0.001 call |
| Idempotency | Same body settled once, with a replay marker | Retries are routine, double spends are not |
| Pending semantics | A non-terminal state carrying a transaction hash | A receipt timeout is not a failure |
| Refusal policy | Which addresses are refused, against whose list | Your buyers inherit the screening you delegate |
| Availability evidence | Counters with a denominator, not a badge | A rate without a probe count is unfalsifiable |
| Exit cost | Is the facilitator one URL in your config | If switching means rewriting middleware, it is a dependency, not a vendor |
Self-hosted or hosted
The specification is neutral. "Anyone can run a facilitator. You can run your own or self-facilitate" (docs.x402.org). The same documentation warns against the lazy default: "the public x402.org facilitator is intended for development and testnet workflows. Do not assume it is the default path for production mainnet routes" (docs.x402.org).
Hosted wins when your problem is time and your volume is small. You point a middleware constructor at a URL, advertise a wallet, and never touch an RPC node or a nonce. Self-hosting wins in cases a hosted provider cannot fix for you.
Your network or token is not on anyone's list. The documented production table covers a specific set of chains and assets. If you settle in a token outside it, the choice is made for you. Adding a network to someone else's service is their roadmap.
You cannot delegate the refusal policy. Every facilitator that screens addresses applies a list you did not choose, and a payment refused by that list is a customer you did not serve. Coinbase's hosted option is described in the x402 docs as performing "KYT/OFAC checks on every transaction"; Neuronto Payments refuses addresses on the public OFAC SDN crypto list (124 at last read) before any chain call. If your obligations differ from your provider's, the signer belongs to you.
Settlement availability sits on your revenue path. When the facilitator is unreachable your paid routes cannot complete, and you inherit its uptime whether or not it publishes any.
Your latency budget is tight. A hosted settlement adds a network hop plus a receipt wait to a request you wanted short. The x402 docs advise facilitators behind a platform deadline to bound the receipt wait below it, because a process killed mid-wait returns a 5xx with no transaction hash instead of a pending state to reconcile against.
The counterweight: self-facilitation puts a funded hot wallet in your application, and gas top-ups become your on-call problem.
When you do not need a facilitator at all
You are only paying, not charging. Clients never call a facilitator. If your agent consumes paid APIs, you need a wallet and a client library.
Both ends are yours. If caller and resource sit in one trust domain, a shared secret does the job.
Your price is high and your volume is low. x402 exists because payment should work "without accounts, sessions, or credential management" (docs.x402.org). At ten enterprise customers on annual contracts, that is not a problem you have. Per-request settlement earns its complexity when buyers are numerous and anonymous.
You already run chain infrastructure. Self-facilitation is a supported path, not a hack. If a funded signer and an RPC endpoint are already in production, verifying a signature and sending a transfer costs little more.
What Neuronto Payments does
Neuronto Payments is an x402 facilitator on Base. It takes no API key and no account, and versioning is carried by the x402Version field in the body rather than a URL prefix. /supported lists eip155:8453 (Base, USDC) as available and eip155:84532 (Base Sepolia) as paused.
Its published numbers, so you can run the checklist above against it: verification is free, and settlement is free during launch. The rate that would apply otherwise is 2.11 credits, or $0.00211, computed as network gas for the settlement plus 30%, with 14 days notice before any change takes effect (pricing). Availability over the last 30 days is published as 99.33% from 569 probes with 0 failures and a median path of 221 ms, which is the Wilson lower bound of the 95% interval rather than the raw rate of 100.00% (status).
/echo is a live merchant on the same origin that charges $0.001 and returns it in the same request, the cheapest way to test a client against a real 402 rather than a mock.
FAQ
Does the facilitator ever hold my money?
Not in the x402 model. The transfer is the payer's own signed authorisation, moving funds directly to the merchant address. Check that claim in your provider's documentation before you integrate.
Is a facilitator required by the protocol?
No. The documentation calls it "optional but recommended" and names self-facilitation as a supported production path.
What does a settlement cost?
It depends on the provider and the chain. The floor is the gas for one token transfer. Ask for the figure per network and the notice period before it moves.
How does this differ from a payment facilitator?
A card-world payment facilitator underwrites sub-merchants and carries chargeback liability. An x402 facilitator checks a signature and broadcasts a transaction. The words overlap; the businesses do not.
Is stablecoin settlement final?
Once the transaction confirms, yes. No chargebacks either way, which removes fraud risk for the merchant and recourse for the buyer.
Sources
- x402 docs, Facilitator: https://docs.x402.org/core-concepts/facilitator
- x402 docs, Facilitators: https://docs.x402.org/dev-tools/facilitators
- x402 docs, Welcome: https://docs.x402.org/
- RFC 9110: https://www.rfc-editor.org/rfc/rfc9110.html
- IETF draft, Agentic Payments: https://datatracker.ietf.org/doc/draft-king-yew-choo-agentic-payments/
- x402Facilitator.ai: https://x402facilitator.ai/
- Morph x402 Facilitator: https://morph.network/x402
- x402facilitators.com: https://www.x402facilitators.com/
- Neuronto Payments: https://pay.neuronto.com/
- Neuronto Payments, developers: https://pay.neuronto.com/developers
- Neuronto Payments, echo: https://pay.neuronto.com/echo
- Neuronto Payments, pricing: https://pay.neuronto.com/pricing
- Neuronto Payments, status: https://pay.neuronto.com/status
- Neuronto Payments, supported: https://pay.neuronto.com/supported