# MPP — Machine Payments Protocol MPP (Machine Payments Protocol) is the open standard for machine-to-machine payments via HTTP 402. - [MPP — Machine Payments Protocol](/index): MPP (Machine Payments Protocol) is the open standard for machine-to-machine payments—co-developed by Tempo and Stripe. Charge for API requests, tool calls, and content via HTTP 402. - [Page Not Found](/404) - [Brand assets and guidelines](/brand): Download official MPP logos, wordmarks, and brand assets. Guidelines for using the Machine Payments Protocol brand in your project or integration. - [Frequently asked questions](/faq): Answers to common questions about MPP—payment methods, settlement, pricing, security, and how the protocol compares to API keys and subscriptions. - [Machine Payments Protocol](/overview): MPP standardizes HTTP 402 for machine-to-machine payments. Learn how agents, apps, and services exchange payments in the same HTTP request. - [Payment methods](/payment-methods/): Available methods and how to choose one - [Protocol overview](/protocol/): The Machine Payments Protocol standardizes HTTP 402 with an extensible challenge–credential–receipt flow that works with any payment network. - [Quickstart](/quickstart/): Get started with MPP in minutes. Protect your API with payments, connect your agent, or integrate your app with MPP-enabled services. - [SDKs and client libraries](/sdk/): Official MPP SDK implementations in TypeScript, Python, and Rust. Libraries for building MPP clients and servers with full protocol support. - [Build with an LLM](/guides/building-with-an-llm): Use llms-full.txt to give your agent complete MPP context. - [Accept multiple payment methods](/guides/multiple-payment-methods): Accept Tempo stablecoins, Stripe cards, and Lightning Bitcoin on a single API endpoint. Serve a multi-method 402 Challenge and let clients choose. - [Accept one-time payments](/guides/one-time-payments): Charge per request with a payment-gated API - [Accept pay-as-you-go payments](/guides/pay-as-you-go): Build a payment-gated API with session-based billing using mppx payment channels. Charge per request with near-zero latency overhead. - [Accept streamed payments](/guides/streamed-payments): Accept streamed payments over Server-Sent Events with mppx. Bill per token in real time using Tempo payment channels for LLM inference APIs. - [Charge intent for one-time payments](/intents/charge): Immediate one-time payments - [Card payment method](/payment-methods/card/): Card payments via encrypted network tokens - [Custom payment methods](/payment-methods/custom): Build your own payment method - [Lightning](/payment-methods/lightning/): Bitcoin payments over the Lightning Network - [Stripe payment method](/payment-methods/stripe/): Cards, wallets, and other Stripe supported payment methods - [Tempo stablecoin payments](/payment-methods/tempo/): Stablecoin payments on the Tempo blockchain - [Challenges](/protocol/challenges): Server-issued payment requirements - [Credentials](/protocol/credentials): Client-submitted payment proofs - [HTTP 402 payment required](/protocol/http-402): HTTP 402 Payment Required signals that a resource requires payment. Learn when and how MPP servers return 402 with a WWW-Authenticate Challenge. - [Payment receipts and verification](/protocol/receipts): Receipts confirm successful payment in MPP. Return them in the Payment-Receipt header so clients can verify that the server accepted their Credential. - [Transports](/protocol/transports/): MPP defines transport bindings for HTTP and MCP. Learn how Challenges, Credentials, and Receipts map to headers and JSON-RPC messages. - [Use with agents](/quickstart/agent): Connect your coding agent to MPP-enabled services. Set up Tempo Wallet or the mppx SDK to handle 402 payment flows automatically. - [Use with your app](/quickstart/client): Handle payment-gated resources in your app. Use the mppx client SDK to intercept 402 responses, pay, and retry—all automatically. - [Add payments to your API](/quickstart/server): Add payment-gated access to your API with mppx. Accept stablecoins, cards, and Bitcoin in a few lines of code using the MPP server SDK. - [Python SDK](/sdk/python/): The pympp Python library - [Rust SDK for MPP](/sdk/rust/): The mpp Rust library - [Getting started](/sdk/typescript/): The mppx TypeScript library - [Card charge](/payment-methods/card/charge): One-time payments using encrypted network tokens - [Lightning charge](/payment-methods/lightning/charge): One-time payments using BOLT11 invoices - [Lightning session](/payment-methods/lightning/session): Pay-as-you-go payments over Lightning - [Stripe charge](/payment-methods/stripe/charge): One-time payments using Shared Payment Tokens - [Tempo charge](/payment-methods/tempo/charge): One-time TIP-20 token transfers - [Session](/payment-methods/tempo/session): Low-cost high-throughput payments - [HTTP transport](/protocol/transports/http): The HTTP transport maps MPP payment flows to standard HTTP headers—WWW-Authenticate for Challenges, Authorization for Credentials, and Payment-Receipt. - [MCP and JSON-RPC transport](/protocol/transports/mcp): Payment flows for AI tool calls - [Python MPP client](/sdk/python/client): Handle 402 responses automatically - [Core Types](/sdk/python/core): Challenge, Credential, and Receipt primitives - [Server](/sdk/python/server): Protect endpoints with payment requirements - [Client](/sdk/rust/client): Handle 402 responses automatically - [Core types](/sdk/rust/core): Challenge, Credential, and Receipt primitives - [Server](/sdk/rust/server): Protect endpoints with payment requirements - [CLI Reference](/sdk/typescript/cli): Built-in command-line tool for paid HTTP requests - [Method.from](/sdk/typescript/Method.from): Create a payment method from a definition - [Paid API proxy server](/sdk/typescript/proxy): Paid API proxy - [McpClient.wrap](/sdk/typescript/client/McpClient.wrap): Payment-aware MCP client - [stripe client method](/sdk/typescript/client/Method.stripe): Register all Stripe intents - [Method.stripe.charge](/sdk/typescript/client/Method.stripe.charge): One-time payments via Shared Payment Tokens - [tempo client method](/sdk/typescript/client/Method.tempo): Register all Tempo intents - [Method.tempo.charge](/sdk/typescript/client/Method.tempo.charge): One-time payments - [Method.tempo.session](/sdk/typescript/client/Method.tempo.session): Low-cost high-throughput payments - [tempo.session](/sdk/typescript/client/Method.tempo.session-manager): Standalone session manager - [Mppx.create](/sdk/typescript/client/Mppx.create): Create a payment-aware fetch client - [Mppx.restore](/sdk/typescript/client/Mppx.restore): Restore the original global fetch - [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 - [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.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.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): Generate relative expiration timestamps - [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 verification - [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 - [Elysia payment middleware](/sdk/typescript/middlewares/elysia): Payment middleware for Elysia - [Express payment middleware](/sdk/typescript/middlewares/express): Payment middleware for Express - [Hono payment middleware](/sdk/typescript/middlewares/hono): Payment middleware for Hono - [Next.js payment middleware](/sdk/typescript/middlewares/nextjs): Payment middleware for Next.js - [stripe](/sdk/typescript/server/Method.stripe): Register all Stripe intents - [Method.stripe.charge](/sdk/typescript/server/Method.stripe.charge): One-time payments via Shared Payment Tokens - [tempo server method](/sdk/typescript/server/Method.tempo): Register all Tempo intents - [Method.tempo.charge](/sdk/typescript/server/Method.tempo.charge): One-time stablecoin payments - [Method.tempo.session](/sdk/typescript/server/Method.tempo.session): Low-cost high-throughput payments - [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 - [Request.toNodeListener](/sdk/typescript/server/Request.toNodeListener): Convert Fetch handlers to Node.js - [Response.requirePayment](/sdk/typescript/server/Response.requirePayment): Create a 402 response - [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