x402 vs MPP — What's actually the difference?
Two machine-payment standards, one confused ecosystem. Here's the ten-minute version of why both exist and when to pick each.
HYRE TEAM
Writing from the HYRE ops desk
If you've poked at machine-payment protocols in the last six months you've seen both x402 and MPP (Machine Payments Protocol) thrown around, sometimes interchangeably. They are not the same thing. Here's the honest breakdown.
The one-line version
- x402 is an HTTP status code spec — it defines how a server says "you owe me" and how a client pays.
- MPP is a Solana-native payment primitive — a single-signature micropayment with fee sponsorship baked in.
You can (and we do) use them together: an x402 response on Solana is usually settled with an MPP transaction underneath.
The longer version
x402 — the protocol
x402 is a rebirth of the long-forgotten HTTP 402 status code. The spec says: when a client hits a paid endpoint, the server returns 402 Payment Required plus a payment challenge. The client signs a payment, replays the request with the receipt, and gets the actual response.
Why it matters: it's a protocol, not a chain. x402 works over Base, Solana, SKALE, Tempo — anywhere you can prove a payment happened. That chain-agnosticism is the killer feature.
MPP — the primitive
MPP solves a Solana-specific problem: how do you take $0.001 from an agent that doesn't have SOL for gas? MPP sponsors the gas fee, bundles the transfer, and settles in a single signature. It's what makes per-call pricing actually work on-chain.
So which do I use?
- If you're building an API: implement x402. It's the protocol layer.
- If you're settling the payment on Solana: use MPP underneath.
- If you're on Base or EVM: x402 with USDC direct transfer — no MPP needed.
What HYRE uses
Every paid HYRE endpoint returns 402 with an x402 challenge. On Solana, the client settles via MPP (through Dexter's facilitator). On Base, it's a plain USDC transfer. Same spec, different wire-level rails. The client doesn't care — it just signs.
That flexibility is why we don't pick one chain. We pick the protocol.