{"scheme":"MPP","name":"Machine Payments Protocol (MPP)","summary":"A method-agnostic 'Payment' HTTP authentication scheme co-authored by Tempo and Stripe: one challenge format for cards, stablecoins, Lightning and more, with charge, session and subscription intents.","status":"Draft: draft-ryan-httpauth-payment-01 (March 2026) is an individual Internet-Draft with no formal IETF standing.","settlement":"Depends on the method — Tempo, Stripe, card, Lightning, EVM, Solana and others are drafted.","challenge":{"where":"WWW-Authenticate header","format":"Payment id=\"…\", realm=\"…\", method=\"…\", intent=\"…\", request=\"<base64url JSON>\" [, expires, digest, description, opaque]"},"credential":{"where":"Authorization header","format":"Payment <base64url, unpadded, JSON { challenge, source?, payload }>"},"receipt":{"where":"Payment-Receipt header","format":"base64url JSON { status: \"success\", method, timestamp, reference }"},"notes":["The credential's `challenge` must echo every challenge parameter unchanged, including `id`.","`request` is JCS-canonicalized JSON encoded as base64url without padding.","Clients must not submit credentials for a challenge past its `expires`.","`description` is display-only; clients must not rely on it for verification.","Servers may offer several Payment challenges, one per method."],"flow":["Client requests the resource.","Server replies 402 with one or more WWW-Authenticate: Payment challenges.","Client pays through the named method, following the decoded request.","Client retries with Authorization: Payment <credential>.","Server verifies, serves the resource, and may return Payment-Receipt."],"example":"HTTP/1.1 402 Payment Required\nCache-Control: no-store\nWWW-Authenticate: Payment id=\"x7Tg2pLqR9mKvNwY3hBcZa\",\n    realm=\"api.example.com\",\n    method=\"example\",\n    intent=\"charge\",\n    expires=\"2025-01-15T12:05:00Z\",\n    request=\"eyJhbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVU0QiLCJyZWNpcGllbnQiOiJhY2N0XzEyMyJ9\"","specs":[{"title":"draft-ryan-httpauth-payment (IETF)","url":"https://datatracker.ietf.org/doc/html/draft-ryan-httpauth-payment"},{"title":"Payment auth specifications","url":"https://paymentauth.org/"},{"title":"tempoxyz/mpp-specs (GitHub)","url":"https://github.com/tempoxyz/mpp-specs"}],"implementations":[{"id":"machine-payments-protocol","name":"Machine Payments Protocol (MPP)","roles":["pay","charge"],"kind":"protocol","url":"https://402mcp.org/solutions/machine-payments-protocol"},{"id":"stripe-machine-payments","name":"Stripe Machine Payments","roles":["charge"],"kind":"platform","url":"https://402mcp.org/solutions/stripe-machine-payments"},{"id":"lightning-labs-aperture","name":"Aperture","roles":["charge"],"kind":"gateway","url":"https://402mcp.org/solutions/lightning-labs-aperture"}]}