Machine Payments Protocol — Solana settlement adapter and CPI primitive.
MPP is a protocol co-authored
by Stripe and Tempo Labs (IETF draft) that formalizes HTTP 402 Payment
Required for machine-to-machine payments. Flow:
402 with a WWW-Authenticate: Payment challenge.Authorization: Payment header.Payment-Receipt header.MPP is settlement-agnostic. Production methods today are Tempo, Stripe (card/wallet), and Lightning. This project adds Solana.
This repo (mppsol/spec) holds the specification. Reference implementations:
| Repo | Purpose |
|---|---|
mppsol/core |
Shared types, receipt format, session schema. |
mppsol/server |
HTTP middleware (Hono, FastAPI) emitting MPP 402 and verifying Solana settlement. |
mppsol/agent |
Client SDK (TypeScript, Python) for agents holding Solana USDC. |
mppsol/cpi |
Solana program exposing MPP semantics as a CPI target. |
spec/wire.md — Solana-specific encoding of the MPP
Authorization and Payment-Receipt headers.spec/session.md — On-chain session program: PDA
layout, authorization caps, debit semantics, revocation.spec/settlement.md — One-shot vs. session settlement, confirmation
semantics, reorg handling (none in practice on Solana mainnet).spec/cpi.md — CPI interface: how a Solana program invokes MPP for an
off-chain resource and surfaces the receipt as a verifiable account.spec/security.md — Replay protection, session expiry, oracle/feed
pricing risks, multi-signer agents.Specification stage. v0.1 freeze and reference implementations targeted Q3 2026. RFC-style. Breaking changes expected before v1.
sendaifun/solana-mpp is an
existing experimental Solana adapter for MPP — HTTP server middleware
plus one-time charges and prepaid sessions, with in-memory storage and
localnet examples. MPP.sol differs in two ways:
MPP.sol implements the MPP wire protocol as defined by Stripe and Tempo Labs. We track the IETF draft and intend to propose a Solana settlement method registration once the spec stabilizes.
Issues and discussion welcome. The spec is the highest-leverage place to contribute today; implementation work begins after v0.1 freeze.
Maintained by psyto. Licensed under Apache-2.0.