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.
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
Three steps. Five minutes.
From zero to collecting subscription revenue
Connect Stripe
Sign up and connect your Stripe account via OAuth. Slootly never holds your money -- payments go directly to your Stripe account.
Create Plans
Define your subscription tiers in the dashboard: Free, Pro, Enterprise. Set prices, features, and trial periods. No code needed.
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.
// 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
}
});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
- Up to $500/mo processed
- 2.5% transaction fee + Stripe fees
- All platforms supported
- Unlimited plans
- Webhook events
- JWT offline verification
- Community support
Pro
For serious bot businesses
- Unlimited processed volume
- 1.5% transaction fee + Stripe fees
- Custom checkout branding
- Advanced analytics
- Priority webhooks
- Priority email support
- Identity linking
Enterprise
For agencies and high-volume bots
- Everything in Pro
- Custom transaction fees
- White-label checkout
- Dedicated account manager
- SLA guarantee
- SSO / team management
- Custom integrations
Ready to monetize your bot?
Start building with Slootly and ship subscription features in minutes, not weeks.