HYREHYRE_
/ blog
[EDUCATION]Apr 19, 2026· 2 min read

x402 vs MPP — What's actually the difference?

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.

HY

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.