Sell kits with your own Stripe account

How the /xrbuykit payment flow works, end to end

🛒 /xrbuykit 🔌 /xrserverconnect 🎁 /xrkitcreate

XBot never touches your money. Each community connects its own Stripe account — members pay you directly, and XBot's only job is to watch for the payment and flip a Discord role on or off. No marketplace cut, no XBot-owned Stripe account in the middle.

Once it's set up: a member runs /xrbuykit, picks a kit, pays on Stripe — the kit's role is granted the instant payment succeeds, and revoked automatically the moment they cancel. Nobody touches Discord roles by hand.

1. Get your Stripe Secret Key

  1. Open your Stripe Dashboard

    No Stripe account yet? Create one free at stripe.com — it takes a few minutes.

  2. Find your API keys

    Search the Dashboard for "API keys" (Stripe has reorganized this a few times — the search bar always finds it, regardless of where the menu currently lives). Copy the Secret key (starts with sk_live_... or sk_test_... if you're testing first).

  3. Paste it into Discord

    Run /xrserverconnect on your server → 💳 Edit Stripe → paste the Secret Key. It's encrypted at rest (AES-256-GCM) — nobody, including XBot's own team, can read it back out.

2. Create what you're selling

  1. Add a Product in Stripe

    Dashboard → Product catalog → Add product. Give it a name (e.g. "Kit Tier 3"), a price, and set it as recurring (subscription) — that's what makes the automatic revoke-on-cancel possible.

  2. Copy the ID

    You can copy either ID Stripe shows you — the Product ID (prod_..., shown prominently at the top of the product page) or the Price ID (price_..., listed under the price itself). XBot accepts both and resolves a Product ID to its active price automatically, so you can't paste the "wrong" one.

  3. Attach it to a kit

    Run /xrkitcreate → pick the kit tier → at the purchase-links step, paste the ID into the Price/Product ID field. Save.

3. Connect the webhook

This is the piece that makes the role grant/revoke automatic — without it, payments still work but nobody gets their role.

  1. Add an event destination

    In your Stripe Dashboard, search for "Webhooks" (or go to dashboard.stripe.com/webhooks) → Add destination.

  2. Pick the events

    Search for and select exactly these two: checkout.session.completed and customer.subscription.deleted.

  3. Set the endpoint URL

    Choose destination type Webhook endpoint, and set the URL to:

    https://xtremebot.tech/stripe/webhook

  4. Copy the signing secret

    Once created, Stripe shows a Signing secret (whsec_...). Paste that into /xrserverconnect → 💳 Edit Stripe → Webhook Secret.

One endpoint serves every community running XBot — each server's webhook secret is checked independently, so your events are only ever matched against your own server.

4. Members buy with /xrbuykit

Any member on your server can now run /xrbuykit, pick a kit from the ones you've connected, and get a personal, single-use Stripe Checkout link (expires in 24h). On successful payment, the role shows up automatically — no admin action needed, no waiting.

One more thing: Terms of Service

Stripe Checkout requires an "I agree to the Terms" checkbox for this flow. In your Stripe Dashboard, set a Terms of Service URL under Settings → Public details — without it, checkout sessions will fail to create.


Questions about a specific step? The same walkthrough lives in your server's 🔒 Ghid Admin channel, generated automatically by /xrbotsetup.