Why USDC carries almost all x402 payments

RoundhouseReviewed .md
In short

USDC carries most x402 payments because it implements EIP-3009, the function that lets a holder authorise a transfer with a signature instead of a transaction. Without that, a buyer needs the chain's native token and must broadcast itself, which defeats the design. The protocol is asset-agnostic; the set of assets that work this way is small.

Contents
  1. The common explanation is wrong
  2. What the protocol needs from an asset
  3. So is x402 a USDC protocol?
  4. What about non-EVM chains?
  5. What follows for pricing and accounting?
  6. Frequently asked questions
  7. Where to check this yourself

The common explanation is wrong#

The usual answer is that USDC dominates because it is the most trusted regulated stablecoin, or because Coinbase built x402 and USDC is Circle's.

Neither holds up. Plenty of large, trusted, widely-held stablecoins carry almost no x402 volume. The issuer relationship explains the launch chain better than it explains the asset.

The real reason is a function signature.

What the protocol needs from an asset#

An x402 buyer signs; it does not broadcast. For that to work, the token has to let somebody else submit a transfer the holder authorised off-chain.

On EVM chains that function is EIP-3009's TransferWithAuthorization. A token that implements it can be paid gaslessly in one signature. A token that does not cannot, and the fallbacks are materially worse.

Asset capabilityWhat the buyer has to do
EIP-3009Sign once. No native token needed
EIP-2612 permit onlySign a permit, then a separate transfer is needed. More steps, more failure modes
NeitherHold the native token and broadcast a transaction itself

That bottom row is not a degraded experience. It removes the property the whole design exists for. An agent that must hold and monitor a second asset on every chain it operates on is back to the operational burden x402 was built to delete.

Note

This is the question to ask of any token being proposed for an agent payment flow: can a holder authorise a transfer without holding the chain's native token? Everything about the issuer, the reserves and the regulatory posture matters for other reasons and is secondary to this one.

So is x402 a USDC protocol?#

No, and the distinction matters for anyone building.

The specification takes an asset field containing a contract address. It has no opinion about which. A seller can advertise any asset and a buyer can pay in it if the signing path works.

What is not neutral is the set of assets that support that path. It is small, and USDC is the one with the broadest chain coverage within it. The dominance is a consequence of a technical constraint, not of the protocol favouring anything.

This matters because the constraint can change. A stablecoin that adds EIP-3009 becomes viable immediately. The current distribution is a snapshot of which assets implemented one function, not a permanent fact.

What about non-EVM chains?#

Same principle, different mechanism.

Solana has no EIP-3009 because that is an Ethereum standard. The equivalent property is whether an SPL token flow lets a relayer pay the fee on a holder-authorised transfer. It does, and USDC on Solana is widely used for the same reason it is on EVM chains: it is the dollar asset with the deepest balances where the flow works.

The practical rule for a seller is that asset choice is per chain rather than global. You do not pick an asset and then a chain; you pick a pair, and the pair either supports gasless authorisation or it does not. Stablecoin choice compared covers the selection.

What follows for pricing and accounting?#

Three things worth setting up correctly the first time.

Store the asset, not a normalised dollar figure. If you ever accept more than one asset, record which asset and which amount per settlement. Normalising at write time destroys the information you need when you want to re-derive a figure later or explain a discrepancy.

Remember the units. Amounts are in the asset's smallest unit. USDC has six decimals, so a cent is 10000. Reading that as dollars is a factor-of-a-million error that produces plausible numbers rather than crashes, and it propagates into every aggregate downstream.

Watch for transfer-fee tokens. Some tokens take a fee on transfer, so the amount received is not the amount sent. That interacts badly with exact pricing, where the seller expects a specific amount to arrive.

Frequently asked questions#

Can I accept a token that only has permit?#

You can, with more work on both sides and a client that implements the permit path. Expect lower buyer compatibility, since most x402 clients implement the EIP-3009 flow and not much else.

Does accepting only USDC lose me buyers?#

Almost none today, because that is what buyers hold. The risk is forward-looking: a single-asset dependency is a dependency, and if balances shift you want your terms to be able to shift with them.

Why do amounts use smallest units rather than decimals?#

Because floating-point decimals in a payment protocol cause rounding bugs that lose money. Integers in smallest units are exact. The cost is that every integration has to get the decimal places right, and some do not.

Is there depeg risk in holding USDC to pay with?#

There is depeg risk in holding any stablecoin, and it is negligible over the seconds an x402 exchange takes. It is a real consideration for a treasury held for months, which is a question about where an agent keeps its float rather than about what it pays in.

Does the asset affect how visible my payments are?#

Not directly. Any on-chain settlement is public. What affects visibility is the chain, because indexer coverage is uneven, and an unindexed settlement is public and invisible at the same time.

Where to check this yourself#

/transactions records the asset and amount for each settlement rather than a normalised figure, so the real distribution of assets in use is visible rather than assumed. /services shows which assets indexed endpoints are actually asking for in their published terms.

Reading this as an agent?

Every page here has a markdown twin at the same URL plus .md. Same words, no navigation, no markup to strip. And the settlement record this article describes is a live index you can query rather than a claim you have to take on trust.

  • GET https://roundhouseai.io/resources/why-usdc-dominates-x402.mdthis page, as markdown
  • GET https://roundhouseai.io/llms.txtevery surface on roundhouseai.io
  • GET https://api.roundhouseai.io/v0the index: endpoints and schema
  • GET https://api.roundhouseai.io/v0/test/x402$0.01 over x402, and it mints your own key with no account

/docs/api has the limits and the SQL surface. /v0/account, /v0/endpoints and the capability layer answer without a key.

Read next