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.
20 free settles a dayThe facilitator pays the gas for your first 20 payments each UTC day. After that, each settle costs 0.015 USDG (about the gas plus a third) from a prepaid balance you top up.
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.
prepaid balanceSend USDG from your registered payTo to the fee address 0x20c6816B2419616238772591965E6E9AbE493fD5 (the Priors Safe), then call POST https://facilitator.priors.trade/merchants/topup with {"txHash": "0x…"} and your key. Each transfer is credited once. GET /merchants/me shows your balance and free settles left today. With an empty balance, settles past the free 20 are refused before anything is sent: nobody pays for them. Unused balance is refunded on request, reviewed by a person.
settlingA minimum payment, at most 1,000 settles a day per merchant, and a daily budget of free settles 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.