Explainer · 2026-05-31

Discord server paywall without Patreon: Stripe + webhook (2026)

Discord has no native subscription paywall. To lock a channel or role behind a payment, you need something external that collects the money and then tells Discord to assign the role. Patreon is the most common answer — but Patreon is also an 8% commission tax on every dollar, plus Apple's 30% on every iOS renewal after November 1, 2026. This page covers the three ways to build a Discord paywall, what each one costs to run, and the math on why the cheapest-looking option is rarely the cheapest.

Why Discord's native tools aren't enough

Discord launched Server Subscriptions in 2023 for eligible servers. It lets members pay directly inside the app for access to locked channels and subscriber-only perks. It looks like the obvious answer. It is not — for two reasons.

First, Discord takes 10% of every subscription. That fee compounds on top of Apple's 30% for iOS purchases and Google's cut for Android — the same in-app-purchase rules that now affect Patreon. On a server earning $2,000/mo with 65% iOS subscribers, the effective take across Discord's cut and Apple's cut leaves the creator with roughly $1,330/mo — a 33.5% combined loss before Stripe even touches a dollar.

Second, Discord Server Subscriptions are still in limited availability, only open to servers meeting Discord's own eligibility criteria. Most independent creators do not qualify.

The result: creators who want a Discord paywall either route through Patreon, build one themselves, or use a hosted service that wraps the Stripe-to-Discord pipeline.

Option 1: Patreon → Discord integration

Patreon has a native Discord integration that assigns roles automatically when a patron's subscription is active and removes them when it lapses. Setup takes about ten minutes. The experience is smooth.

The problem is cost. Patreon charges 8% on its Pro plan (the minimum plan that unlocks Discord integration) plus payment processing. After November 1, 2026, every iOS renewal adds Apple's 30% on top.

Platform $/mo kept at $2k revenue Effective take
Patreon Pro · iOS active · post-Nov 1 $1,319 34.1%
Patreon Pro · web-only toggle $1,701 15.0%
Stripe direct · no platform fee $1,942 2.9%

Revenue: $2,000/mo, 65% iOS. Processing: Stripe standard (2.9% + $0.30 per charge). Full fee stack breakdown.

The $382/mo gap between Patreon web-only and Stripe-direct compounds over a year to $4,584 — the price of a dedicated studio upgrade or six months of professional editing. That is the cost of using Patreon as your Discord paywall rather than building or renting the webhook layer yourself.

The web-only toggle is worth doing immediately (the November 2026 checklist explains how). But it does not remove Patreon from the fee stack — only the iOS slice. The platform commission stays.

Option 2: Build the webhook yourself

The technical path is straightforward in concept. A Stripe subscription, a webhook endpoint, and the Discord Bot API are all you need. Here is how the stack fits together.

Step 1: create the Stripe subscription product

In Stripe Dashboard, create a Product with a recurring Price. For a two-tier Discord server, create two products — e.g. "Supporter" at $5/mo and "All-Access" at $15/mo. Enable Stripe Checkout for each, which gives you a hosted payment page with no PCI compliance work on your end.

Step 2: register a Discord bot and define the roles

In the Discord Developer Portal, create an Application and add a Bot to it. Grant the bot the Manage Roles permission and invite it to your server. In your server settings, create the roles that correspond to each Stripe tier (e.g. "Supporter Role", "All-Access Role"). The bot's role must sit above these roles in the server hierarchy — Discord will not let a bot assign a role higher than its own.

Step 3: write the webhook handler

Stripe fires webhook events when subscriptions change state. The four events a Discord paywall must handle are:

For each event, your handler calls the Discord REST API: PUT /guilds/{guild_id}/members/{user_id}/roles/{role_id} to add a role, and DELETE /guilds/{guild_id}/members/{user_id}/roles/{role_id} to remove it.

The catch: Stripe knows the subscriber's email address; Discord knows their Discord user ID. You need to collect the Discord ID at checkout. The standard pattern is a Stripe Checkout custom field (added to the session metadata) or a post-checkout page that asks the subscriber to authorize your bot via Discord OAuth2, which hands you the user ID directly. The OAuth2 path is cleaner but adds another 30–60 minutes of implementation.

Step 4: host the endpoint

The webhook handler needs to be reachable from the public internet with low latency — Stripe will retry failed deliveries but subscribers notice if their Discord role takes more than a few minutes to appear. A small VPS (Hetzner CX11 at €3.29/mo), a serverless function, or a Railway/Fly.io free tier all work.

Honest build time and total cost

An experienced developer who knows both the Stripe and Discord APIs can build and deploy this in four to six hours. Someone learning either API for the first time should expect a weekend. The ongoing cost is hosting plus Stripe's processing fee (2.9% + $0.30). There is no platform commission.

If your membership revenue is above $400/mo, the build pays itself back in the first month versus Patreon Pro. Below that, the hourly opportunity cost of the build may not clear.

The harder ongoing cost is maintenance. Stripe API versions change. Discord permissions models change. When a subscriber's role fails to assign because the bot's token expired or the webhook secret rotated, you are the support queue. That hidden tax is real and is often underestimated.

Option 3: KeepTier — the hosted webhook layer

KeepTier is the build-it-yourself approach above, hosted and managed, for $9/mo flat. The platform commission is 0%; you pay Stripe's standard processing (2.9% + $0.30) and nothing else to KeepTier.

Setup is the same end-state as the DIY path but without the implementation: you connect your Stripe account, define up to two tiers, connect the Discord bot (using KeepTier's OAuth2 flow, which requests only the Manage Roles scope — no access to messages or member list), and get a branded membership page at support.yourbrand.com. When a subscriber pays, the role assignment happens in seconds. When they cancel or fail a renewal, the role is removed automatically.

At what revenue does KeepTier's $9/mo flat fee beat building and hosting the webhook yourself? A bare VPS costs ~$4/mo, so the marginal cost of KeepTier over self-hosting is $5/mo — about 2.5 hours of ongoing maintenance per year at a conservative $25/hr opportunity cost. If your webhook needs attention even once a year (a Stripe version bump, a Discord permission change, an expired token), KeepTier is already cheaper.

The full fee comparison at $2,000/mo

Path Monthly fee to platform $/mo kept
Patreon Pro · iOS active · post-Nov 1 $681 $1,319
Patreon Pro · web-only toggle $299 $1,701
DIY Stripe + VPS ($4/mo) $62 $1,938
KeepTier ($9/mo flat) $67 $1,933

Revenue: $2,000/mo, 65% iOS. Processing: Stripe standard on all paths. DIY VPS at $4/mo. Patreon platform commission: 8% (Pro). Apple's 30% applied to iOS share post-Nov 1. Full fee methodology.

DIY and KeepTier are within $5/mo of each other at this revenue band. Both save over $230/mo versus Patreon web-only — and over $600/mo versus staying on Patreon with iOS active post-November.

Which option fits which creator

The choice comes down to one question: how much do you want to own the infrastructure?

The one thing to do this week regardless of which path you choose

If your Discord membership revenue runs through Patreon today, the single highest-return action before November 1, 2026 is to toggle off iOS purchases in Patreon Creator Settings. That one action recovers most of Apple's 30% cut with no migration required. It is not a permanent solution, but it is immediate and costs nothing to execute.

After that, run the numbers on your own revenue band. The difference between staying-on-Patreon and any of the Stripe-direct paths is not a rounding error — it compounds month over month against the same subscriber base with no audience growth required.

SEE YOUR NUMBERS

Enter your monthly revenue and iOS share. The calculator returns the exact take-home across every exit path in seconds. No email required.

Open the calculator →

Related reading