The open protocol for machine-to-machine payments.
- IETF Draft: the core specification
- Full Rendered Spec: all specs including methods and extensions
- Learn more
The Machine Payments Protocol (MPP) is an open standard for machine-to-machine payments, co-authored by Tempo and Stripe. Paying for an internet resource, such as an API call, a dataset, or a unit of compute, still typically requires an account, API key, or billing relationship set up in advance. MPP lets any client pay as part of the HTTP exchange using the native 402 Payment Required status code.
Primary use cases include agentic payments, such as an AI agent paying per API call, machine-to-machine commerce, and usage-based billing without pre-provisioned accounts.
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
- Client requests a protected resource
- Server responds with
402 Payment Requiredand aWWW-Authenticate: Paymentchallenge describing what payment is needed - Client fulfills the payment (off-band, via the specified payment method)
- Client retries the request with an
Authorization: Paymentcredential proving payment - Server validates the credential and grants access
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.
The specification is modular, separating stable protocol mechanics from evolving payment ecosystems:
- Core: HTTP 402 semantics, headers, IANA registries.
- Intents: Abstract payment patterns such as charge, authorize, and 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.
The MPP repository contains the mpp.dev documentation and service directory. SDKs are available for TypeScript, Python, Rust, Go, and Ruby.
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.
Specifications: CC0 1.0 Universal (Public Domain)
Tooling: Apache 2.0 or MIT, at your option