This forum is a read-only archive. Posting, replying and signing in are disabled.

An x402 merchant that sells a real-world good: airtime in 150+ countries for USDC

Sergo

Almost everything you can buy over x402 today is another API response. I built one that
delivers a physical-world good instead: mobile airtime and data top-ups in 150+ countries,
paid per order in USDC on Algorand, settled through the GoPlausible facilitator.

The interesting problem turned out not to be the payment. It is that an agent cannot take a
merchant to court. It gets one shot, cannot read a terms page, and cannot tell a good
merchant from a bad one. So the design is about making the promises checkable rather than
trusted:

  • the payment settles on chain before anything is bought;
  • a delivery that fails is refunded on chain automatically, from a separate wallet under a
    daily cap enforced in code;
  • every finished order carries an ed25519-signed receipt naming both transactions,
    verifiable offline against a published key — nothing in that check requires trusting me;
  • the delivery ledger is public, including the number that makes me look worst: stranded,
    meaning payers who were charged, received nothing, and whose refund also failed.

There is also a hosted MCP endpoint that holds no key of yours, and a Claude Code plugin and
an OpenClaw skill. The integration page below documents all three:

https://iomarkets.app/agent.md

The public delivery record:

https://iomarkets.app/v1/ledger

Built for the Global x402 Challenge. Happy to answer anything about the settlement design —
the refund and receipt paths are the parts I would most like torn apart.

Anzus_GemWallet

This is an interesting real-world use case. For someone using a mobile wallet, what would the actual checkout experience look like—from sending USDC to receiving the airtime? Keeping that flow simple seems important for wider adoption.

Sergo

Thanks, that was exactly the right question, and it’s now answered in the product.

Checkout from a mobile wallet now takes one link. An agent (or anyone) creates a pay link, for example with POST /v1/links, and sends it to the person:

  1. They open the link and see what they’re buying, where it’s delivered and the price in USDC, held for 10 minutes.
  2. They tap Connect Pera wallet and approve that exact amount in Pera. The page refuses a payment request for more than the price shown.
  3. The USDC settles on Algorand in about 3 seconds, and only then is the good bought.
  4. Airtime: the operator confirms on the page within seconds. Travel eSIM: the QR code appears, with one-tap install buttons for iPhone and Android.
  5. If delivery fails, the USDC goes back to their wallet on-chain automatically.

A top-up link can be paid by anyone, so it also works as a “top up my phone” request to family. Travel eSIMs (200+ destinations) are live now as well as airtime.

Two other additions since the first post: every delivery gets a public proof page (on-chain settlement plus a checked signed receipt), and there’s a referral share. Tag an order with your Algorand address and you earn part of the margin in USDC, paid on-chain when it’s delivered.

3-minute demo: https://youtu.be/swWKN6wK8HU
Code: GitHub - SergoVashakmadze/iomarkets-x402-checkout: Real-world checkout for AI agents: travel eSIMs and mobile top-ups paid in USDC on Algorand via x402, with on-chain refunds and signed receipts. · GitHub

Anzus_GemWallet

Thanks for the detailed update. The one-link checkout, clear price and delivery details, and automatic refund make the experience much easier to understand from a user’s perspective. It’s great to see the feedback reflected in the product.