x402plus

March 11, 2026 · View on GitHub

The missing piece of x402. Pay for any API, from any chain, with one signature.


HTTP 402 "Payment Required" has existed since 1999. x402 finally made it real — sign a USDC transfer, attach it to your request, get the resource. No API keys. No billing. Just GET -> 402 -> sign -> 200.

x402plus takes it further. Same protocol. Same 402 flow. But now: multi-chain (EVM + Solana + Movement), gasless, with identity.

x402       GET /api -> 402 -> sign USDC transfer -> pay on-chain -> 200
x402plus   GET /api -> 402 -> sign intent        -> settle off-chain -> 200

x402plus introduces the intent scheme — a new payment method that complements x402's existing exact scheme. Both live inside the same 402 response. The client picks. The backend doesn't care.


What's wrong with x402 today

x402 works. But it hits walls fast:

ProblemWhat happens
Single-chainAPI wants USDC on Base. You have USDC on Polygon. Payment fails.
EVM-onlyNo support for Solana, Movement, or other non-EVM chains.
Gas every timeEvery payment is an on-chain tx. Someone always pays gas.
No identityYou're 0x7a3b... — no history, no reputation, no spending controls.
Dead moneyUSDC sits idle in your wallet between payments. Zero yield.
Not agent-friendlyAI agents can't manage budgets or pay autonomously across services.

How x402plus solves it

x402plus adds one concept: the GRID ID.

A GRID ID is a non-custodial smart account (Safe vault) powered by Stableyard. You deposit once. Then you sign intents — gasless, cross-chain, off-chain settled.

The scheme in 30 seconds

1. Deposit USDC to your GRID ID (any chain, one time)
2. Request a paid API
   GET /api/premium -> 402 Payment Required
3. Sign an intent (one signature, zero gas)
   Facilitator gets a quote -> you sign it -> done
4. Get the resource
   GET /api/premium + X-PAYMENT -> 200 OK

Your GRID ID balance decreases. Merchant gets paid.
No gas. No bridging. No chain switching.

What GRID ID unlocks

CapabilityHow
Cross-chain paymentsDeposit on Polygon, pay on Base, Ethereum, Arbitrum — one balance works everywhere
Zero gasSign an EIP-712 intent. Stableyard settles off-chain. 10,000 payments, zero wei spent
Yield on idle fundsDeposits earn Aave APY inside the vault. Your money works between payments
On-chain identityyourname@stableyard — not 0x7a3b.... Payment history. Reputation. Limits
Non-custodialSafe vault. Your keys. Withdraw anytime. Only signed intents can debit
Agent budgetsFund a GRID ID -> set limits -> let your AI agent pay autonomously

Three payment schemes, one 402

Every x402plus 402 response offers multiple schemes and networks. Clients choose based on what they have:

{
  "x402Version": 1,
  "accepts": [
    { "scheme": "exact",  "network": "polygon",   "payTo": "0x...",  "asset": "0x3c49..." },
    { "scheme": "exact",  "network": "solana-devnet", "payTo": "So1...", "asset": "4zMM...", "extra": { "feePayer": "..." } },
    { "scheme": "exact",  "network": "movement",  "payTo": "0x00...", "asset": "0x4d29..." },
    { "scheme": "intent", "network": "polygon",   "payTo": "0x...",  "facilitatorUrl": "https://..." }
  ]
}
exact EVMexact Solanaexact Movementintent (x402plus)
Payer needsUSDC in EVM walletUSDC SPL in PhantomUSDC.e in Movement walletFunded GRID ID
SignsEIP-3009 TransferWithAuthorizationSolana VersionedTransactionAptos BCS transactionEIP-712 Stableyard intent
SettlementOn-chain (facilitator relays)On-chain (facilitator co-signs)On-chain (facilitator relays)Off-chain (Stableyard)
GasFacilitator paysFacilitator pays (fee payer)Payer paysZero
WalletMetaMask, etc.PhantomNightly (Movement)MetaMask, etc.

Backward compatible. Any x402 client that supports exact works out of the box. Solana, Movement, and intent schemes are additive.


Get started

Backend — monetize an API in 2 lines

import { x402plus } from "@stableyard/x402plus";

app.use(x402plus("0xYourAddress", {
  "GET /api/premium":    0.10,   // \$0.10 per request
  "POST /api/generate":  5.00,   // \$5.00 per generation
}));

// Your endpoint — unchanged. Only reached after payment.
app.get("/api/premium", (req, res) => {
  res.json({ data: "premium content" });
});

No facilitator URL. No USDC addresses. No chain config. Just a wallet address and dollar amounts.

Multi-chain support

Add Solana and/or Movement alongside EVM:

app.use(x402plus("0xYourEVMAddress", {
  "GET /api/premium": 0.10,
}, {
  defaultChain: "polygon",
  solana: { payTo: "YourSolanaAddress" },
  movement: { payTo: "0x00...YourMovementAddress" },
}));

One facilitator. One endpoint. Payments from MetaMask, Phantom, and Nightly all work.

Custom facilitator

Use any standard x402 facilitator for exact EVM payments:

app.use(x402plus("0xYourAddress", routes, "https://x402.org/facilitator"));

Or run your own — see GUIDE.md.

Client — pay for an API

import { withPayments } from "@stableyard/x402plus/client";

const paidFetch = withPayments(window.ethereum);
const res = await paidFetch("https://api.example.com/premium");

See GUIDE.md for complete integration with EVM, Solana, Movement, and Intent examples.

Run the demo

git clone https://github.com/stableyardfi/x402plus
cd x402plus

# Terminal 1 — Facilitator
cd facilitator && npm install && npm run dev

# Terminal 2 — API server
cd backend && npm install && npm run dev

# Terminal 3 — Frontend
cd frontend && npm install && npm run dev

GRID ID lifecycle

One-time setup. Then every payment is just sign and go.

 Create      ->  Activate   ->  Deposit    ->  Pay
 GRID ID         Vault          USDC           Intent
 POST            Sign Safe      Send USDC      Sign EIP-712
 /account        module tx      to deposit     per request
                                address

<--- one-time setup ---------------------->    <-- every payment

Networks

NetworkExactAssetIntentWallet
EthereumYesUSDCYesMetaMask
PolygonYesUSDCYesMetaMask
BaseYesUSDCYesMetaMask
ArbitrumYesUSDCYesMetaMask
OptimismYesUSDCYesMetaMask
SolanaYesUSDC--Phantom
Solana DevnetYesUSDC--Phantom
MovementYesUSDC.e--Nightly
Movement TestnetYesUSDC.e--Nightly

Native tokens (SOL, MOVE) supported via explicit opt-in: { solanaPrice: 0.001, movementPrice: 1.0 }.


How x402plus compares

x402x402plus
ProtocolHTTP 402HTTP 402 (extends x402)
Cross-chainNoYes — any chain
Multi-VMEVM onlyEVM + Solana + Movement
GasPer paymentZero (intent) / Facilitator pays (exact)
YieldNoAave APY
Identity0x...GRID ID
CustodySelf (wallet)Self (Safe vault)
Backend setupComplex2 lines
x402 compatible--Yes

Architecture

                      x402plus (scheme)

  exact (EVM)     exact (Solana)     exact (Movement)
  EIP-3009        TransferChecked    USDC.e / MOVE
       |                |                 |
       +--------+-------+---------+-------+
                |
         intent (x402plus)
         EIP-712 Stableyard settlement
                |
   facilitator.stableyard.fi
   (single URL — all chains)

   Internally routes per chain:
     EVM      -> native or proxy
     Solana   -> native or proxy
     Movement -> native or proxy

     Stableyard
     GRID ID - Settlement - Yield - Identity

x402plus is the scheme — open, composable, anyone can implement it.

Stableyard is the infrastructure — GRID ID vaults, cross-chain settlement, yield, identity.


Project structure

packages/x402plus/   SDK — middleware, types, facilitator client, multi-chain support
facilitator/         Reference facilitator (single URL, routes all chains)
backend/             Demo API server
frontend/            Demo UI with EVM + Solana + Movement wallets + GRID ID flow

Environment Variables

Backend

PAY_TO=0xYourEVMAddress

# Optional
NETWORK=base                    # default chain (default: base)
SOLANA_PAY_TO=YourSolanaAddress  # enables Solana support
MOVEMENT_PAY_TO=0xYourMoveAddr   # enables Movement support

Facilitator

STABLEYARD_BASE_URL=https://api.stableyard.fi
STABLEYARD_APP_ID=your-app-id
STABLEYARD_APP_SECRET=your-app-secret
FACILITATOR_PRIVATE_KEY=0x...

# Optional chain proxies
SOLANA_PROXY_URL=https://x402.org/facilitator
EVM_PROXY_URL=https://x402.org/facilitator

Learn more

  • GUIDE.md — Integration guide for backend and frontend developers
  • x402.org — The base x402 protocol
  • Stableyard — GRID ID infrastructure
  • Safe — Smart account standard

License

Apache-2.0


x402plus — extending x402 with cross-chain intents
Settlement infrastructure by Stableyard