There is one catch. The endpoint decides how it gets paid, and the x402 endpoints an agent meets typically ask for USDC on a specific network, such as Base or Solana. Your agent may hold something else: USDT on Solana, USDC on Stellar, or USDT on BNB Chain. Bridging funds before every call does not work either, because an x402 payment requirement is only valid for a few minutes, and moving money across chains usually takes longer than that.
ROZO is independent and not affiliated with any x402 seller.
Top up once, pay many times
ROZO's x402 payer splits the problem in two. You fund a ROZO balance once, with the coin you already have, on the chain you already use. After that, each x402 call to an endpoint that accepts USDC on Base is paid from that balance in seconds, inside the payment window.
If your agent can run a shell command, this is the whole integration:
- Fund the balance once. This prints a one-time deposit address; pay it from your own wallet: npx @rozoai/checkout x402 topup 20 --with usdt-solana
- Call a paid endpoint. The CLI reads the 402, ROZO signs, and the request is sent again with the payment: npx @rozoai/checkout x402 pay https://api.example.com/v1/search --method POST --body '{"q":"..."}'
- See what is left: npx @rozoai/checkout x402 balance
What happens on x402 pay
Your machine sends the request straight to the endpoint. When the 402 comes back, the CLI reads the payment requirements, keeps only the USDC on Base option, and asks ROZO to sign that one payment. It then replays your original request with the PAYMENT-SIGNATURE header and prints the response.
Each payment carries an idempotencyKey, and a retry of that payment reuses the same key, so a timeout cannot charge you twice.
No shell? The same payment runs on two core HTTP endpoints, /v1/x402/topup and /v1/x402/sign, with your agent key as a bearer token. Your agent replays its own request with the signature. The landing page shows both calls.
What protects your money
Giving an agent a wallet is a real risk, so the payer is built around narrow permissions.
- The key only spends the balance. The first top up creates an agent key that starts with ak_. It can pay from your ROZO balance and nothing else. It never touches your own wallet, ROZO never holds your wallet keys, and ROZO stores only a hash of the agent key.
- Every payment has a ceiling. By default a single payment is capped at $5 and a key can spend at most $100 per day. Both are defaults and can be adjusted per key. You can also restrict a key to a list of payTo addresses, and the CLI refuses any single payment above the limit you set with --max-usd.
- One time payments, never a subscription. Each call needs a fresh 402 from the seller and a fresh signature from ROZO. The seller never receives a standing authorization to pull more funds later.
- Your request stays yours. The paid request goes from your machine to the endpoint. ROZO never sees the request body, your headers, or the API keys you use for that service. It only sees the payment requirement it is asked to sign: who gets paid, how much, and on which network.
What you can fund with, and what gets paid
There are two legs, and they are listed separately on purpose.
Top up leg, from you to ROZO:
- USDT on Solana, BNB Chain, Ethereum or Polygon
- USDC on Solana, BNB Chain, Ethereum, Polygon, Base or Stellar
Holding a native coin or sats? You can use them to top up OpenRouter with ROZO Checkout at checkout.rozo.ai.
Payment leg, from ROZO to the x402 seller:
- Base (eip155:8453): USDC, x402 scheme exact
- Solana: coming later
Sellers are always paid in USDC, because x402 exact payments are token transfers. USDT only funds the balance; the seller is paid in USDC. If an endpoint only accepts USDC on Solana, the CLI stops with X402_UNSUPPORTED before anything is charged.
The minimum top up is $5, and the top up carries a 1% fee. Each x402 payment from the balance costs only what the seller asks. Withdrawals are not self serve yet: email hi@rozo.ai with your masked key and the amount, and the balance is sent back on the chain you choose.
Start now
The payer is live now. The landing page at checkout.rozo.ai/x402 has the three commands, the raw HTTP calls, limits and FAQ in one place. The full reference, with every error code, is on docs.rozo.ai. Agents can read the same instructions, with the safety rules and retry guidance, in checkout.rozo.ai/llms.txt and in the RozoAI/rozo-checkout-skill repository on GitHub.
Top up once with the coin you hold, and let your agent pay for the APIs it calls on its own.