Now in Beta

Get paid in real money.
Not crypto tokens.

Add subscriptions to your Telegram, Discord, or WhatsApp bot in 3 lines of code. Revenue goes straight to your bank account via Stripe.

bot.tstypescript
import { Slootly } from '@slootly/sdk';

const gate = new Slootly('sk_live_...');

const sub = await gate.check(userId, 'telegram');
if (sub.active && sub.plan === 'pro') {
  // Unlock premium features
}

Works with every messaging platform

The Telegram Stars cash-out nightmare

Every dollar you earn takes a painful detour through the crypto ecosystem

Stars
21-day hold
Fragment
KYC friction
Toncoin
Price volatility
Exchange
More KYC
Fiat
Fees on fees
Bank
Finally.
With Slootly:User pays → Stripe → Your bank account. Done.

Three steps. Five minutes.

From zero to collecting subscription revenue

01

Connect Stripe

Sign up and connect your Stripe account via OAuth. Slootly never holds your money -- payments go directly to your Stripe account.

02

Create Plans

Define your subscription tiers in the dashboard: Free, Pro, Enterprise. Set prices, features, and trial periods. No code needed.

03

Add 3 Lines of Code

Install the SDK, initialize with your API key, and call gate.check() in your bot handler. That's it. Subscriptions work across all platforms.

Everything you need to monetize your bot

Built by bot developers, for bot developers

Cross-Platform

One SDK, every platform. Telegram, Discord, WhatsApp, Slack -- same integration code, same subscription state.

🔒

Feature Gating

Gate features inside your bot, not just channel access. Check subscription tier with a single function call.

💰

Direct Fiat Payout

Revenue settles in real currency via Stripe. No crypto intermediary, no 21-day hold, no price volatility.

🤖

AI-Friendly Docs

Optimized for LLMs with llms.txt, Context7, and self-documenting APIs. AI coding tools generate correct integrations on first try.

5-Minute Setup

Connect Stripe, create plans in the dashboard, add 3 lines to your bot. No config files, no infrastructure to manage.

🔗

Identity Linking

One subscription works across platforms. A user who pays on Telegram gets Pro features on Discord too.

Before and after Slootly

Stop building payment infrastructure. Start shipping features.

Before: 60+ lines, hours of work
typescript
// DIY: Build your own subscription system
import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_KEY);

// Create a checkout session
app.post('/create-checkout', async (req, res) => {
  const { userId, plan, platform } = req.body;

  // Look up or create customer
  let customer = await db.customers.findOne({ platform, userId });
  if (!customer) {
    const stripeCustomer = await stripe.customers.create({
      metadata: { platform, userId },
    });
    customer = await db.customers.create({
      stripeId: stripeCustomer.id,
      platform,
      userId,
    });
  }

  // Create the checkout session
  const session = await stripe.checkout.sessions.create({
    customer: customer.stripeId,
    mode: 'subscription',
    line_items: [{ price: PLAN_PRICES[plan], quantity: 1 }],
    success_url: `${BASE_URL}/success`,
    cancel_url: `${BASE_URL}/cancel`,
  });

  res.json({ url: session.url });
});

// Handle webhooks
app.post('/webhooks/stripe', async (req, res) => {
  const sig = req.headers['stripe-signature'];
  const event = stripe.webhooks.constructEvent(
    req.body, sig, WEBHOOK_SECRET
  );

  switch (event.type) {
    case 'checkout.session.completed':
      // Update subscription status in your DB
      break;
    case 'invoice.paid':
      // Handle renewal
      break;
    case 'customer.subscription.deleted':
      // Handle cancellation
      break;
  }

  res.sendStatus(200);
});

// Check subscription in bot handler
bot.on('message', async (ctx) => {
  const sub = await db.subscriptions.findOne({
    platform: 'telegram',
    userId: ctx.from.id.toString(),
  });

  if (sub?.status === 'active' && sub?.plan === 'pro') {
    // Premium feature
  }
});
After: 15 lines, 5 minutes
typescript
import { Slootly } from '@slootly/sdk';

const gate = new Slootly('sk_live_...');

bot.on('message', async (ctx) => {
  const sub = await gate.check(
    ctx.from.id.toString(),
    'telegram'
  );

  if (sub.active && sub.plan === 'pro') {
    // Premium feature
  } else {
    const url = gate.checkoutUrl(
      ctx.from.id.toString(),
      'pro',
      'telegram'
    );
    ctx.reply(`Upgrade to Pro: ${url}`);
  }
});

TypeScript and Python. Your choice.

import { Slootly } from '@slootly/sdk';

const gate = new Slootly('sk_live_...');

// Check subscription status
const sub = await gate.check(userId, 'telegram');
console.log(sub.active);  // true
console.log(sub.plan);    // 'pro'
console.log(sub.status);  // 'active'

// Generate checkout URL
const url = gate.checkoutUrl(userId, 'pro', 'telegram');

// Fetch available plans
const plans = await gate.getPlans();

// Handle webhook events
app.post('/webhooks', gate.onEvent((event) => {
  console.log(event.type);  // 'subscription.created'
  console.log(event.data);
}));

Free until you are making real money

Slootly only succeeds when you succeed

Free

For indie developers getting started

$0/mo
  • Up to $500/mo processed
  • 2.5% transaction fee + Stripe fees
  • All platforms supported
  • Unlimited plans
  • Webhook events
  • JWT offline verification
  • Community support
Get Started Free
Most Popular

Pro

For serious bot businesses

$29/mo
  • Unlimited processed volume
  • 1.5% transaction fee + Stripe fees
  • Custom checkout branding
  • Advanced analytics
  • Priority webhooks
  • Priority email support
  • Identity linking
Start Pro Trial

Enterprise

For agencies and high-volume bots

Custom
  • Everything in Pro
  • Custom transaction fees
  • White-label checkout
  • Dedicated account manager
  • SLA guarantee
  • SSO / team management
  • Custom integrations
Contact Sales

Ready to monetize your bot?

Start building with Slootly and ship subscription features in minutes, not weeks.