Skip to main content
SellAuth AIO Bot runs a SellAuth shop from Discord: orders, inventory, customers, coupons, support tickets, affiliates, resellers, analytics, and native purchase panels — all without leaving the server.
SellAuth Bot is self-hosted — you run your own instance. It is also multi-operator: each person who registers a KeyAuth licence connects their own shop token, so a single instance can serve several shops across several Discord servers. Credentials are encrypted at rest and resolved fresh on every use. See Instances for how isolation works.

What it does

Orders

Invoices, refunds, cancellations, shipping, delivery and status changes — with a typed-confirmation step on anything that moves money or reaches a customer.

Products & inventory

Stock levels, restocking, key delivery, visibility and bulk status changes.

Customers

Lookups, balances, blacklists, whitelists, and key lookup.

Marketing

Coupons, product groups, affiliates and resellers with tiers, suspension and stats.

Support

Tickets — list, claim, reply, close, reopen, archive — and customer feedback.

Analytics

Overview, top products and customers, traffic, payment methods, abandoned checkouts, and activity logs.

Storefront

Purchase panels, claim panels, and role redemption rules that hand out Discord roles for completed purchases.

Admin

Permission tiers, notifications, webhooks, health checks, and multi-shop delegation.

See every command

143 commands across 25 modules, with permission tier, description and SellAuth endpoint for each.

How it is built

Three rules hold the shape together. Every SellAuth call goes through one client. New endpoints get a method on the SellAuth client — never a fresh HTTP session at a call site. That is where auth, timeouts, typed errors, rate-limit handling and retry policy live. Retries are opt-in per endpoint, not per HTTP verb. Each method carries a flag reflecting what a duplicate would actually do. Refunds, deliveries, emails, ticket replies and toggles are never auto-retried; setting an already-set state is. A toggle is the sharpest case — retrying one flips it back and reports success. Renderers build views and never send them. The command layer decides how and when to respond, which keeps every command testable in isolation.

Permissions

By default the only gate is the licence check — anyone with a registered (or delegated) licence can run anything. That suits a solo operator, not a shop with staff. Four tiers, least to most privileged: The line that matters is manager/owner: a manager can sell, refund and restock, but cannot read or replace the SellAuth API token, delegate access, or rewrite the permission rules that constrain them. Configure it from Discord — no file editing needed:
The bot owner, the guild owner, and anyone with Discord’s Manage Server permission are always owner tier and cannot be locked out by any configuration.
Without any configuration the permission layer is inert — nothing changes for an existing deployment until you opt in with /permissions role or /permissions staff. The layer only ever narrows access: someone without a valid licence still can’t run shop commands regardless of tier.
For a support team, /permissions staff enabled:True lends the shop for lookups and fulfilment only, to everyone with Discord Administrator in that server — without handing out your licence. They cannot refund, cancel, change stock or prices, read your API token, delegate access, or change permissions, whatever Discord roles they hold.

Notifications

Four independent categories, each with its own channel and enabled state, configured per guild:
Two categories may share a channel — that’s supported, not a conflict. Notifications come from polling by default; webhooks are an optional addition. See Configuration for how to opt in, Integrations for how the webhook connects to SellAuth’s dashboard, and Installation & permissions for why none of this needs a privileged gateway intent.

Start here

Connect your shop and run your first commands.