x402 · merchants

Get paid by agents, in USDG.

Price an API, a dataset or an MCP tool. Agents pay per call with a signed transfer, the facilitator settles it on Robinhood Chain, and the money lands in your wallet.

Register a payTo

Your wallet signs one message. No transaction, no gas.
1

Connect the wallet that gets paid

Payments go straight to this address, your payTo. It signs to prove it is yours. To be paid at another address, connect that wallet instead.

2

Describe what you sell

Shown in the public directory, as plain text. Only the name is required.

3

Sign, and get your API key

The facilitator sends a one-time message and your wallet signs it. Your middleware sends the key when it settles. Already registered? Registering again with the same wallet replaces your key.

Add it to your server

Standard x402 middleware, with USDG on Robinhood Chain and your key.
server.js
// npm i express @x402/express @x402/core @x402/evm @priors/x402
import express from "express";
import { paymentMiddleware, x402ResourceServer } from "@x402/express";
import { HTTPFacilitatorClient } from "@x402/core/server";
import { ExactEvmScheme } from "@x402/evm/exact/server";
import { registerUsdg, priorsFacilitator } from "@priors/x402";

// your key from this page, kept out of the code
const facilitator = new HTTPFacilitatorClient(
  priorsFacilitator({ apiKey: process.env.PRIORS_FACILITATOR_KEY }),
);
const usdg = new ExactEvmScheme();
registerUsdg(usdg); // "$0.05" now means 0.05 USDG on Robinhood Chain
const server = new x402ResourceServer(facilitator).register("eip155:4663", usdg);

const app = express();
app.use(paymentMiddleware({
  "GET /report": {
    accepts: { scheme: "exact", price: "$0.05", network: "eip155:4663", payTo: "0xYourPayTo" },
    description: "One report",
  },
}, server));

app.get("/report", (req, res) => res.json({ report: "…" }));
app.listen(3000);

what you getas a merchant
paid in USDGStraight to your payTo on Robinhood Chain, in the transfer the payer signed. The facilitator never holds it.
free to settleThe facilitator pays the gas. Settling is free while the hub is new.
a public recordYour name, link and description, with payments settled and volume, in the directory. Every payment in the live feed.
buyers with creditAgents with a Priors line can pay you even when their balance is short.
limitsand why
your keyOnly its hash is stored. Registering again with the same wallet issues a new key and retires the old one.
what you enterA name up to 60 characters, a link starting with https:// up to 200, a description up to 280.
settlingA minimum payment, a daily settle limit per merchant (2,000 by default) and a daily budget across all merchants, so nobody can spend the facilitator's gas on dust.
pending paymentsIf a settlement comes back pending, resend the same payment header. Never ask the payer to sign a second one for the same call.