A Discord paid roles bot adds a role when a member's payment succeeds and removes it when the payment stops. I build it on your own Stripe account and your own Discord application: Stripe Checkout takes the money, a signed webhook tells the bot, and the role follows the subscription status without anyone on your team touching it.
You pay Stripe's fees and no platform percentage on top, which is the main difference from LaunchPass ($29 a month plus 3.5%) or Patreon (10% for new creators), as of September 2026. It is not automatically the cheapest route, though. Whop's card rate is lower than Stripe's, and at 50 members a hosted tool often costs less than a build.
What a Discord paid roles bot does
From the member's side
- They click Join on your site or a pinned message, sign in on Discord's own consent screen, and land on a Stripe Checkout page for the plan.
- They pay. Within seconds the bot gives them the role and the paid channels appear. If they agreed to it on the sign-in screen, the bot also adds them to the server, so nobody needs an invite link.
- Later they run
/membership statusto see their renewal date, or/membership managefor a private link to Stripe's customer portal, where they change their card or cancel.
When a payment fails
Stripe retries the card on its own schedule. The recommended Smart Retries default is 8 tries within 2 weeks, and Stripe can email the member to update their card. During that window the subscription is past_due and the bot leaves the role alone. That is your grace period, and you set its length in Stripe rather than in the bot.
After the last retry, Stripe cancels the subscription or marks it unpaid, whichever you chose in its settings, and the bot removes the role. The member stays in the server, so paying again restores access at once. LaunchPass, by contrast, kicks canceled members by default.
From your team's side
- Every role change goes to a staff-only log channel with the reason, such as "subscription ended". Card details and amounts stay in Stripe.
- A nightly job compares active subscriptions with the members holding the paid role and fixes any difference, such as a role added by hand or a webhook missed during an outage.
/members lookupanswers "why doesn't this person have access?" without opening Stripe.
What it connects to
- Stripe Checkout and Billing. Checkout collects the payment and creates the subscription. Billing handles renewals, trials, coupons and retries, and the customer portal handles card changes and cancellations.
- Discord OAuth2. The
identifyscope gives the buyer's Discord user ID, and the optionalguilds.joinscope lets the bot add them to the server after payment. The ID is saved on the Stripe subscription, which ties one Stripe customer to one Discord account. - A small database. One table links Discord user, Stripe customer and subscription; another records every Stripe event ID the bot has handled. SQLite is enough for one server, PostgreSQL once there is a dashboard.
- Whop or Patreon, if you already sell there. Whop sends
membership.activatedandmembership.deactivatedwebhooks and Patreon sends member create, update and delete webhooks, so the bot can honor those members while you move people to Stripe.
I link accounts through Discord sign-in rather than a typed email or user ID, because a typed value can belong to someone else. I use the same sign-in pattern for Rivals League players, and the same verify-the-signature-first rule in my Trello bot.
Hosted tool or custom bot?
Hosted tools are the right answer for a lot of servers. Here is what each charges as of September 2026, and the monthly fees for 50 members paying $10. The arithmetic is in the guide to selling Discord roles with Stripe.
| Option | Published fees | Fees at 50 × $10/mo | Pick it when |
|---|---|---|---|
| Whop | 2.7% + 30¢ per domestic card, plus a listed $0.07 Radar fee per transaction | $32.00 | You want the lowest card rate and don't mind Whop's checkout |
| Your own Stripe bot | Stripe 2.9% + 30¢, plus 0.7% Stripe Billing | $33.00, plus hosting and the build | You want your own customer list, custom rules or several products |
| Upgrade.chat (free plan) | 5.9% up to 500 subscribers, plus your own Stripe or PayPal fees | $59.00 | You want payments to land in your own PayPal and Stripe accounts |
| LaunchPass Premium | $29/mo + 3.5%, plus Stripe 2.9% + 30¢ | $76.00 | You want a hosted join page running today |
| Discord Server Subscriptions | 6% processing, then 10% of the rest (desktop and web) | $77.00 | You are US-based and want members to pay inside Discord |
| Patreon (pages published after Aug 4, 2025) | 10% + 2.9% + 30¢ | $79.50 | Your audience already follows you on Patreon |
Server Subscriptions only accept US-based owners with US banking and ID, allow 1 to 3 monthly tiers, and can't be bought on Android. Patreon's bot supports one Patreon campaign per server and removes its roles from anyone without an active membership.
A custom bot is worth it when you outgrow those limits: several products or servers, roles that depend on more than one plan, a move off a platform without members resubscribing, or owning the Stripe account your members pay into. If members are customers of your software and roles should follow their plan in your own billing, see Discord bots for business.
Discord Premium Apps and the price-parity rule
Premium Apps is Discord's store for a bot's own paid features. Developers in the US, UK and EU keep 85% of what is left after payment processing on their first $1 million in sales, then 70%, and the app must be verified and owned by a developer team.
It matters because of Discord's Developer Policy: since October 7, 2024, in regions where Premium Apps is supported, an app that sells paid features must also offer them through Premium Apps at a price no higher than elsewhere. Discord's examples are about an app's own features, such as commands or content. A server selling access to its own community through a bot is not among them, and I have found no Discord guidance on that case.
So I don't guess. During the Blueprint I check the current Developer Policy and Monetization Policy against what you sell and tell you what I found; if it is still unclear, ask Discord developer support before launch. This is a policy check, not legal advice.
What it costs
- Starter bot, from $590 (1 to 2 weeks). One product with monthly or yearly prices and one paid role: Discord sign-in, checkout, the signed webhook handler, the grace period, the nightly job, the three member commands, a staff lookup command and a log channel. Source code, setup docs and the first month of Care are included.
- Community bot, from $1,490 (2 to 4 weeks). When you need tiers mapped to different roles, free trials and coupons, comped access, more staff commands with a full audit trail, or a second source such as existing Patreon or Whop members during a move.
- Platform bot, from $3,500 (4 to 8 weeks). When you need a web dashboard for members and staff, several products or servers, or revenue and churn views.
What moves a quote: the number of products and roles, migrating existing subscribers, and rules like team seats or regional prices. One role on a fresh Stripe account is the cheapest case.
Running costs are Stripe's fees plus hosting that can receive Stripe's webhook over HTTPS, which Stripe requires. Railway's Hobby plan is $5 a month including $5 of usage and can give the service a domain with SSL. A $3 bot host such as PebbleHost's 1 GB plan runs the bot, but check it can serve HTTPS. Care at $49 a month includes hosting and library updates.
Do the math. Against LaunchPass at 50 members paying $10, you save $43 a month in fees, so a $590 build takes about 15 months to pay back once $3 to $5 of hosting is counted, and with Care at $49 it never does. At 300 members the fee saving is $113 a month and the build pays back in 5 to 6 months (about 9 with Care). Below a few hundred members, choose custom for control and features, not for fees. The cost estimator and pricing page cover the rest.
How the build works
- Brief. Tell me what you sell, where members come from and what you use today through the quote form.
- Blueprint. For anything past Starter I recommend the $249 Bot Blueprint, credited to the build if you order within 30 days. It includes the policy check above and a written acceptance checklist.
- Build in test mode. I build against Stripe test mode and a private test server, using Stripe's test clocks to fast-forward renewals and failed payments, so you see the grace period work before a real member hits it.
- Launch on your accounts. Live keys go into your Stripe account and the bot runs on your Discord application. You hold the keys, the token and the repository.
- Care. Optional hosting and upkeep, so Stripe and Discord changes don't become your problem.
Technical notes
- Permissions. The bot needs Manage Roles, with its own role above the paid roles, because a bot can only grant roles below its highest role. If your server requires 2FA for moderation, the account that owns the bot application needs 2FA too. Adding buyers to the server also needs Create Instant Invite. The permissions calculator builds the invite link.
- Intents. Adding and removing roles over the REST API needs no gateway intent. The nightly job lists server members, which needs the Server Members privileged intent. Since Discord's June 10, 2026 change, apps seen by fewer than 10,000 unique users switch it on themselves and larger ones apply for review; for a bot in one server, that count is roughly your member count.
- Webhooks. Every Stripe event is checked against your signing secret first, and each event ID is recorded so a repeat delivery changes nothing. Stripe doesn't guarantee event order, so the bot reads the current subscription from Stripe instead of trusting an old event.
- Data. Discord user ID, Stripe customer and subscription IDs, status and timestamps. Card data stays with Stripe, and payment details stay out of Discord, whose Developer Policy limits sending it financial information.
I don't build paid access for gambling or NSFW servers, or anything else that breaks Discord's Developer Policy. For everything else, send a brief and I'll reply with a fixed quote.