# MPP — Machine Payments Protocol MPP (Machine Payments Protocol) is the open standard for machine-to-machine payments via HTTP 402. ## Quickstart - [What is MPP? Machine-to-machine HTTP 402 payments](/overview): MPP standardizes HTTP 402 for machine-to-machine payments. Learn how agents, apps, and... - [Governance](/governance): An overview of how the Machine Payments Protocol is developed, maintained, and extended - [Frequently asked questions](/faq): Answers to common questions about MPP—payment methods, settlement, pricing, security, a... - [Quickstart](/quickstart/): Get started with MPP in minutes. Protect your API with payments, connect your agent, or... - [Add payments to your API](/quickstart/server): Add payment-gated access to your API with mppx. Accept stablecoins, cards, and Bitcoin... - [Use with agents](/quickstart/agent): Connect your coding agent to MPP-enabled services. Set up a wallet to handle payment fl... - [Use with your app](/quickstart/client): Handle payment-gated resources in your app. Use the mppx client SDK to intercept 402 re... - [Machine Payments Protocol](/index): Charge for API requests, tool calls, and content with HTTP 402 payments co-developed by... ## Guides - [Build with an LLM](/guides/building-with-an-llm): Use llms-full.txt to give your agent complete MPP context. - [Accept one-time payments](/guides/one-time-payments): Charge per API call with MPP. Accept pay-per-request payments from agents, apps, and us... - [Accept pay-as-you-go payments](/guides/pay-as-you-go): Build a payment-gated API with session-based billing using mppx payment channels. Charg... - [Accept streamed payments](/guides/streamed-payments): Accept streamed payments over Server-Sent Events with mppx. Bill per token in real time... - [Create and manage subscriptions](/guides/subscription-payments): Build a subscription-gated API with MPP. Let clients authorize recurring stablecoin pay... - [Use MPP with x402](/guides/use-mpp-with-x402): Keep your x402 server or use mppx to serve native MPP and x402 clients from the same en... - [Managing agent spend](/guides/managing-agent-spend): Manage agent spend with MPP. - [Accept card payments](/guides/accept-card-payments): Accept card payments with Stripe on your MPP-enabled API. Charge Visa, Mastercard, and... - [Accept split payments](/guides/split-payments): Split a single charge across multiple recipients in one atomic transaction. Route platf... - [Accept multiple payment methods](/guides/multiple-payment-methods): Accept Tempo stablecoins, Stripe cards, and Lightning Bitcoin on a single API endpoint.... - [Create a payment link](/guides/payment-links): Create a payment link for any API endpoint. Share it anywhere—users pay directly from t... - [Monetize your MCP server](/guides/monetize-mcp-server): Add payments to your MCP server. Charge per tool call with stablecoins—no API keys or b... - [Add payments to WebMCP tools](/guides/webmcp-payments): Add payments to WebMCP tools with mppx. Let browser agents pay for actions on your webs... - [Proxy an existing service](/guides/proxy-existing-service): Put a payment gate in front of any API without changing its code. Use the mppx Proxy SD... ## Protocol - [Protocol overview](/protocol/): The Machine Payments Protocol standardizes HTTP 402 with an extensible Challenge–Creden... - [HTTP 402](/protocol/http-402): HTTP 402 Payment Required signals that a resource requires payment. Learn when and how... - [Challenges](/protocol/challenges): Create MPP Challenges that tell clients what a resource costs, which method to use, and... - [Credentials](/protocol/credentials): Verify MPP Credentials from clients and bind payment proofs to the original server-issu... - [Payment Receipts and verification](/protocol/receipts): Receipts confirm successful payment in MPP. Return them in the Payment-Receipt header s... - [Transports](/protocol/transports/): Map MPP Challenges, Credentials, and Receipts to HTTP headers, JSON-RPC messages, and W... - [HTTP transport](/protocol/transports/http): Map MPP payment flows to HTTP headers, including a separate Credential field for endpoi... - [MCP and JSON-RPC transport](/protocol/transports/mcp): Use the MCP transport to require payment for JSON-RPC tool calls while preserving MPP C... - [WebSocket transport](/protocol/transports/websocket): The WebSocket transport streams paid data over a persistent connection, with in-band vo... - [Relays](/advanced/relays): Delegate MPP payment validation and finalization to a relay service. - [Discovery](/advanced/discovery): Advertise your API's payment terms with an OpenAPI discovery document so clients and ag... - [Identity](/advanced/identity): Use MPP Credentials for access control, rate limiting, and multi-step workflows—without... - [Payment hooks](/advanced/payment-hooks): Observe MPP client and server payment lifecycles with typed SDK hooks. - [Refunds](/advanced/refunds): Return funds to clients after a charge, or let sessions refund unused deposits automati... - [Security](/advanced/security): Protect MPP server secrets and payment Credentials. Keep MPP_SECRET_KEY server-side, ne... ## Payment methods - [Intents](/intents/): Compare MPP payment intents and choose the right payment pattern for one-time, metered,... - [Charge intent for one-time payments](/intents/charge): Charge intent defines one-time payments in MPP. Use it when a client pays once for a re... - [Session intent for metered payments](/intents/session): Session intent defines metered pay-as-you-go payments in MPP. Use it when usage is freq... - [The subscription intent for recurring payments](/intents/subscription): The subscription intent defines recurring fixed payments in MPP. Use it when access ren... - [Payment methods](/payment-methods/): Compare MPP payment methods and choose the right rails for your API, app, or agent work... - [Tempo stablecoin payments](/payment-methods/tempo/): Use Tempo payment methods in MPP for stablecoin charges and low-cost payment sessions. - [Tempo charge](/payment-methods/tempo/charge): Accept one-time stablecoin payments on Tempo with signed TIP-20 token transfers. - [Sessions](/payment-methods/tempo/session): Accept pay-as-you-go stablecoin payments with Sessions. - [Tempo subscription](/payment-methods/tempo/subscription): Accept recurring stablecoin payments on Tempo with subscriptions backed by scoped acces... - [EVM payment method](/payment-methods/evm/): Use EVM payment methods in MPP to accept stablecoin payments and run x402 exact flows i... - [EVM charge payment method](/payment-methods/evm/charge): Accept one-time EVM stablecoin payments with MPP and inline x402 exact compatibility. - [Stripe payment methods](/payment-methods/stripe/): Offer Stripe Shared Payment Tokens and stablecoins from one MPP server integration. - [Stripe charge](/payment-methods/stripe/charge): Accept one-time payments through Stripe. - [Card payment method](/payment-methods/card/): Use card payments in MPP to accept traditional payment methods with encrypted network t... - [Card charge](/payment-methods/card/charge): Accept one-time card payments in MPP using encrypted network tokens and card-compatible... - [Lightning](/payment-methods/lightning/): Use Lightning payment methods in MPP for Bitcoin charges and prepaid session access. - [Lightning charge](/payment-methods/lightning/charge): Accept one-time Bitcoin payments over Lightning with BOLT11 invoices and MPP charge flows. - [Lightning session](/payment-methods/lightning/session): Accept pay-as-you-go Lightning payments with prepaid sessions and per-request billing. - [Solana](/payment-methods/solana/): Use Solana payment methods in MPP to accept SOL and SPL token payments. - [Solana charge](/payment-methods/solana/charge): Accept one-time Solana payments in MPP with signed transactions or confirmed signatures. - [Solana session](/payment-methods/solana/session): Meter pay-as-you-go Solana payments with off-chain vouchers backed by an on-chain escro... - [XRP Ledger payments](/payment-methods/xrpl/): Use the XRPL payment method in MPP to accept XRP, issued-currency and MPT charges, and... - [XRPL charge](/payment-methods/xrpl/charge): Accept one-time XRP Ledger payments in MPP, in XRP, issued currencies or Multi-Purpose... - [XRPL session](/payment-methods/xrpl/session): Accept high-frequency off-chain payments in MPP over an XRP Ledger Payment Channel, set... - [Stellar SEP-41 token payments](/payment-methods/stellar/): Use Stellar payment methods in MPP to accept SEP-41 token payments and channel-based se... - [Stellar charge](/payment-methods/stellar/charge): Accept one-time Stellar token payments in MPP using SEP-41 assets and server-side verif... - [Channel](/payment-methods/stellar/session): Accept high-frequency Stellar payments with one-way payment channels and pay-as-you-go... - [Monad](/payment-methods/monad/): Use Monad payment methods in MPP for ERC-20 token payments with push and pull settlemen... - [Monad charge](/payment-methods/monad/charge): Accept one-time Monad payments with ERC-20 transfers or ERC-3009 authorizations. - [NEAR Intents](/payment-methods/nearintents/): Use the NEAR Intents payment method in MPP for cross-chain charges: clients pay on any supported chain, merchants receive an exact amount on theirs. - [NEAR Intents charge](/payment-methods/nearintents/charge): Accept one-time cross-chain payments through NEAR Intents and settle an exact amount on... - [RedotPay payment method](/payment-methods/redotpay/): Accept MPP payments using RedotPay balance or stablecoin rails. - [RedotPay charge](/payment-methods/redotpay/charge): One-time payments with the RedotPay payment method. - [Custom payment methods](/payment-methods/custom): Build a custom MPP payment method with your own request schema, Credential format, and... ## SDKs - [SDKs and client libraries](/sdk/): Official MPP SDKs in TypeScript, Python, Rust, Go, and Ruby, plus community SDKs in oth... - [SDK features](/sdk/features): Feature parity across the official TypeScript, Python, Rust, Go, and Ruby MPP SDKs. - [Getting started](/sdk/typescript/): Use the mppx TypeScript SDK to build MPP clients, servers, middleware, and payment-awar... - [evm client method](/sdk/typescript/client/Method.evm): Sign EVM charge Credentials - [evm.charge client method](/sdk/typescript/client/Method.evm.charge): Sign EVM charge Credentials - [tempo client method](/sdk/typescript/client/Method.tempo): Register Tempo charge and session support in an MPP TypeScript client. - [Method.tempo.charge](/sdk/typescript/client/Method.tempo.charge): One-time payments - [tempo.session](/sdk/typescript/client/Method.tempo.session): Sessions client method - [tempo.session.manager](/sdk/typescript/client/Method.tempo.session-manager): Sessions manager - [Method.tempo.subscription](/sdk/typescript/client/Method.tempo.subscription): Recurring stablecoin payments - [stripe client method](/sdk/typescript/client/Method.stripe): Register Stripe charge support in an MPP TypeScript client. - [Method.stripe.charge](/sdk/typescript/client/Method.stripe.charge): One-time payments via Shared Payment Tokens - [Mppx.create](/sdk/typescript/client/Mppx.create): Create a payment-aware fetch client - [Mppx.preparePayment](/sdk/typescript/client/Mppx.preparePayment): Inspect a payment before signing - [Mppx.restore](/sdk/typescript/client/Mppx.restore): Restore the original global fetch - [Fetch.from](/sdk/typescript/client/Fetch.from): Wrap fetch with automatic MPP payments without changing global fetch. - [Fetch.polyfill](/sdk/typescript/client/Fetch.polyfill): Install a global fetch wrapper that handles MPP payments automatically. - [Fetch.restore](/sdk/typescript/client/Fetch.restore): Restore the original fetch after installing the MPP fetch polyfill. - [Transport.from](/sdk/typescript/client/Transport.from): Create a custom transport - [Transport.http](/sdk/typescript/client/Transport.http): HTTP transport for payments - [Transport.mcp](/sdk/typescript/client/Transport.mcp): MCP transport for payments - [McpClient.wrap](/sdk/typescript/client/McpClient.wrap): Payment-aware MCP client - [evm server method](/sdk/typescript/server/Method.evm): Create EVM charge Challenges - [evm.charge server method](/sdk/typescript/server/Method.evm.charge): One-time EVM payments - [tempo server method](/sdk/typescript/server/Method.tempo): Register Tempo charge and session support in an MPP TypeScript server. - [Method.tempo.charge](/sdk/typescript/server/Method.tempo.charge): One-time stablecoin payments - [Method.tempo.session](/sdk/typescript/server/Method.tempo.session): Sessions server method - [Method.tempo.subscription](/sdk/typescript/server/Method.tempo.subscription): Recurring stablecoin payments - [stripe](/sdk/typescript/server/Method.stripe): Configure Stripe SPT and stablecoin payment methods for an MPP server. - [stripe.charge](/sdk/typescript/server/Method.stripe.charge): Migrate the deprecated Stripe charge constructor to the Stripe SPT constructor. - [stripe.create](/sdk/typescript/server/Method.stripe.create): Configure Stripe SPT and stablecoin payment methods from one server integration. - [stripe.findOrCreateDepositAddress](/sdk/typescript/server/Method.stripe.findOrCreateDepositAddress): Resolve and cache a Stripe stablecoin deposit address for a payment network. - [stripe.spt](/sdk/typescript/server/Method.stripe.spt): Accept one-time Stripe payments with Shared Payment Tokens in an MPP server. - [mppx.broadcastCredential](/sdk/typescript/server/Mppx.broadcastCredential): Accept an MPP Credential from a custom transport or background workflow. - [Mppx.compose](/sdk/typescript/server/Mppx.compose): Present multiple payment options - [Mppx.create](/sdk/typescript/server/Mppx.create): Create a server-side payment handler - [Mppx.toNodeListener](/sdk/typescript/server/Mppx.toNodeListener): Adapt payments for Node.js HTTP - [mppx.validateCredential](/sdk/typescript/server/Mppx.validateCredential): Pre-check an MPP Credential without consuming payment state. - [mppx.verifyCredential](/sdk/typescript/server/Mppx.verifyCredential): Verify MPP Credentials directly in custom transports and background flows. - [Transport.from](/sdk/typescript/server/Transport.from): Create a custom transport - [Transport.http](/sdk/typescript/server/Transport.http): HTTP server-side transport - [Transport.mcp](/sdk/typescript/server/Transport.mcp): Raw JSON-RPC MCP transport - [Transport.mcpSdk](/sdk/typescript/server/Transport.mcpSdk): MCP SDK server-side transport - [mppx.session.serveWebSocket](/sdk/typescript/server/Ws.serve): WebSocket session payments - [Request.toNodeListener](/sdk/typescript/server/Request.toNodeListener): Convert Fetch handlers to Node.js - [Response.requirePayment](/sdk/typescript/server/Response.requirePayment): Create a 402 response - [machineTokenDeployments](/sdk/typescript/tempo.machineTokenDeployments): Use canonical Tempo deployments when you enable MACH-funded stablecoin charges. - [Method.tempo.renewSubscription](/sdk/typescript/server/Method.tempo.renewSubscription): Renew subscriptions outside requests - [Elysia payment middleware](/sdk/typescript/middlewares/elysia): Protect Elysia routes with MPP payment middleware. - [Express payment middleware](/sdk/typescript/middlewares/express): Protect Express routes with MPP payment middleware. - [Hono payment middleware](/sdk/typescript/middlewares/hono): Protect Hono routes with MPP payment middleware. - [Next.js payment middleware](/sdk/typescript/middlewares/nextjs): Protect Next.js route handlers with MPP payment middleware. - [x402/express.mpp](/sdk/typescript/x402/express): Add MPP payments to an existing x402 Express server without replacing its routes, facil... - [x402/hono.mpp](/sdk/typescript/x402/hono): Add MPP payments to an existing x402 Hono server while preserving its route configurati... - [x402/mcp.mpp](/sdk/typescript/x402/mcp): Add MPP payment metadata to an existing x402 MCP tool while preserving its resource ser... - [x402/next](/sdk/typescript/x402/next): Add MPP payments to existing x402 Next.js route handlers and proxies while preserving o... - [Paid API proxy server](/sdk/typescript/proxy): Put MPP payments in front of existing upstream APIs. - [BodyDigest.compute](/sdk/typescript/core/BodyDigest.compute): Compute a body digest hash - [BodyDigest.verify](/sdk/typescript/core/BodyDigest.verify): Verify a body digest hash - [Challenge.credentialHeader](/sdk/typescript/core/Challenge.credentialHeader): Resolve the HTTP field where a client sends a Payment Credential for an MPP Challenge. - [Challenge.deserialize](/sdk/typescript/core/Challenge.deserialize): Deserialize a Challenge from a header - [Challenge.from](/sdk/typescript/core/Challenge.from): Create a new Challenge - [Challenge.fromHeaders](/sdk/typescript/core/Challenge.fromHeaders): Extract a Challenge from Headers - [Challenge.fromMethod](/sdk/typescript/core/Challenge.fromMethod): Create a Challenge from a method - [Challenge.fromResponse](/sdk/typescript/core/Challenge.fromResponse): Extract a Challenge from a Response - [Challenge.fromResponseList](/sdk/typescript/core/Challenge.fromResponseList): Extract multiple Challenges - [Challenge.meta](/sdk/typescript/core/Challenge.meta): Extract correlation data from a Challenge - [Challenge.serialize](/sdk/typescript/core/Challenge.serialize): Serialize a Challenge to a header - [Challenge.verify](/sdk/typescript/core/Challenge.verify): Verify a Challenge HMAC - [Credential.deserialize](/sdk/typescript/core/Credential.deserialize): Deserialize a Credential from a header - [Credential.from](/sdk/typescript/core/Credential.from): Create a new Credential - [Credential.fromRequest](/sdk/typescript/core/Credential.fromRequest): Extract a Credential from a Request - [Credential.serialize](/sdk/typescript/core/Credential.serialize): Serialize a Credential to a header - [Expires utility functions](/sdk/typescript/core/Expires): Use Expires helpers to set relative expiration timestamps for MPP Challenges and paymen... - [Method.from](/sdk/typescript/core/Method.from): Create a payment method definition - [Method.toClient](/sdk/typescript/core/Method.toClient): Extend a method with client logic - [Method.toServer](/sdk/typescript/core/Method.toServer): Extend a method with server payment handling - [PaymentRequest.deserialize](/sdk/typescript/core/PaymentRequest.deserialize): Deserialize a payment request - [PaymentRequest.from](/sdk/typescript/core/PaymentRequest.from): Create a payment request - [PaymentRequest.serialize](/sdk/typescript/core/PaymentRequest.serialize): Serialize a payment request to a string - [Receipt.deserialize](/sdk/typescript/core/Receipt.deserialize): Deserialize a Receipt from a header - [Receipt.from](/sdk/typescript/core/Receipt.from): Create a new Receipt - [Receipt.fromResponse](/sdk/typescript/core/Receipt.fromResponse): Extract a Receipt from a Response - [Receipt.serialize](/sdk/typescript/core/Receipt.serialize): Serialize a Receipt to a string - [Store.tryClaim](/sdk/typescript/core/Store.tryClaim): Prevent duplicate payments and request replays with atomic, expiring claims. - [Html.init](/sdk/typescript/Html.init): Build custom payment UIs for browser-based 402 flows - [Custom HTML](/sdk/typescript/html/custom): Add payment link support to a custom payment method with Html.init and Method.toServer - [CLI Reference](/sdk/typescript/cli): Use the mppx CLI to make paid HTTP requests from the terminal with automatic MPP and x4... - [Python SDK](/sdk/python/): Use the Python SDK to build MPP clients and servers with typed Challenge, Credential, a... - [Core Types](/sdk/python/core): Use Python core types for MPP Challenges, Credentials, Receipts, payment requests, and... - [Python MPP client](/sdk/python/client): Use the Python client to handle HTTP 402 responses, pay with supported methods, and ret... - [Server](/sdk/python/server): Use the Python server SDK to protect FastAPI endpoints with MPP payment requirements an... - [Rust SDK for MPP](/sdk/rust/): Use the Rust SDK to build MPP clients and servers with typed Challenge, Credential, and... - [Core types](/sdk/rust/core): Use Rust core types for MPP Challenges, Credentials, Receipts, payment requests, and ve... - [Client](/sdk/rust/client): Use the Rust client to handle HTTP 402 responses, pay with supported methods, and retry... - [Server](/sdk/rust/server): Use the Rust server SDK to protect Axum endpoints with MPP payment requirements and ver... - [Go SDK](/sdk/go/): Use the Go SDK to build MPP clients and servers with typed Challenge, Credential, and R... - [Core types](/sdk/go/core): Use Go core types for MPP Challenges, Credentials, Receipts, payment requests, and veri... - [Client](/sdk/go/client): Use the Go client to handle HTTP 402 responses, pay with supported methods, and retry r... - [Server](/sdk/go/server): Use the Go server SDK to protect HTTP endpoints with MPP payment requirements and verif... - [Ruby SDK](/sdk/ruby/): Use the Ruby SDK to build MPP clients and servers with typed Challenge, Credential, and... - [Core Types](/sdk/ruby/core): Use Ruby core types for MPP Challenges, Credentials, Receipts, payment requests, and ve... - [Client](/sdk/ruby/client): Use the Ruby client to handle HTTP 402 responses, pay with supported methods, and retry... - [Server](/sdk/ruby/server): Use the Ruby server SDK to protect Rack endpoints with MPP payment requirements and ver... - [Method.from](/sdk/typescript/Method.from): Create a payment method from a definition ## Services and ecosystem - [Cloudflare Agents](/partner-integrations/cloudflare-agents): Use MPP with the Cloudflare Agents SDK. - [Official MCP SDK](/partner-integrations/mcp-sdk): Use MPP with the official TypeScript MCP SDK. - [OpenClaw](/partner-integrations/openclaw): Use the official MPP plugin to make OpenClaw HTTP requests payment-aware. - [Vercel AI SDK](/partner-integrations/vercel-ai-sdk): Use MPP with the Vercel AI SDK. - [Agentic payments](/use-cases/agentic-payments): Learn how coding agents pay for APIs autonomously with MPP. No API keys, no signup form... - [API monetization](/use-cases/api-monetization): Monetize your API with per-request payments using HTTP 402. No API keys, subscriptions,... - [Micropayments](/use-cases/micropayments): MPP makes micropayments viable with stablecoin settlement and off-chain payment session... - [Extensions](/extensions): Community-built tools and integrations for MPP - [Brand assets and downloads](/brand): Download the current MPP logo, lockup, and avatar for your product, integration, or soc... - [MPP vs x402: Agentic payment protocols compared](/mpp-vs-x402): Compare MPP vs x402 for HTTP 402 payments. Learn the protocol differences, supported payment methods, session support, and when to choose each approach. - [MPP services: APIs that accept MPP payments](/services): Browse live MPP-enabled services that accept machine-to-machine payments. Discover APIs you can pay for with stablecoins, cards, or Bitcoin. ## Blog - [MPP Blog: HTTP 402 payment protocol updates](/blog/): Updates from the MPP team on protocol development, integrations, and the future of machine payments. - [EVM and x402 support](/blog/evm-x402-support): MPP now supports generic EVM payments and x402 exact flows from one SDK. - [Go and Ruby SDKs](/blog/go-and-ruby-sdks): Two new MPP SDKs: mpp-go maintained by Tempo Labs and mpp-rb maintained by Stripe. - [mppx for agent SDKs and harnesses](/blog/mppx-agent-runtimes): New mppx hooks connect agent runtimes to paid tools and HTTP services through MPP. - [Expanding identity support in mppx](/blog/mppx-identity-support): Verify agent identity across HTTP requests and payment retries with mppx. - [Multi-method discovery](/blog/multi-method-discovery): Declare every payment method, currency, and intent for a route ahead of time. - [Payment hooks](/blog/payment-hooks): Core SDKs now expose typed payment hooks for logging, monitoring, and request context. - [Simplify MPP integrations with relays](/blog/relays): Delegate MPP payment validation and settlement without changing your application's paym... - [An improved sessions experience](/blog/sessions-improved): Pay-as-you-go API billing is now cheaper and easier to integrate. - [Subscriptions](/blog/subscriptions): Enable recurring access for paid plans, memberships, and API tiers. ## Other - [Wallets](/tools/wallet): Agent wallets for MPP -- enable your agent to pay for services. - [Page Not Found](/404)