Telegram bot payments

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.

0.8%fee per payment
$0monthly fee
8coins and networks
1API call per order

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. 1

    Verify your bot

    Add your bot username, then put the short code we give you in the bot description with @BotFather.

  2. 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. 3

    Send the pay button

    Send the checkout link as an inline button. The payment page opens inside Telegram.

  4. 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
API docs
bot.py
# 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.