The first real customer-facing x402 settlement went through the self-serve proxy flow on 2026-05-31. A live third-party API (CoinGecko BTC/ETH price feed) is now wrapped behind suverse-pay's /v1/proxy/... endpoint, paid per call in USDC on Base mainnet, with on-chain settlement verified end-to-end.
This release marks the transition from "wired up against documented spec" to "settling real money for real callers."
Milestone — first customer settle
- 7 successful on-chain settlements on Base mainnet through the CoinGecko proxy.
- First settled tx hash:
0xded439c578f10c3b606264e7eec2ff691684d2c0a939b3d02cc86e0826394009— block 46709549. - End-to-end demonstrated using the published
@suverselabs/x402-client@0.1.0buyer SDK, not a workspace-symlinked dev build. - Settled via the
coinbase-cdpadapter; CDP facilitator integration verified. - Payer balance moved $2.7465 → $2.6765 (−$0.07 over 7 settles), platform fee 30 bps withheld per row.
- Live endpoint:
https://proxy.suverse.io/v1/proxy/reskey_1166628d/prices
Network status
| Network | Mainnet | Verified by real settle |
|---|---|---|
| Base (Coinbase L2) | ✅ live | ✅ this release |
| Solana | ✅ live | ⏳ wired, not yet exercised by customer |
Cosmos · Noble (noble-1) |
✅ live | ⏳ wired, not yet exercised by customer |
| SKALE Base | ⏳ scaffolded | testnet-only smoke; mainnet routing not yet productized |
What shipped since v0.4.0
Self-serve proxy flow (the headline path)
feat(proxy)— wrap any HTTPS API behind a paid endpoint, the core proxy app.fix(proxy)— header hygiene on upstream call + downstream response. Stripsx-forwarded-*/x-real-ip/ nginx infra headers on the upstream call (Cloudflare-fronted APIs like CoinGecko 403'd otherwise) and stripscontent-encoding+content-lengthfrom upstream responses (undici was double-gunzipping and aborting the socket).fix(coinbase-cdp)— persist EIP-712 domain extras for EVM USDC capabilities. CDP's/supportedoften omitsextrafor EVM kinds; staticEVM_USDC_EIP712_DOMAINSfloor now backs the adapter so 402 challenges always carry the EIP-712 domain.feat(proxy)— upstream health-probe pipeline (HC1–HC8): probe before 402 challenge, return 503upstream_unavailableon failure,HEALTH_CHECK_TIMEOUT_MSenv override, full test coverage.fix(proxy)— per-VM scheme in 402 challenges so Cosmos challenges accept on the buyer side.
Buyer SDK + MCP
feat(packages)—@suverselabs/x402-client@0.1.0published. Unified fetch-shaped buyer SDK covering 21 EVM chains, Solana, Cosmos Noble, and TRON gasfree (TIP-712 PermitTransfer). 165 tests; Cosmos + Solana mainnet settles proven on the wire-format probe.feat(mcp)—@suverselabs/x402-mcp@0.0.1published. stdio MCP server for Claude Desktop / Cursor withcatalog_search,catalog_compare,buy_and_call,list_recent_purchases.
Dashboard, catalog, buyer-mode
feat(dashboard)— buyer-mode foundation (Seller/Buyer mode toggle, separate landing shell), agent API keys (sup_agent_<32>), per-chain wallet registration with on-chain validation, spending-limits accounting model, paginated payments table + CSV export, spend overview cards.feat(catalog)— auto-create listing on proxy creation, slug-based detail routes with How-to-use code snippets, admin moderation queue gated byADMIN_EMAILS,sitemap.xml+robots.txt+/.well-known/x402for ecosystem crawlers.feat(mobile)— PWA manifest + icons, hamburger drawer + responsive header, bottom-nav tab bar in PWA standalone mode, responsive Settles table, iOS safe-area + tap polish (Tasks M1–M5).feat(dashboard)— welcome tour + 3-step onboarding tracker, OAuth profile capture, in-app Help page, inline tooltips on high-value form fields, success banner on proxy detail, empty-state CTAs.
Protocol surface
feat(adapter-mpp)— Tempo Moderato direct-RPC verify+settle, MPPPOST /mpp/chargeroute,payments.protocol+mpp_method/intentcolumns. Stripe's Machine Payments Protocol now alongside x402 in the same gateway.feat(signer)— SKALE Base mainnet + Sepolia chain entries (Bridged USDC v2, EIP-3009 typehash verified on-chain), routing config + facilitator wiring for SKALE Base via PayAI. Mainnet smoke still pending.
Stability
fix(mobile)— drawer panelcreatePortalout ofbackdrop-blurcontaining block; stop draggingpginto client bundle via the async header.fix(dashboard)— qualify proxySELECTcolumns to avoid 42702 in JOIN; admin bypass for key + probe rate limits.
Try it
```bash
Pay-per-call against the live customer endpoint with the published SDK
npm install @suverselabs/x402-client
Browse the catalog
open https://suverse-pay.suverse.io/catalog
Wrap your own HTTPS API behind a paid endpoint
open https://suverse-pay.suverse.io/dashboard
```
Links
- Dashboard: https://suverse-pay.suverse.io/dashboard
- Public catalog: https://suverse-pay.suverse.io/catalog
- Facilitator: https://facilitator.suverse.io
- Buyer SDK: https://www.npmjs.com/package/@suverselabs/x402-client
- MCP server: https://www.npmjs.com/package/@suverselabs/x402-mcp