DEV Community

SemTiOne
SemTiOne

Posted on

How I Added Paid Tiers to My Discord Bot Without Stripe or Any Payment API

Most tutorials for monetizing a Discord bot assume you'll integrate Stripe or LemonSqueezy directly into the bot.

I went a different route, manual grants via Ko-fi. Here's why and how.

The problem with payment APIs in bots

For a new bot with low volume, integrating a full payment API means:

  • Webhook endpoints to maintain
  • Subscription management logic
  • Refund handling
  • Failed payment handling

That's a lot of complexity for a bot that might have 10 paying customers at launch.

The Ko-fi manual grant approach

Instead, I set up Ko-fi as the payment page and handle grants manually:

  1. Customer buys on Ko-fi
  2. I get a notification
  3. I run /grant guild_id:123456 days:30 in my admin server
  4. Bot updates the database and unlocks paid features
python@app_commands.command(name="grant")
async def grant_paid(self, interaction, guild_id: str, days: int = 30):
    if not await is_bot_owner(interaction):
        return
    expires_at = int(time.time()) + (days * 86400)
    await upsert_subscription(self.db, guild_id=guild_id,
                               tier="paid", expires_at=expires_at)
Enter fullscreen mode Exit fullscreen mode

When to upgrade to automated payments

Once you hit ~20-30 paying customers, the manual process gets tedious. That's when it makes sense to add Ko-fi webhooks (requires Ko-fi Gold) or switch to Stripe.

For now, manual is fine, and it means I talk to every single customer personally.

The result

Clean, simple, zero ongoing maintenance cost. Works well for early stage.

Invite Link: https://discord.com/oauth2/authorize?client_id=1482225606761386085&permissions=2147601472&integration_type=0&scope=bot+applications.commands

Full bot: https://ko-fi.com/semtione

Top comments (0)