x402 facilitator
Hedera x402 facilitator
Free and open source. It checks and settles USDC payments for any x402 server, and pays the network fee so buyers don't need HBAR. Mainnet on Hedera, testnet on Hedera, Base Sepolia and Solana devnet.
No API key · No fee · MIT licensed
Endpoints
Paste one URL into your x402 server
Mainnet
https://facilitator.amnt.io
Hedera
Testnet
https://testnet.facilitator.amnt.io
Hedera testnet · Base Sepolia · Solana devnet
| Network | CAIP-2 id | Where | Network fee |
|---|---|---|---|
| Hedera | hedera:mainnet | Mainnet | HBAR fee, paid by us |
| Hedera testnet | hedera:testnet | Testnet | HBAR fee, paid by us |
| Base Sepolia | eip155:84532 | Testnet | ETH gas, paid by us |
| Solana devnet | solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | Testnet | SOL fee, paid by us |
Also at https://www.amnt.io/api/x402/facilitator and /testnet. Same service.
Live
Every payment it has settled
Settlements
…
Volume
…
Success rate
…
Median settle time
…
Settlements per day
Fee payers
…
Latest transactions
| Time | Network | Amount | Paid for | Status | Transaction |
|---|---|---|---|---|---|
| Loading… | |||||
How it works
Three steps, one payment
- 1
Your server asks for payment
Your API answers 402 with a price and our URL as the facilitator. Buyers see the fee payer in the reply.
- 2
The buyer signs, we check it
The buyer signs a USDC transfer. POST /verify checks the signature, the amount and the balance. No money moves yet.
- 3
We settle it on chain
POST /settle adds our signature, pays the network fee and sends it. You get the transaction id back.
Examples
Copy, paste, run against testnet
Node · a paid route with Hono
import { Hono } from "hono";
import { serve } from "@hono/node-server";
import { paymentMiddleware } from "@x402/hono";
import { x402ResourceServer, HTTPFacilitatorClient } from "@x402/core/server";
import { ExactHederaScheme } from "@x402/hedera/exact/server";
const facilitator = new HTTPFacilitatorClient({
url: "https://testnet.facilitator.amnt.io",
});
const server = new x402ResourceServer(facilitator)
.register("hedera:testnet", new ExactHederaScheme());
const app = new Hono();
app.use(paymentMiddleware({
"GET /weather": {
accepts: {
scheme: "exact",
network: "hedera:testnet",
price: "$0.001",
payTo: "0.0.YOUR_ACCOUNT",
},
description: "Today's weather",
},
}, server));
app.get("/weather", (c) => c.json({ sunny: true }));
serve({ fetch: app.fetch, port: 3000 });cURL · what it supports
curl https://testnet.facilitator.amnt.io/supportedcURL · is it up
curl https://facilitator.amnt.io/healthPython · the last 5 settlements
import requests
r = requests.get(
"https://facilitator.amnt.io/transactions",
params={"status": "settled", "limit": 5},
)
for tx in r.json()["transactions"]:
print(tx["network"], tx["amount_atomic"], tx["explorer"])Questions
What developers ask first
Does it cost anything?
No. There's no API key, no sign-up and no fee. We pay the network fee on every settlement. The buyer only needs USDC, not HBAR, ETH or SOL.
Why a Hedera facilitator?
Coinbase already runs a free facilitator for Base and Solana mainnet. Hedera had one public mainnet option. Two independent facilitators means a server can list both and keep working if one is down.
What do I change in my server?
One URL. The API matches Coinbase's facilitator exactly, so any x402 server library works: point it at https://facilitator.amnt.io, or https://testnet.facilitator.amnt.io while you build.
Can the same payment be used twice?
No. Once a payment settles, /verify and /settle both refuse it with already_settled, so an old payment can't be replayed to get your API for free.
What does the Hedera Bazaar do?
When a payment for a resource that asks to be discoverable settles here, it's listed at /discovery/resources, in the same format as Coinbase's Bazaar. Entries drop off after 30 days with no payment.
Can I run my own?
Yes. It's MIT licensed. Run it with Docker, Node or a one-click Vercel deploy, and turn on a chain by adding its fee-payer key. The dashboard ships with it.