Pilot open
x402 payments on Robinhood Chain
The quotum facilitator verifies and settles x402 v2 payments in USDG. The full amount goes from the payer to the seller's payout address in one transaction. We pay the gas and charge no pilot fee.
- Fee
- 0
- Gas
- Paid by us
- Asset
- USDG
- Network
- Robinhood Chain (eip155:4663)
- Pilot caps
- 5 USDGper payment
- 10free settles a day per new seller
- 1,000settles a month, shared
Connect in one call
Point your x402 seller at https://pay.quotum.org with the API key from signup. We verify and settle each payment; the buyer pays your wallet directly.
import { HTTPFacilitatorClient } from '@x402/core/server';
const auth = { Authorization: 'Bearer YOUR_API_KEY' };
export const facilitator = new HTTPFacilitatorClient({
url: 'https://pay.quotum.org',
createAuthHeaders: async () => ({
verify: auth, settle: auth, supported: {},
}),
});Full seller and buyer setup is in How to connect.
What it is
A facilitator for the x402 v2 exact scheme on eip155:4663, Robinhood Chain. Payments use USDG and its EIP-3009 transferWithAuthorization method.
Each /settle response includes a receiptId. Anyone can read the receipt as JSON at pay.quotum.org/public/receipts/<receiptId>, with no key: the USDG amount, transaction hash, block, timestamps and status (pending, included, confirmed after 20 blocks, or dropped).
How to connect
1. Sign up with your payout wallet
Open pay.quotum.org/signup/ and connect a regular wallet controlled by a single key (EOA). Smart contract wallets cannot join the pilot. The wallet you connect is the wallet you get paid to.
Sign one message to accept the pilot terms and get your API key. This is a signature, not a transaction. It cannot move funds.
The message contains your wallet and payTo, the same address on both lines; chain 4663; the terms link and a fingerprint of their exact text; a one-time nonce; and issue and expiry times. It is valid for 10 minutes.
The API key is shown once. Save it before leaving the page.
2. Keep the key on your server
Send the key as a Bearer token in the Authorization header on /verify and /settle. Never put it in a page buyers load.
3. Connect your x402 v2 seller
Point your seller at https://pay.quotum.org. Register eip155:4663 with the exact EVM scheme. Set price.amount to an integer string in USDG atomic units: 1000000 means 1 USDG because USDG has 6 decimals. Set payTo to your signup wallet.
Save this middleware as quotum-payment.mjs. It uses @x402/express, @x402/core and @x402/evm and charges 1 USDG for GET /paid.
import { paymentMiddleware, x402ResourceServer } from '@x402/express';
import { HTTPFacilitatorClient } from '@x402/core/server';
import { ExactEvmScheme } from '@x402/evm/exact/server';
export function quotumPayment({ apiKey, payTo }) {
const headers = { Authorization: `Bearer ${apiKey}` };
const facilitator = new HTTPFacilitatorClient({
url: 'https://pay.quotum.org',
createAuthHeaders: async () => ({
verify: headers, settle: headers, supported: {},
}),
});
const server = new x402ResourceServer(facilitator)
.register('eip155:4663', new ExactEvmScheme());
return paymentMiddleware({ 'GET /paid': {
accepts: {
scheme: 'exact', network: 'eip155:4663', payTo,
maxTimeoutSeconds: 60,
price: {
asset: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168',
amount: '1000000', // 1 USDG, 6 decimals
extra: {
name: 'Global Dollar', version: '1',
assetTransferMethod: 'eip3009',
},
},
},
description: 'paid resource', mimeType: 'application/json',
} }, server);
}In your existing Express app, import quotumPayment from ./quotum-payment.mjs and add the middleware before the paid route. Set QUOTUM_API_KEY to your saved key and QUOTUM_PAY_TO to your signup wallet.
import { quotumPayment } from './quotum-payment.mjs';
app.use(quotumPayment({
apiKey: process.env.QUOTUM_API_KEY,
payTo: process.env.QUOTUM_PAY_TO,
}));
app.get('/paid', (_req, res) => res.json({ paid: true }));4. After signup, make a free test call
/verify checks a payment and moves no money. Set KEY to the API key from signup first.
curl https://pay.quotum.org/verify \
-H "Authorization: Bearer $KEY" \
--json @payment.jsonpayment.json holds x402Version 2, the buyer's paymentPayload and your paymentRequirements, paid to your wallet.
The public /supported endpoint needs no API key.
5. Tell your buyers to allow USDG
Stock x402 clients do not list USDG on Robinhood Chain yet. Buyers add it to allowedAssets; sellers price in atomic USDG, as in step 3. Without it, @x402/fetch refuses to sign it, so no payment reaches you.
Buyer code with @x402/fetch and @x402/evm. account and publicClient are the buyer's viem account and a public client on chain 4663. The cap below is 5 USDG per payment, the T1 limit.
import { wrapFetchWithPayment, x402Client } from '@x402/fetch';
import { ExactEvmScheme } from '@x402/evm/exact/client';
import { toClientEvmSigner } from '@x402/evm';
const client = new x402Client()
.register('eip155:4663', new ExactEvmScheme(
toClientEvmSigner(account, publicClient),
))
.setSpendControls({
allowedAssets: [{
network: 'eip155:4663',
asset: '0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168', // USDG
maxAmountPerPayment: '5000000', // 5 USDG, 6 decimals
}],
});
const fetchWithPayment = wrapFetchWithPayment(fetch, client);Pilot terms
The pilot fee is 0. We pay the gas. The full payment amount goes to your payout address.
| Limit | New sellers (T1) | Per seller ceiling |
|---|---|---|
| Settles a day | 10 | 100 |
| Settles a month | 30 | 1,000 |
| At most per payment | 5 USDG | 50 USDG |
New sellers start with the T1 limits. Higher tiers require a verified domain and activity history. The per seller ceilings are the pilot's upper limits, not the starting allowance. All sellers share a pilot pool of 1,000 settles a month.
Your payout address must be a regular wallet (EOA), not a smart contract wallet.
We do not ask for ID. Wallets, payers and payout addresses are checked against a public sanctions list. An address that matches cannot be onboarded.
The following cannot join the pilot:
- Gambling for money
- Adult content
- Anyone on the sanctions list
The pilot end date is in the exact terms.
For support, ask in Discord #facilitator.
The exact terms you sign are at pay.quotum.org/public/terms, policy version pilot-v2.
