New: sell roles. Bond takes no cut.

See how

Give a Discord role when someone pays with Stripe

Most Stripe Discord integrations post a message when a payment lands. Here are three ways to give a role on payment and take it off when people stop paying.

· 6 min read · the Bond team

To give a Discord role when someone pays with Stripe, and take it off when they stop, you need something that hears Stripe's payment and subscription events and changes the role: your own webhook code, an automation platform, or a bot. Bond, an AI Discord bot, does it with its Paid roles plugin, in your own Stripe account. We build Bond.

Most "Stripe Discord integration" results are automation connectors that post a message in a channel when a payment happens. This post is about the other job, the role.

Why removing the role is the hard part

Giving the role is the easy half. Someone pays, you find their Discord account, you add the role.

Taking it off is where these setups fail. A subscription can end because the member cancelled, because their card failed and Stripe gave up retrying, or because they asked their bank for the money back. A one-time purchase can be refunded. Each of those reaches you as a different Stripe event, and a member who cancels has usually paid until the end of the month, so the role should stay until then and not a day longer.

Then there is matching. Stripe knows an email address. Discord knows a user ID. Something has to tie the payment to the right member, and it should not be a box where the buyer types any Discord name they like.

Way 1: build it yourself with webhooks

If you write code, this is the most flexible route.

  1. Create a Stripe Checkout session for each buyer, with their Discord user ID in the session's metadata, so the payment carries who it is for.
  2. Run a server that receives Stripe's webhook events and checks each signature.
  3. Grant the role on checkout.session.completed. Remove it on customer.subscription.deleted, and on charge.refunded or charge.dispute.created for one-time purchases.
  4. Run a Discord bot with Manage Roles whose highest role sits above the roles it sells.

Stripe's own subscription guide says: "Revoke access to your product when the subscription is unpaid." (docs.stripe.com, read 15 November 2026). The code is not long. Keeping it running is the work: retries when Discord is down, a member who leaves the server and comes back, and a daily check for anything a missed event left behind.

Way 2: an automation platform

Automation platforms can wire a Stripe payment to a Discord step, and owners ask how to make that step a role on the platforms' own forums, such as this thread on Zapier's community.

Our view: this works for one-time grants. Removal is the hard part. You need a second automation for cancellations, a third for refunds, and somewhere to keep which Discord member each Stripe customer is. If a removal step fails, nobody notices, and the role stays on.

Way 3: a bot that does it

Several Discord bots handle both halves: they give the role on payment and take it off when the subscription ends. They differ mostly in where the money goes and what they take: some run payments through your own Stripe account, some through their own, and some take a share of each sale. We put the numbers side by side, each with its source, in Discord paid role bot fees compared.

How Bond does it

Bond does this with its Paid roles plugin, in your own Stripe account. Two set-up steps come first:

  1. Ask Bond to install the Paid roles plugin, and confirm.
  2. In Stripe, make a restricted key with six permissions and paste it on the Paid roles page of your server's Bond dashboard.

Then you tell Bond in Discord what to sell, for example "sell VIP for $5 a month". It shows a card with the role, the price as Stripe will charge it and whether this is test or live mode, and it makes nothing until you confirm. Bond then creates the product and price in your Stripe account and posts a panel with a Buy button per tier and a Manage button.

A member presses Buy, gets a private link and pays on Stripe's checkout page. Bond never sees the card. When Stripe confirms the payment, Bond gives the role and writes a line in your log channel, if you set one. When the subscription ends, the role comes off. A member who cancels keeps it until the end of the period they paid for, and keeps it while Stripe is retrying a failed renewal. A one-time purchase loses its role when it is refunded in full or disputed. Manage opens Stripe's customer portal, where members cancel or change their card.

Bond takes no fee and no cut, on any plan. Stripe's own processing fee still applies.

Why the key goes on a dashboard and not in chat

Stripe's guide to sharing keys calls a full secret key "Dangerous: gives full control to the third party" and a restricted key "Safer: you hand out only the access the third party needs". It also says to share keys "not in emails, chat messages or customer support messages", and that "Stripe never asks you for your secret API key" (docs.stripe.com, read 15 November 2026).

So Bond takes a key only on its dashboard, never in a Discord message, and refuses a full secret key. The restricted key covers products, prices, checkout, the customer portal and reading subscriptions, plus one permission that lets Bond add its webhook, which in Stripe's model covers the whole account's webhooks. It cannot pay out, refund or cancel anything, which is also why you refund and cancel in Stripe yourself. Bond never reads or stores customers' card details, emails or amounts. If someone pastes a key into Discord anyway, Bond strips the key from its own copy and tells them to delete the message and the key.

The full setup, including the six permissions by the names Stripe's form uses, is on how to sell roles on Discord.

What it does not do

Bond's paid roles have no free trials, no coupon or promo codes, no storefront page and no affiliate links, and one purchase covers one server. Bond adds no payment methods of its own; members can pay with what your Stripe account accepts at checkout. You are the seller, so tax and refunds are yours; Bond is not the merchant of record. If you need any of the missing parts, one of the dedicated payment bots is the better fit, and the fees comparison says which do what.

Try it on your own server.

Add Bond, mention it in any text channel, and describe what you want. It shows you what it is about to change before it changes anything.