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
Example receipt: 0.01 USDG, confirmed after 20 blocks, gas paid by us.

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.json

payment.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.

Settlement limits
LimitNew sellers (T1)Per seller ceiling
Settles a day10100
Settles a month301,000
At most per payment5 USDG50 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.

Free pilot, gas paid by usSign up