/buy from a DM: what your members see, step by step
2026-10-14 · Bazyl

/buy is the same checkout your members get on the website, run from a Discord message. This post walks every step so you can tell a member exactly what they'll see before they type it, including the two places people get stuck.
The thing most groups get wrong is calling it "the bot shop". There is no second shop. The bot asks the same questions the website asks, at the same prices, and hands the member the same Stripe payment page. Same account, same proxies.
It works in a DM and in a channel
/buy answers in a DM and in a server channel. In a channel only the person who ran it sees the reply; nobody else gets the card, the price or the link. A DM is cleaner, because the whole flow is one message that redraws itself, and a DM keeps that message where the member can find it again.
Tell members to DM the bot. That one sentence saves most of the questions.
The residential flow is four picks and a button
Here's the walkthrough, with the labels quoted as the bot shows them:
- Type /buy and pick the product. Residential first.
- Pick the billing: "One-off top-up" or "Monthly plan".
- Pick a size from the menu. The menu says the prices are yours, the same ones the dashboard shows, and that is literally what it reads.
- A confirm card appears with the size, the price and a "Pay €X" link. Tapping it opens Stripe's hosted payment page.
- If the member has a code, they press "Have a discount code?" on the confirm card, type it into the one-field modal, and the card redraws with the new price.
/buy → Residential
"One-off top-up" | "Monthly plan"
size menu: "Prices are yours — the same ones your dashboard shows"
confirm card:
"Pay €X" → Stripe's hosted page
"Have a discount code?" → one-field modal, the card redraws
The whole thing is one message. Each pick redraws it in place, so a member who changes their mind on size isn't left with a stack of old cards and old prices.
Payment happens on Stripe's page, not in Discord. Cards, Apple Pay, Google Pay, Link, Klarna, iDEAL, P24, Bancontact, EPS, giropay, Revolut Pay and BLIK are all on it.
The ISP flow is region, count, confirm
ISP has one extra thing: the codes modal takes two codes. The member picks a region, Europe or Australia, picks an IP count, and gets the confirm card. One modal holds an optional discount code and an optional cookgroup access code, so a member of a group with a private pool types the pool's passcode there. The passcode applies to that one purchase and is never remembered.
Example: a member buying 25 Australian IPs from your group's block picks Australia, picks 25, opens the modal, types the group's passcode, and pays. A wrong passcode is refused with "Invalid access code". It never falls through to general stock.
Two places members get stuck
The first is having no Basil account. A Discord account that isn't linked to any Basil account gets "You don't have a Basil Proxies account yet" and a one-click "Create your account" button, which signs them up with Discord login. That's the right button for someone who has never bought from us.
The second is having an account under a different email. Someone who already bought on the website with an email that isn't their Discord email shouldn't press that button. They sign in to the dashboard with the email they bought with and link Discord there first, so the bot finds the account that already holds their balance.
After paying: four commands
Once paid, the rest of the day-to-day is four commands.
- /usage: the balance plus a 24-hour usage chart.
- /proxies: their proxy lines, in a DM only. Up to 25 lines come as a code block, more come as a .txt file, and they pick a country. Run in a server it is refused.
- /alerts: a low-balance DM at a threshold they set themselves.
- /updates: opt in to promotional DMs. Nothing promotional arrives without it.
/usage, /alerts and /updates work in a channel too. /proxies doesn't, on purpose: proxy strings are credentials, and a channel is not where they belong.
/proxies targets by country. For city, ISP or OS targeting, members use the dashboard generator.
What the group gets out of it
Two things, and neither needs the group to run anything.
A member-only discount code. We tie a code to your server and check membership live at checkout; the member types it into the "Have a discount code?" modal above. How to get one, and the exact refusals a non-member sees, is in the gated codes post.
Attribution. Members who sign up through your affiliate link, or who join our Discord through your personal invite link and then sign up, are attributed to you, and the affiliate program pays 10% of a referred customer's first month. The link and the numbers are on your dashboard at pr.basilproxies.com.
What the bot doesn't do: it doesn't sell to a Discord account with no Basil account behind it, it doesn't hand out proxy lines in a channel, and it doesn't carry a price list of its own.
The cook groups page puts the code, the pool and the bot side by side, and the ticket to set any of them up is the same ticket.
Common questions
- Does /buy work inside a server channel or only in a DM?
- Both. In a channel only the person who ran it sees the reply. A DM is cleaner, because the whole flow is one message that keeps redrawing itself in place.
- Are the prices in /buy different from the website?
- No. The size menu says the prices are yours, the same ones the dashboard shows, and the Pay link opens Stripe's hosted page at that price.
- What if the member has no Basil account?
- The bot answers You don't have a Basil Proxies account yet and shows a Create your account button, which signs them up with Discord login. Someone who already bought with a different email signs in to the dashboard with it and links Discord there first.
- Can members get their proxy strings from the bot too?
- Yes, with /proxies, in a DM only. Up to 25 lines come as a code block and more come as a .txt file, with country targeting.