Skip to content

solana-foundation/mpp-specs

 
 

Repository files navigation

Machine Payments Protocol (MPP)

The open protocol for machine-to-machine payments.

Overview

MPP lets businesses offer services to agents, apps, and humans via a standard HTTP control flow. The protocol defines a payment-method agnostic core alongside extensions for specific payment method flows, discovery, and identity.

sequenceDiagram participant Client participant Server Client->>Server: GET /resource Server-->>Client: 402 Payment Required<br/>WWW-Authenticate: Payment ... Note over Client: Client fulfills payment challenge Client->>Server: GET /resource<br/>Authorization: Payment credential Server-->>Client: 200 OK 
Loading
  1. Client requests a protected resource
  2. Server responds with 402 Payment Required and a WWW-Authenticate: Payment challenge describing what payment is needed
  3. Client fulfills the payment (off-band, via the specified payment method)
  4. Client retries the request with an Authorization: Payment credential proving payment
  5. Server validates the credential and grants access

Design Principles

MPP is designed to be simple, secure, and performant, holding the following design principles as guides:

  • Extensible core: Minimal protocol designed for safe extension.
  • Network agnostic and multi-rail: Designed to support a number of payment networks and settlement layers, including bank rails, credit cards, and stablecoins.
  • Currency agnostic: No implicit advantages for any currency or asset.
  • Durable by design: All designs follow web standards and are designed for security and replay protection as first class concerns.

See STYLE.md for the full design principles and RFC writing conventions.

Architecture

The specification is modular, separating stable protocol mechanics from evolving payment ecosystems:

  • Core: HTTP 402 semantics, headers, IANA registries.
  • Intents: Abstract payment patterns—charge, authorize, subscription. Define what kind of payment without specifying how.
  • Methods: Concrete implementations for specific networks (Tempo, Stripe, ACH).
  • Extensions: Optional protocol additions, such as discovery and identity.

Contributing

The Machine Payments Protocol specification is currently maintained by the following organizations:

We welcome contributions from a wide variety of individuals and organizations.

See CONTRIBUTING.md for building instructions and contribution guidelines.

License

Specifications: CC0 1.0 Universal (Public Domain)

Tooling: Apache 2.0 or MIT, at your option

About

Specifications for the Machine Payments Protocol - powered by the "Payment" HTTP authentication scheme

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 59.7%
  • HTML 22.0%
  • Shell 13.7%
  • Dockerfile 2.6%
  • Makefile 1.9%
  • Ruby 0.1%