Setup
1
Add the Shoppex bot to your server
The invite link is on Channels → Discord (
/store/discord). The bot requests Manage Roles, Kick Members, View Channels, Send Messages, and Embed Links. Its own role in the server hierarchy must sit above any role you intend to sell. This is a Discord rule: bots can only manage roles below their own.2
Configure the product
On a product, choose the product Type (usually
Subscription for recurring access). In the Discord section, toggle Assign Role. Then pick the server and the role, loaded live from your server.3
Buyers authorize Discord at checkout
Buyers are prompted to authorize Discord through OAuth, so Shoppex can grant the role to their account. If the buyer skips that authorization, the order cannot fulfill.
When the role is granted
The grant runs asynchronously after payment, through a queue, so transient Discord API failures retry automatically. Most grants land within a few seconds. If Discord answers with a server error or the request times out, Shoppex tries again after 1 minute, 5 minutes, 30 minutes, and 2 hours. That is five attempts in total. The last attempt runs about 2 hours 36 minutes after the first failure. A Discord rate limit does not count as an attempt: Shoppex waits for the time Discord asks for, then tries again. Shoppex does not retry when Discord rejects the request, for example because the bot lacks Manage Roles, the bot’s role sits below the role you sell, or the role was deleted. These grants stop immediately. Grants that stopped are listed with their reason on Channels → Discord (/store/discord), on the Overview tab under Needs a Retry. The list shows the newest 50 stopped Discord grants; older ones appear only after newer ones leave the list, for example after a successful Retry. After you fix the cause, click Retry on the row. Retry starts the five attempts again. If the buyer has not connected Discord, the row shows Send Link instead. Send Link emails the buyer a link to connect Discord and claim the role.
Revoking
For one-time purchases, the role stays granted indefinitely. The buyer keeps it until you remove it manually or they leave the server. For subscription products, revoke behavior is per-product. By default, new products have Remove role on cancel enabled. The role is revoked when:- The subscription is canceled.
- A renewal invoice that Shoppex bills (for example a crypto subscription) stays unpaid until its time to pay runs out. The subscription then goes on hold or ends, as set in Settings › Store › Subscriptions, and the role is removed. It is granted again when the buyer pays during the hold. See Subscriptions.
Refunds and chargebacks
A full refund or a lost chargeback always takes the role back, on one-time and subscription products alike. A partial refund keeps it. If another paid order still gives the buyer a role on the same server, the role that order gives stays. Each product decides what else happens, under Integrations → Discord → On a full refund or chargeback:- Remove the role (the default): the buyer stays in your server without the role.
- Remove the role and kick: the buyer leaves your server too. A kick is not a ban: they can join again with an invite. Shoppex never kicks a buyer who still has another paid order that gives a role on this server, and kicks once per order, however often the refund or chargeback is reported. A buyer who joins again after that kick stays. The kick also runs when the refund or chargeback comes after a subscription end already removed the role.
Multiple servers
Bind a product to a role on one server. If you want to grant roles across multiple servers in the same purchase, set up more products and either bundle them or use addons.Troubleshooting
If a buyer reports they did not get their role:- Open Channels → Discord and look for the buyer under Needs a Retry. The row shows why the grant stopped.
- If the row says the buyer has not connected Discord, click Send Link. The buyer gets an email with a link to connect Discord and claim the role.
- Check that the bot has Manage Roles permission and sits above the target role in the server hierarchy.
- Check that the role still exists. If you deleted it, Shoppex cannot grant it.
- If the row says Shoppex stopped after 5 attempts, wait until Discord is back, then click Retry.