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:
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./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:Start here
Connect your shop and run your first commands.