Pay-per-call or recurring? When to use x402 vs subscriptions

RelAI Team
Jun 10, 2026 · 4 min read
Pay-per-call or recurring? When to use x402 vs subscriptions

We now have two ways to charge on RelAI, and builders keep asking me the same thing: which one do I use? Pay-per-call with x402, or a subscription?

It's a fair question, and the answer isn't "whichever you like better." It comes down to one thing — the shape of how your customers actually consume what you're selling.

It's not a crypto decision. It's a billing-shape decision.

Forget the on-chain plumbing for a second. The real split is the same argument SaaS companies have been having for years: metered or flat-rate. Some things are naturally billed per unit — a phone call, an API request, a GPU-second. Others are naturally billed per period — a seat, a membership, a hosted app that's just… running.

x402 is the metered side. Subscriptions are the flat-rate side. Pick the one that matches how the value is delivered, not how you wish the money showed up.

Reach for x402 when usage is spiky and one-off

x402 charges per request. The buyer signs, pays whatever you set — it can be a fraction of a cent — gets the response, and the USDC settles. No account, no commitment from either side.

That's the right model when:

  • Consumption is unpredictable. An agent might hit your endpoint a thousand times today and not at all tomorrow. A flat monthly fee either overcharges the light user or leaves money on the table with the heavy one. Metering just matches.
  • The buyer is a stranger. Someone lands on your API, needs one call, pays for one call, leaves. A subscription would be friction nobody asked for.
  • The buyer is a machine. Agents can't fill in a checkout form, but they can sign a payment per call with a service key and keep going. x402 was basically built for this — more on that in What is x402.
  • You want reach. x402 settles on Solana, Base, SKALE, Avalanche, Polygon and Ethereum, so the buyer pays from whatever wallet they already hold.
The trade-off is real: your revenue moves with usage. Good month, quiet month — you feel both. There's no clean MRR line to put on a slide.

Reach for subscriptions when access is continuous

A subscription pulls a fixed amount of USDC each period, straight to your wallet, after a single signature from the subscriber. (How that works without a bank account, and why RelAI never holds the funds, is its own post: Subscriptions, without the bank account.)

Use it when:

  • You're selling ongoing access, not discrete calls. A SaaS seat. A hosted instance. A members-only feed. The value is "it's there when you want it," and that's billed by time, not by hit.
  • You want revenue you can predict. Recurring USDC gives you an MRR number, churn you can watch, and a baseline you can plan around. The dashboard tracks it for you.
  • You want infra that reacts to payment on its own. Every charge fires a signed webhook — subscription.charged, subscription.payment_failed, subscription.canceled — so you can provision a box the moment money lands and suspend it the moment it doesn't. No nightly cron, no human in the loop.
One honest caveat. A subscription is a flat rate per period. Periods can be as short as an hour, so you can bill a VM hourly — but it's still a fixed amount, not "pay for exactly the seconds you used." If you genuinely need per-second or per-request metering, that's x402's job. Don't reach for a subscription and then try to bolt usage-metering onto it. (And for now, subscriptions are USDC on Solana — not the full multi-chain spread x402 covers.)

The quick version

If…Use
Usage is spiky, one-off, or per-unitx402
Access is continuous and you want predictable MRRSubscriptions
The buyer is an anonymous agent hitting you oncex402
You're gating a running service — app, VM, SaaS seatSubscriptions
You need Base / Avalanche / Polygon / Ethereumx402
You need infra to provision or suspend on payment eventsSubscriptions

Most products want both

Here's the part people miss: this isn't really an either/or. The two models compose, and the combination is often the best pricing you can offer.

The pattern is simple — a subscription covers a baseline, and x402 handles the overage. Picture an API where a flat monthly plan buys a generous bucket of calls, and once you blow past it you pay per call instead of getting cut off or force-upgraded into the next tier. Or a hosted app billed monthly, with heavy one-off compute jobs metered individually on top.

Your customer gets predictability for the part of their usage that's predictable, and fairness for the part that isn't. You get a stable MRR floor and upside when people lean in. Same wallet, same USDC, same dashboard — you're just charging two kinds of consumption with two tools that were each built for one of them.

Start here

You don't have to choose forever. Start with whichever matches today's usage shape, and add the other when the product asks for it.
Charge for what you sell, the way it's actually consumed. The rails finally let you.

Understand x402 before you implement

This guide uses payment primitives from the x402 standard. Read the protocol overview for a complete flow, terminology, and integration FAQ.

    Pay-per-call or recurring? When to use x402 vs subscriptions | RelAI