x402 payment facilitator
Let agents pay for your API. Settled on-chain in USDC.
Neuronto Payments verifies the payments that AI agents sign and settles them on Base. One URL in any x402 SDK, no accounts for you or your buyers, and no funds held: every payment moves straight from the buyer's wallet to yours.
https://pay.neuronto.comGET /premium
Base · USDC
- The API asks to be paid402
PAYMENT-REQUIRED: exact, eip155:8453, 0.01 USDC to 0xYourWallet - The agent signs, in its own walletno gas
EIP-3009 transferWithAuthorization, signed over "USD Coin" - Neuronto Payments checks itisValid
POST pay.neuronto.com/verify - Neuronto Payments settles itsuccess
POST pay.neuronto.com/settle
- Networks
- BaseLiveBase SepoliaPaused
- Price per settlement
- Free during launchThen $0.00197 per settlement on Base, network gas plus 30%, announced 14 days ahead.
- Funds held
- NoneThe facilitator's own wallet holds gas only.
- Protocol
- x402 v1 and v2exact scheme, EIP-3009 USDC. Any x402 SDK works unchanged.
Integrate
Charge per request by changing one URL.
Put the x402 middleware in front of a route, name the price and the wallet you want paid, and point its facilitator at pay.neuronto.com. Buyers answer the 402 with a signed payment; you serve the response after it settles.
Both snippets are the official x402 SDKs, unmodified.
from fastapi import FastAPI, Request
from x402 import x402ResourceServer
from x402.http import FacilitatorConfig, HTTPFacilitatorClient
from x402.http.middleware.fastapi import payment_middleware
from x402.mechanisms.evm.exact import register_exact_evm_server
facilitator = HTTPFacilitatorClient(
FacilitatorConfig(url="https://pay.neuronto.com"))
server = x402ResourceServer(facilitator)
register_exact_evm_server(server, "eip155:8453")
routes = {
"GET /premium": {"accepts": {
"scheme": "exact", "price": "$0.01",
"network": "eip155:8453", "payTo": "0xYourWallet"}},
}
pay = payment_middleware(routes, server)
app = FastAPI()
@app.middleware("http")
async def x402(request: Request, call_next):
return await pay(request, call_next)import express from "express";
import { paymentMiddleware, x402ResourceServer } from "@x402/express";
import { ExactEvmScheme } from "@x402/evm/exact/server";
import { HTTPFacilitatorClient } from "@x402/core/server";
const facilitator = new HTTPFacilitatorClient({ url: "https://pay.neuronto.com" });
const server = new x402ResourceServer(facilitator)
.register("eip155:8453", new ExactEvmScheme());
const app = express();
app.use(paymentMiddleware({
"GET /premium": {
accepts: { scheme: "exact", price: "$0.01", network: "eip155:8453", payTo: "0xYourWallet" },
},
}, server));Where the money goes
Straight from the buyer to you. Nothing in between.
A settlement is one on-chain transfer the buyer signed. Neuronto Payments broadcasts it and pays the network fee; it cannot change the amount or the destination.
For the exact amount, to your address, valid for minutes.
In the same transaction, visible on the block explorer.
Holds no balances. Its wallet holds gas only.
Settlement guarantees
Built so a payment settles once, or not at all.
Settled exactly once
The identical request is settled once; sending it again returns the recorded result. Idempotency-Key is supported.
Checked right before it is sent
Every transfer is simulated again immediately before broadcast, so an emptied wallet fails cleanly and costs nobody anything.
Never left unresolved
A slow settlement answers settlement_pending with its transaction; resend the same body to poll for the outcome.
Only what should settle
USDC on each network, amounts above zero, well-formed authorizations. Anything else is refused before it reaches the chain.
Withdrawn before it fails
A network the facilitator cannot pay gas for disappears from /supported first, so a server never advertises terms that cannot settle.
Many buyers at once
Different buyers settle in parallel; each wallet settles in order, so one buyer cannot spend the same balance twice.
For agents and tools
Machine-readable from the first request.
Errors are always JSON in the x402 shape or RFC 9457. The API is versioned by the x402Version in the body, never by a URL prefix, and described in OpenAPI 3.1 and an ARD manifest.
- GET /supportedNetworks, schemes and signers live right now, with each network's USDC facts.
- POST /verifyCheck a signed payment against its requirements. Moves nothing, costs nothing.
- POST /settleSettle on-chain. The identical body is settled once.
- GET /discovery/resourcesEvery resource that has actually been paid for through this facilitator.
- GET /pricingThe price of a settlement per network, as JSON.
- GET /llms.txtThe guide for agents. Every page is also Markdown with Accept: text/markdown.
Start