What is a Facilitator?
The facilitator is a service that:- Verifies payment payloads submitted by clients.
- Settles payments on the blockchain on behalf of servers.
Facilitator Responsibilities
- Verify payments: Confirm that the client’s payment payload meets the server’s declared payment requirements.
- Settle payments: Submit validated payments to the blockchain and monitor for confirmation.
- Provide responses: Return verification and settlement results to the server, allowing the server to decide whether to fulfill the client’s request.
Why Use a Facilitator?
Using a facilitator provides:- Reduced operational complexity: Servers do not need to interact directly with blockchain nodes.
- Protocol consistency: Standardized verification and settlement flows across services.
- Faster integration: Services can start accepting payments with minimal blockchain-specific development.
Live Facilitators
Multiple facilitators are live in production, supporting various networks including Base, Solana, Polygon, Avalanche, and more. For a complete and up-to-date list, see the x402 Ecosystem.Interaction Flow
Clientmakes an HTTP request to aresource serverResource serverresponds with a402 Payment Requiredstatus and aPAYMENT-REQUIREDheader containing the Base64-encoded payment requirements.Clientselects one of thepaymentDetailsreturned by theacceptsfield of the server response and creates aPayment Payloadbased on theschemeof thepaymentDetailsthey have selected.Clientsends the HTTP request with thePAYMENT-SIGNATUREheader containing thePayment Payload(Base64-encoded) to theresource serverResource serververifies thePayment Payloadis valid either via local verification or by POSTing thePayment PayloadandPayment Detailsto the/verifyendpoint of thefacilitator server.Facilitator serverperforms verification of the object based on theschemeandnetworkIdof thePayment Payloadand returns aVerification Response- If the
Verification Responseis valid, the resource server performs the work to fulfill the request. If theVerification Responseis invalid, the resource server returns a402 Payment Requiredstatus with thePAYMENT-REQUIREDheader. Resource servereither settles the payment by interacting with a blockchain directly, or by POSTing thePayment PayloadandPayment Detailsto the/settleendpoint of thefacilitator server.Facilitator serversubmits the payment to the blockchain based on theschemeandnetworkIdof thePayment Payload.Facilitator serverwaits for the payment to be confirmed on the blockchain.Facilitator serverreturns aPayment Execution Responseto the resource server.Resource serverreturns a response to theClientwith aPAYMENT-RESPONSEheader containing theSettlement Responseas Base64-encoded JSON. On success, this is a200 OKwith the requested resource. On failure, this is a402 Payment Requiredwith error details.
Duplicate Settlement (Solana)
On Solana, a race condition can occur when the same payment transaction is submitted to a facilitator’s/settle endpoint multiple times before the first submission is confirmed on-chain. Because Solana’s RPC returns “success” for duplicate submissions (the network deduplicates at the consensus level), the facilitator may return a successful settlement response for each call. A malicious client could exploit this to access multiple resources while only paying once.
To mitigate this, the x402 SVM mechanism packages include a built-in SettlementCache — a short-lived, in-memory cache that detects and rejects duplicate settlement attempts for the same transaction payload. The cache requires no external storage and entries are automatically evicted after 120 seconds (approximately twice the Solana blockhash lifetime).
This protection is enabled by default when using the standard SVM facilitator registration helpers in TypeScript and Python. In Go, a shared SettlementCache instance should be passed to both V1 and V2 SVM facilitator schemes during registration.
If you are a merchant settling payments directly (without a facilitator), you must implement equivalent duplicate detection yourself. See the Exact SVM Scheme Specification for the full specification.
Summary
The facilitator acts as an independent verification and settlement layer within the x402 protocol. It helps servers confirm payments and submit transactions onchain without requiring direct blockchain infrastructure. Next, explore:- Client / Server — understand the roles and responsibilities of clients and servers
- HTTP 402 — understand how payment requirements are communicated to clients