Loomal

How to Handle Multi-Currency Pricing for x402 price in dollars, settle in tokens.

x402 can advertise more than one way to pay. Whether you should is a different question — how to think about USDC, other stablecoins, and other chains without making accounting your second job.

Sellers coming to x402 from traditional payments often ask the multi-currency question early: should I accept stablecoins besides USDC, or settle on chains besides Base? The protocol allows it — a 402 response can offer several payment options side by side — but allowing and advising are different things.

The short version: keep one canonical price in dollars, settle in USDC on Base by default, and add alternatives only when a concrete buyer asks for them. Here is the reasoning, plus the mechanics for when you do expand.

Rule one: one canonical price, denominated in USD

Whatever you accept, your price should be a single dollar figure — $0.02 per call, not '0.02 USDC or equivalent'. Dollar-pegged stablecoins make this nearly free to honor: the USD price and the USDC amount are the same number, so quoting, accounting, and repricing stay one-dimensional.

The moment you maintain separate prices per currency, you own an exchange-rate process and a reconciliation burden. For per-call amounts measured in cents, that overhead can exceed the revenue it manages. Derive every settlement amount from the one USD price at quote time instead.

Why USDC on Base is the default, not just a default

x402's center of gravity as of mid-2026 is USDC settling on Base: facilitator support is deepest there, settlement clears in about two seconds at negligible fees, and agent wallets are overwhelmingly funded in USDC first. Loomal's marketplace settles this way — per-call prices from $0.01, paid before your handler runs, with Ed25519-signed receipts.

Choosing the default rail is therefore not a limitation you work around; it is interoperability. Every x402-capable agent can pay USDC on Base. Each additional option serves a progressively smaller slice of buyers.

How x402 expresses multiple options

Mechanically, the 402 response carries a list of acceptable payment requirements, each specifying scheme, network, asset, amount, and payee. The agent picks one it can satisfy, signs, and retries. A server offering mainnet payment plus a testnet lane for integration testing looks like this:

402-response.json
{
  "x402Version": 1,
  "accepts": [
    {
      "scheme": "exact",
      "network": "base",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "maxAmountRequired": "20000",
      "payTo": "0xYourWallet",
      "resource": "https://mcp.example.com/mcp",
      "description": "$0.02 per tool call, USDC on Base"
    },
    {
      "scheme": "exact",
      "network": "base-sepolia",
      "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "maxAmountRequired": "20000",
      "payTo": "0xYourWallet",
      "resource": "https://mcp.example.com/mcp",
      "description": "Testnet lane for integration testing"
    }
  ]
}

The real costs of each extra currency or chain

Every entry you add to that list must be verifiable and settleable by your facilitator — check its documentation before promising anything. Beyond support, each option adds: a balance in another asset or on another chain to sweep and account for, a separate line in revenue reporting, and for non-USD stablecoins (EURC and similar), genuine FX exposure between quote and your books.

Depeg risk is the quiet one. A dollar price settled in a dollar-pegged token is clean; accepting a long tail of smaller stablecoins means underwriting each issuer's peg for the duration you hold the asset. For cents-per-call revenue, that diligence rarely pays for itself.

A practical policy

Launch with USDC on Base only, plus a testnet lane while you integrate. Revisit when one of two signals appears: a specific buyer with real volume asks for another rail, or your facilitator ships first-class support for an asset your audience demonstrably holds. Expansion driven by hypothetical demand just multiplies your accounting surface.

On Loomal this policy is the path of least resistance: your listing carries one USD per-call price (minimum $0.01, repriced in a single field), settlement is USDC on Base to your wallet, and the fee — 5% on settled transactions — is currently waived.

FAQ

Can one x402 endpoint accept several stablecoins at once?

Yes — the 402 response's accepts list can carry one entry per asset and network, and the agent chooses one it can pay. The constraint is practical, not protocol-level: every option must be supported by your facilitator and is another balance you account for.

Do I lose sales by only accepting USDC on Base?

Very few, as of mid-2026. Agent wallets built for x402 are funded in USDC on Base first because that is where facilitator and tooling support is deepest. A buyer who genuinely needs another rail will tell you — which is exactly the right trigger to add it.

How should I handle non-dollar stablecoins like EURC?

Treat them as an FX decision, not a payments feature. Keep your canonical price in USD, convert at quote time if you choose to accept them, and recognize you carry exchange-rate exposure while holding the asset. For cents-level per-call prices, most sellers reasonably skip this.

Does Loomal support multi-currency pricing?

Loomal listings carry a single USD per-call price and settle in USDC on Base — deliberately, since that keeps pricing one field and accounting one ledger. If your buyers need other rails, you can run additional payment options on your own endpoint alongside the listing.

Price once, in dollars.

Set a USD per-call price and let USDC on Base handle the settlement.

Open the Loomal console