Charge for HTTP content

Last updated Aug 5, 2026 The mpp-proxy ↗︎ template is a Cloudflare Worker that sits in front of any HTTP backend. When a request hits a protected route, the proxy returns a 402 response with an MPP payment challenge. After the client pays, the proxy verifies the payment, forwards the request to your origin, and issues a 1-hour session cookie.

Deploy the mpp-proxy template to your Cloudflare account:

Deploy to Cloudflare

Prerequisites

Configuration

Define protected routes in wrangler.jsonc:

{
    "vars": {
        "PAY_TO": "0xYourWalletAddress",
        "TEMPO_TESTNET": false,
        "PAYMENT_CURRENCY": "0x20c000000000000000000000b9537d11c60e8b50",
        "PROTECTED_PATTERNS": [
            {
                "pattern": "/premium/*",
                "amount": "0.01",
                "description": "Access to premium content for 1 hour"
            }
        ]
    }
}

Note

Set TEMPO_TESTNET to true and PAYMENT_CURRENCY to 0x20c0000000000000000000000000000000000000 for testnet development.

Selective gating with Bot Management

With Bot Management, the proxy can charge crawlers while keeping the site free for humans:

{
    "pattern": "/content/*",
    "amount": "0.25",
    "description": "Content access for 1 hour",
    "bot_score_threshold": 30,
    "except_detection_ids": [120623194, 117479730]
}

Requests with a bot score at or below bot_score_threshold are directed to the paywall. Use except_detection_ids to allowlist specific crawlers by detection ID.

Deploy

Clone the template, edit wrangler.jsonc, and deploy:

git clone https://github.com/cloudflare/mpp-proxy
cd mpp-proxy
npm install
npx wrangler secret put JWT_SECRET
npx wrangler secret put MPP_SECRET_KEY
npx wrangler deploy

For full configuration options, proxy modes, and Bot Management examples, refer to the mpp-proxy README ↗︎.

Custom Worker endpoints

To add MPP middleware directly to a Worker, refer to Accept payments with MPP.

Was this helpful?

YesNo

On this page

Charge for HTTP content - 图2Docs

{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/agents/tools/payments/mpp-charge-for-http-content/#page","headline":"Charge for HTTP content","description":"Gate HTTP endpoints with MPP payments using the mpp-proxy template on Cloudflare Workers.","url":"https://developers.cloudflare.com/agents/tools/payments/mpp-charge-for-http-content/","inLanguage":"en","image":"https://developers.cloudflare.com/agents/tools/payments/mpp-charge-for-http-content/og.png?v=af4a2346e36e5439","dateModified":"2026-08-05","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}


description: Accept Machine Payments Protocol (MPP) payments from an origin, Cloudflare Worker route, or Model Context Protocol (MCP) tool. title: Accept payments with MPP image: https://developers.cloudflare.com/agents/tools/payments/mpp/accept-payments/og.png?v=c8d7691096adf0d2


Skip to content

Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/agents/llms.txt
Use this file to discover all available pages before exploring further.