Skip to content

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

NetworkCAIP-2 idWhereNetwork fee
Hederahedera:mainnetMainnetHBAR fee, paid by us
Hedera testnethedera:testnetTestnetHBAR fee, paid by us
Base Sepoliaeip155:84532TestnetETH gas, paid by us
Solana devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1TestnetSOL fee, paid by us

Also at https://www.amnt.io/api/x402/facilitator and /testnet. Same service.

Live

Every payment it has settled

Checking…

Settlements

Volume

Success rate

Median settle time

Settlements per day

Fee payers

Latest transactions

TimeNetworkAmountPaid forStatusTransaction
Loading…
See every transaction →Live from /api/x402/facilitator/transactions

How it works

Three steps, one payment

  1. 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. 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. 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/supported

cURL · is it up

curl https://facilitator.amnt.io/health

Python · 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.