---
title: "How to sell roles on Discord"
description: "Discord's own role sales are for US owners only. Bond sells roles through your own Stripe account and takes no cut."
canonical_url: "https://www.bondbot.gg/use-cases/paid-roles"
last_updated: "2026-11-15"
---

# How to sell roles on Discord

Add Bond, an AI Discord bot, connect your own Stripe account on its dashboard, and say what to sell, for example "sell VIP for $5 a month". Members pay on Stripe's checkout page and get the role when the payment goes through, and it comes off when their subscription ends. Bond takes no cut, though Stripe's fee applies. Discord's own Server Subscriptions are for US-based owners only.

Verified 2026-11-15 on a test server, build e75bba2.

## In Discord, without a bot

Discord sells roles itself, through Server Subscriptions and the Server Shop, but only for owners in the United States. Its [Creator Revenue FAQ](https://creator-support.discord.com/hc/en-us/articles/10424143128343-Creator-Revenue-FAQ), read on 15 November 2026, says "Server Subscriptions will not be available outside of the United States" and that "Discord will keep 10%" of each membership. Its requirements include being able to give Stripe US banking information and US identification.

Everywhere else, or to keep Discord's share, the manual way is this:

1. Take the payment somewhere else, such as a Stripe payment link or a donation page.
2. Match each payment to a member, usually by asking for their Discord name at checkout.
3. Open **Server Settings**, **Members**, find the member and add the role by hand.
4. Keep a list of who paid until when, and take the role off yourself when someone stops paying, cancels or gets a refund.

Step 4 is the one that slips. Nobody gets a reminder when a subscription lapses, so the role stays on people who stopped paying months ago. A bot that hears from Stripe directly does steps 2 to 4 for you. [Bond is an AI Discord bot](https://www.bondbot.gg/) that does it in your own Stripe account: you install its Paid roles plugin and paste a Stripe key on its dashboard once, then each role you sell is one sentence. For what the other paid role bots charge, see [Discord paid role bot fees compared](https://www.bondbot.gg/blog/discord-paid-role-bot-fees-compared-2026). For the whole server around a paid role, with a free front and a members-only area, see the [paid community layout](https://www.bondbot.gg/guides/discord-paid-community-server).

## With Bond, in one message

A real run, recorded on a test server: what was asked, what Bond asked you to approve, what it did, and what members saw afterwards.

In #admin-chat:

> **You:** @Bond Sell a VIP role for $5 a month.

> **Sell a role, or change its price**
> for @You
> Role @VIP.
> > ⚠️ Sell the role VIP for $5.00 every month.
> > - Role: VIP
> > - Price: $5.00 every month, charged by Stripe
> > - Stripe test mode: only Stripe's test cards work and no real money moves.
> > - Bond creates the product and the price in this server's Stripe account.
> > - When a member cancels or stops paying, Bond takes the role off once the subscription ends.
> > 
> > This confirmation applies only to this action and cannot be saved.
> Expires in 10 minutes
>
> Buttons: Sell a role, or change its price, Cancel. Pressed: Sell a role, or change its price.

What Bond did:

- List roles
- Get paid roles
- List plugins
- Set paid role tier

> **Bond:** The Paid roles plugin is installed and Stripe is connected in test mode, so I'm setting up the VIP tier now for your confirmation.

> **Bond:** The VIP role is now for sale at **$5.00 every month**, and the panel in #paid-roles shows a "VIP · $5.00/month" button.
>
> Stripe is in **test mode**, so no real money moves yet. To try it, press the button and pay with Stripe's test card 4242 4242 4242 4242, any future expiry date and any CVC. Purchases are logged in #paid-roles-log.
>
> To take real payments, the owner or an Administrator needs to paste a live Stripe key on the Paid roles page of the Bond dashboard. I can't take the key in chat.

In #paid-roles, afterwards:

> **Support the server and get a role.** Pick one below to pay on Stripe's page. The role is yours as soon as the payment goes through.
> **Test mode:** no real money is charged. Pay with one of Stripe's test cards.
>
> Buttons: VIP · $5.00/month, Manage.

Bond's reply to pressing VIP · $5.00/month, which only the member sees:

> Pay for **VIP** ($5.00/month) on Stripe's page. The link works for 30 minutes, and the role is yours as soon as the payment goes through.
> This server is in test mode: no real money is charged. Pay with one of Stripe's test cards.
>
> Link button: Pay on Stripe.

The buyer, afterwards:

- Pressed: VIP · $5.00/month
- Paid with: Stripe's test card
- Role given: The VIP role

In #paid-roles-log:

> @Member A bought **VIP** (test mode).

Light tier · 1 message · 17 seconds · 36K tokens

Recorded on a Bond test server on the Light tier, the tier every free plan runs on. Server, channel and member IDs are placeholders, the test bot is shown as Bond, and the steps where Bond loads its own tools or pages through a long result are left out. The test server has no plan limits, so the plan limits a step reports are left out. The line on a card that says what its confirmation covers is reworded in plain words.

Before the request, the test server already had the Paid roles plugin installed, a VIP role, the #paid-roles and #paid-roles-log channels, and a Stripe sandbox account connected with a test key, all set up on the dashboard. Bond checked the plugin, what was on sale and the server's roles, then asked once, with a confirmation card, before it made the price. After Confirm, a second test account, shown as Member A, pressed the VIP button and paid on Stripe's checkout page with one of Stripe's test cards. The run used Stripe's test mode, which is why the panel and the reply say so, and no real money moved.

## Setting it up

1. Ask Bond to set up paid roles. It installs the Paid roles plugin after you confirm, and the card says Bond will hold a Stripe key for the server.
2. In Stripe, open **Developers**, **API keys**, **Create restricted key**, and choose **Sharing with a third-party service**. Turn on these six permissions and leave the rest off: **Products** Write, **Prices** Write, **Checkout Sessions** Write, **Customer Portal** Write, **Webhook Endpoints, Event Destinations** Write, and **Subscriptions** Read. Stripe shows the key once.
3. Paste it on the **Paid roles** page of your server's Bond dashboard. Only the server's owner or an Administrator can, and that page is the only place Bond takes a key. Bond refuses a full secret key, and checks the restricted one with Stripe before it keeps it.
4. Tell Bond what to sell: "sell VIP for $5 a month". It shows a card with the role, the price exactly as Stripe will charge it, test or live mode, and what happens when a member cancels. Nothing is made until the person who asked presses Confirm, and no setting skips that card. Bond then makes the product and price in your Stripe account and adds a button to the panel. If you already sell a fixed monthly, yearly or one-time price in Stripe, Bond can link that price instead.
5. A member presses the button and gets a private link to Stripe's checkout page. Bond never sees their card. When Stripe confirms the payment, Bond gives the role and, if you set a log channel, writes one line there naming the member and the tier and never the amount.
6. The panel's Manage button sends the member a private link to Stripe's customer portal, where they cancel or change their card.

## When a member stops paying

- A member who cancels keeps the role until the end of the period they paid for. It comes off when the subscription ends.
- While Stripe is retrying a failed renewal, the member keeps the role, and the log channel says so once. If Stripe gives up and the subscription ends, the role comes off.
- If your Stripe settings leave a subscription past due after the retries instead of ending it, the role stays on.
- A one-time purchase loses its role when the payment is refunded in full or disputed. A partial refund leaves the role.
- A refund or a dispute on one payment of a subscription does not change the role by itself. The subscription's own status decides, and whether a dispute cancels it is your setting in Stripe.

## Test mode and who is paying

With a test key, the panel says it is in test mode and no real money moves. Members pay with one of Stripe's test cards. Moving to live is a disconnect and a connect on the dashboard: what members bought with test cards ends and those roles come off, the test tiers are hidden, and you ask Bond for each tier again in live.

The dashboard's Paid roles page lists who is paying and for which tier. It shows no amounts paid and no emails, since revenue stays in Stripe. An Administrator who ranks above the role can Revoke a member there, which takes the role off and stops the panel giving it back. There is no undo. Revoke does not stop the billing; cancel the subscription in Stripe for that.

## The permissions it takes

Bond checks every step against your own Discord permissions and role position before it acts, and what it reads back is only what you can already see.

### What you need

- List roles: Nothing extra
- Get paid roles: Administrator
- List plugins: Nothing extra
- Set paid role tier: Administrator

Installing takes Administrator, the same bar as any automation, because an automation goes on acting as Bond long after you asked for it. Bond itself never needs Administrator.

### What Bond needs

Bond gives and takes the roles as itself, not as whoever set them up, so these are Bond's own permissions.

- **Manage Roles** in the server, to give a role when a payment goes through and take it off when it ends.
- Bond's highest role above every role it sells. Discord lets a bot give only roles below its own highest role. A role that slips above Bond later is not given, and the log channel, if you set one, names the fix.
- In the panel channel, **View Channel** and **Send Messages** to post the buy buttons. If you name no channel, the install makes #paid-roles.
- In the log channel, if you set one, **View Channel** and **Send Messages**. Keep it to staff. If you name a channel Bond cannot post in, the install refuses it and names the permission Bond lacks there.
- A Stripe account. Stripe decides which countries and businesses it supports, not Bond.

Bond also refuses some roles outright. A role can be sold only if it carries nothing beyond what an ordinary member has, such as viewing, writing, reacting and voice. Any staff permission, Mention Everyone included, makes it unsellable, and so does a channel that grants it one. It also has to sit below any role that can kick, ban, time out, manage roles or manage nicknames, because staff cannot act on a member ranked above them. And the person setting it up has to rank above it, unless they own the server.

## What to watch for

- Bond cannot cancel a subscription or refund a payment. Its key cannot do either. Both are done in Stripe.
- Taking a paid role off by hand does not lock a paying member out: their next press on the panel puts it back. Use Revoke on the dashboard.
- Stripe prices cannot be edited. A new price applies to new buyers only, and members already paying stay on the old one until they cancel.
- When you stop selling a tier, its members keep the role until their subscription ends, and Stripe keeps charging them until they cancel with Manage or you cancel in Stripe.
- If a role gains a staff permission after it went on sale, the panel refuses the next buyer. A payment already under way gets no role, and the log channel says why.
- Prices are monthly, yearly or one-time, with up to 10 tiers. Bond makes prices in 22 common currencies, each with a floor and a ceiling, from $1 to $1,000 in US dollars. Any other fixed monthly, yearly or one-time price you make in Stripe and Bond links it. Daily, weekly and every-few-months prices cannot be sold.
- Bond adds no payment methods of its own; members can pay with what your Stripe account accepts at checkout.
- There are no free trials, coupon or promo codes, affiliate links or storefront page, and one purchase covers one server.
- You are the seller, so tax is yours. Bond is not the merchant of record and does not collect tax. Ask an accountant what applies to you.
- Never paste a Stripe key in Discord. If someone does, Bond strips the key from its own copy and tells you to delete the message and the key.
- Paid roles is a plugin. It takes one of the 5 plugin installs a server without a plan can have, and none of its automation slots.

## Questions people ask

### Does Bond take a cut?

No. Bond takes no fee and no cut on any plan, the free one included. The sale happens in your own Stripe account and Stripe pays it out to you. Stripe charges its own processing fee: in the United States, 2.9% plus 30 cents per successful transaction on a domestic card, according to stripe.com/pricing on 15 November 2026. It differs by country. A subscription also pays Stripe Billing, 0.7% of what it bills on Stripe's pay-as-you-go plan, according to stripe.com/billing/pricing on the same day.

### What happens when someone cancels, gets a refund or files a chargeback?

A member who cancels keeps the role until the end of the period they paid for, then it comes off. A one-time purchase loses its role when it is refunded in full or disputed, and a partial refund leaves it. On a subscription, the subscription's status in Stripe decides. Bond cannot refund anyone; you do that in Stripe.

### Can I try it without real money?

Yes. Connect a Stripe test key and the panel says it is in test mode. Members pay with Stripe's test cards, so you can buy, cancel and refund a role yourself before you switch to a live key.

### Where does my Stripe key go, and can Bond move my money?

Only on the Paid roles page of your server's Bond dashboard, never in a Discord message. It is a restricted key with six permissions: products, prices, checkout, the customer portal, reading subscriptions, and one 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. Bond never reads or stores customers' card details, emails or amounts.

### Does it work outside the United States?

Yes, wherever Stripe will open an account for you. Stripe decides which countries and businesses it supports. Members can pay monthly, yearly or once, and Stripe's fee and payout schedule are the ones for your country.

## Read next

- [Give a Discord role when someone pays with Stripe](https://www.bondbot.gg/blog/stripe-discord-integration-give-a-role-on-payment): 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.
- [Discord paid role bot fees compared](https://www.bondbot.gg/blog/discord-paid-role-bot-fees-compared-2026): What ten ways to sell Discord roles take from each sale, from Discord's own 10% to Bond's 0%, whose account the money lands in, and what costs extra.
- [Is it allowed to sell roles on Discord?](https://www.bondbot.gg/blog/is-it-allowed-to-sell-roles-on-discord): What Discord's guidelines, terms and Monetization Policy say about charging for a role, what we did not find, and the Stripe rules that bind you as the seller.
- [Discord Server Subscriptions outside the US](https://www.bondbot.gg/blog/discord-server-subscriptions-outside-the-us): Discord's own Server Subscriptions are for US-based owners only. What owners elsewhere can do instead, through their own Stripe account, and what changes.
