Accept crypto payments in your Telegram bot
Sell to Telegram users in USDT, TON, Bitcoin and Ethereum. Your bot sends a payment button, the customer pays without leaving Telegram, and the order is delivered the moment the webhook arrives.
What bots sell with ScarabPay
Any bot that takes money from users can accept crypto: one-off orders, subscriptions or balance top-ups.
VPN and proxy
Sell plans by the month and send the access key right after payment.
Digital goods and keys
Licences, accounts and gift codes delivered automatically by the bot.
Private channels
Paid access to channels and groups with an invite link after payment.
Game top-ups
In-game currency and top-ups with the player ID collected by the bot.
Courses and content
Lessons, files and memberships unlocked as soon as the user pays.
Balance top-ups
A permanent deposit address per user, credited to their bot balance.
How it works in a bot
- 1
Verify your bot
Add your bot username, then put the short code we give you in the bot description with @BotFather.
- 2
Create an invoice
When the user taps Buy, your bot calls the API with the amount, order ID and the user’s Telegram ID.
- 3
Send the pay button
Send the checkout link as an inline button. The payment page opens inside Telegram.
- 4
Deliver on webhook
You get a signed invoice.paid webhook with the order and user. The bot delivers instantly.
A few lines in any bot framework
It is plain HTTP, so it works with aiogram, python-telegram-bot, Telegraf, grammY or your own code. No Telegram payment provider token needed.
- Pass the Telegram user ID as customer_ref
- Verify the webhook signature with your secret
- Test with sandbox keys before going live
# 1. User taps "Buy": create an invoice r = requests.post(API + "/invoices", headers=AUTH, json={ "amount": 5, "order_id": order_id, "customer_ref": str(user_id)}) url = r.json()["data"]["checkout_url"] # 2. Send the pay button await bot.send_message(user_id, "VPN 1 month: $5", reply_markup=pay_button(url)) # 3. Webhook: deliver the order if event["event"] == "invoice.paid": deliver(event["data"]["customer_ref"])
Built for Telegram sales
Checkout inside Telegram
The payment page opens in Telegram’s browser, with QR code, exact amount and live status in three languages.
Top-up addresses per user
Give each user a permanent address for balance top-ups. Every deposit is matched to the user automatically.
Payment links
No code? Post a payment link in your channel or send it in chat, with a fixed or open amount.
Signed webhooks
HMAC-signed events for paid, underpaid, expired and late payments, retried until your server answers.
Telegram bot payments: questions
How do I accept crypto payments in a Telegram bot?
Create a ScarabPay project for your bot, verify it, then call the API when a user wants to pay. Send the checkout link as a button and deliver the order when the invoice.paid webhook arrives.
Do I need Telegram Payments or a provider token?
No. ScarabPay works with a normal checkout link, so you do not need a Telegram payment provider or Telegram Stars.
How do I verify that the bot is mine?
We give you a short code. Add it to the bot description in @BotFather and press Verify. Only the bot owner can change the description.
Can each user get a permanent top-up address?
Yes. Request a static address with the user’s Telegram ID as customer_ref. Every deposit to it is credited and reported to your webhook with that ID.
Which coins can users pay with?
USDT on TRC20, BEP20, ERC20 and TON, USDC on BEP20, Bitcoin, Ethereum and Toncoin.
How much does it cost?
0.8% per successful payment, with no setup or monthly fee.
Keep reading
Turn your bot into a store
Connect your Telegram bot in a few minutes. You only pay when your users pay.