Как подключить СБП к Telegram-боту: приём оплат по QR за 15 минут

Flow Masters28 июня 2026 г.18 мин

Как подключить СБП к Telegram-боту: приём оплат по QR за 15 минут

Подключить СБП к Telegram-боту можно за 15–30 минут: достаточно заключить договор с банком-эквайером (Точка Банк, ЮKassa, Robokassa, Prodamus), получить API-ключи, сгенерировать QR-код или платёжную ссылку СБП и отправить её клиенту инлайн-кнопкой. Подтверждение оплаты приходит автоматическим webhook на ваш сервер — клиент не покидает чат, конверсия достигает 78–85%, а комиссия в 3–5 раз ниже, чем по картам.

Ниже — пошаговый туториал с готовым кодом на Node.js и Python: создание счёта, генерация QR, webhook проверки статуса, тестирование и обработка ошибок.

Что вы узнаете

  • Что такое СБП и почему для Telegram-бота это оптимальный способ оплаты
  • Сравнение 4 способов подключения: нативный Telegram Payments, Точка, ЮKassa, Robokassa — с комиссиями
  • Пошаговая настройка через Точка Банк с кодом на Node.js и Python
  • Генерация QR-кода СБП и отправка в чат инлайн-кнопкой
  • Приём webhook о статусе оплаты и его проверка
  • Тестирование платёжного сценария
  • Обработка типовых ошибок и расхождений
  • Как закрыть задачу «интегрировать оплату по ссылке» без сайта

Что такое СБП и почему именно для Telegram-бота

Система быстрых платежей (СБП) — сервис Банка России и НСПК для мгновенных переводов по QR-коду или номеру телефона между банками-участниками. К началу 2026 года к СБП подключено свыше 900 банков, ей пользуются 87% россиян.

Для приёма платежей в Telegram-боте у СБП пять ключевых преимуществ перед банковскими картами и онлайн-кассой:

Критерий Банковская карта Онлайн-касса СБП в боте
Комиссия для бизнеса 2,0–3,0% 1,5–2,5% 0,4–0,7% (ставка СБП)
Конверсия оплаты 60–70% 65–75% 78–85%
Время оплаты 30–60 сек 20–40 сек 5–10 сек
Ввод данных Номер карты, срок, CVV, 3-D Secure Реквизиты или QR Только подтверждение в приложении банка
Покидание чата Часто Часто Нет

Telegram-бот и СБП созданы друг для друга: пользователь уже держит телефон в руке, бот присылает QR, клиент сканирует его камерой Telegram или переходит по ссылке СБП, подтверждает в приложении банка — и через 5–10 секунд бот пишет «Оплата получена». Без ввода реквизитов, без 3-D Secure, без ухода на сторонние страницы.

Базовая ставка СБП для бизнеса в 2026 году: 0,4% при сумме перевода до 5000 ₽, 0,7% свыше 5000 ₽. Эквайер (банк, через который вы принимаете платёж) добавляет собственную наценку — именно поэтому у ЮKassa СБП стоит от 1,5%, а Точка Банк передаёт ставку СБП напрямую.

Сравнение способов: где подключить СБП для бота

Есть два принципиально разных пути подключения СБП к Telegram-боту:

  1. Нативный Telegram Payments — встроенный платёжный фреймворк через sendInvoice. Провайдер подключается в BotFather. СБП доступен через ЮKassa или SmartGlocal. Плюс: нативная платёжная кнопка внутри Telegram. Минус: фиксированный набор провайдеров, комиссии провайдера.
  2. Ручной QR/ссылка через любой банк — бот сам создаёт платёж через API банка, получает QR-код СБП и отправляет его клиенту инлайн-кнопкой (url-кнопка с ссылкой СБП). Плюс: любой банк, более гибкая логика, можно менять тариф. Минус: чуть больше кода.

Сравнение по банкам-эквайерам:

Банк/сервис Комиссия СБП Абонплата Онлайн-касса (54-ФЗ) API
Точка Банк 0,4% / 0,7% (ставка СБП напрямую) нет встроена Tinkoff-совместимый REST
ЮKassa от 1,5% нет встроена (54-ФЗ) REST + нативный Telegram Payments
Robokassa от 2,0% нет опционально (через партнёра) XML/JSON/REST
Prodamus 0,4–4,0% нет встроена REST + готовый модуль Telegram

Вердикт. Самая низкая комиссия — у Точки (ставка СБП без наценки). Самый быстрый старт без кода платёжного флоу — у Prodamus и ЮKassa через нативный Telegram Payments. Самый гибкий сценарий с любой логикой бота — ручной QR через Точка или Prodamus.

Дальше разбираем пошагово самый популярный и выгодный вариант — Точка Банк + ручной QR СБП.

Пошаговая настройка через Точка Банк

Точка Банк передаёт ставку СБП напрямую (0,4–0,7%), не берёт абонентскую плату и встроил онлайн-кассу 54-ФЗ. Платёжная платформа совместима с API Тинькофф (Точка входит в экосистему), поэтому SDK и эндпоинты знакомы большинству разработчиков.

Шаг 1. Регистрация и получение ключей

  1. Откройте счёт ИП или ООО в Точка Банк (1–2 рабочих дня, дистанционно).
  2. В личном кабинете подключите «Приём платежей» → «Интернет-эквайринг».
  3. Подключите метод оплаты «СБП» и укажите URL для webhook-уведомлений (например, https://bot.example.com/webhook/tinkoff).
  4. Получите два ключа: TerminalKey (идентификатор терминала) и Password (секрет для подписи запросов).

Самозанятым доступны только переводы через СБП по номеру телефона. Для полноценного интернет-эквайринга с онлайн-кассой нужно ИП или ООО.

Шаг 2. Создание счёта (Init)

Первый вызов — Init: создаёт платёжную сессию и возвращает PaymentId и PaymentURL. Сумма указывается в копейках: 50000 = 500 рублей.

curl:

curl -X POST https://securepay.tinkoff.ru/v2/Init \
  -H "Content-Type: application/json" \
  -d '{
    "TerminalKey": "1717897301001DEMO",
    "Amount": 50000,
    "OrderId": "order-100500",
    "Description": "Оплата курса «Нейросети для бизнеса»",
    "DATA": { "Frame": "false", "Phone": "+79001234567" },
    "Receipt": {
      "Email": "client@example.com",
      "Taxation": "usn_income",
      "Items": [{
        "Name": "Курс «Нейросети для бизнеса»",
        "Price": 50000,
        "Quantity": 1,
        "Amount": 50000,
        "Tax": "none",
        "PaymentMethod": "full_payment",
        "PaymentObject": "service"
      }]
    }
  }'

Ответ:

{
  "Success": true,
  "ErrorCode": "0",
  "TerminalKey": "1717897301001DEMO",
  "Status": "NEW",
  "PaymentId": "4728472",
  "OrderId": "order-100500",
  "Amount": 50000,
  "PaymentURL": "https://securepay.tinkoff.ru/v2/..."
}

Node.js (с подписью запроса):

const crypto = require('crypto');
const axios = require('axios');

const TERMINAL_KEY = process.env.TINKOFF_TERMINAL_KEY;
const PASSWORD = process.env.TINKOFF_PASSWORD;

// Подпись: SHA-256 от конкатенации отсортированных пар ключ=значение + Password
function signToken(payload) {
  const data = { ...payload, Password: PASSWORD };
  delete data.Token;
  const concatenated = Object.keys(data)
    .sort()
    .map((k) => `${k}=${data[k]}`)
    .join('');
  return crypto.createHash('sha256').update(concatenated).digest('hex');
}

async function createPayment({ orderId, amountKopecks, description, email }) {
  const base = {
    TerminalKey: TERMINAL_KEY,
    Amount: amountKopecks,
    OrderId: orderId,
    Description: description,
    DATA: { Frame: 'false' },
    Receipt: {
      Email: email,
      Taxation: 'usn_income',
      Items: [{
        Name: description,
        Price: amountKopecks,
        Quantity: 1,
        Amount: amountKopecks,
        Tax: 'none',
      }],
    },
  };

  const body = { ...base, Token: signToken(base) };
  const { data } = await axios.post(
    'https://securepay.tinkoff.ru/v2/Init',
    body,
    { headers: { 'Content-Type': 'application/json' } }
  );
  if (!data.Success) throw new Error(`Init failed: ${data.Message}`);
  return data; // { PaymentId, PaymentURL, ... }
}

module.exports = { createPayment, signToken };

Python (Flask + requests):

import hashlib
import requests

TERMINAL_KEY = os.environ["TINKOFF_TERMINAL_KEY"]
PASSWORD = os.environ["TINKOFF_PASSWORD"]

def sign_token(payload: dict) -> str:
    data = {**payload, "Password": PASSWORD}
    data.pop("Token", None)
    concat = "".join(f"{k}={data[k]}" for k in sorted(data))
    return hashlib.sha256(concat.encode()).hexdigest()

def create_payment(order_id: str, amount_kop: int, description: str, email: str) -> dict:
    base = {
        "TerminalKey": TERMINAL_KEY,
        "Amount": amount_kop,
        "OrderId": order_id,
        "Description": description,
        "DATA": {"Frame": "false"},
        "Receipt": {
            "Email": email,
            "Taxation": "usn_income",
            "Items": [{
                "Name": description,
                "Price": amount_kop,
                "Quantity": 1,
                "Amount": amount_kop,
                "Tax": "none",
            }],
        },
    }
    base["Token"] = sign_token(base)
    r = requests.post("https://securepay.tinkoff.ru/v2/Init", json=base, timeout=15)
    r.raise_for_status()
    resp = r.json()
    if not resp.get("Success"):
        raise RuntimeError(f"Init failed: {resp.get('Message')}")
    return resp  # PaymentId, PaymentURL

Шаг 3. Генерация QR-кода СБП (GetQr)

После Init вызываем GetQr — он вернёт payload СБП (строку вида https://qr.nspk.ru/...), которую клиент отсканирует камерой или откроет по ссылке.

curl -X POST https://securepay.tinkoff.ru/v2/GetQr \
  -H "Content-Type: application/json" \
  -d '{
    "TerminalKey": "1717897301001DEMO",
    "PaymentId": "4728472",
    "DataType": "PAYLOAD"
  }'

Ответ:

{
  "Success": true,
  "ErrorCode": "0",
  "Data": "https://qr.nspk.ru/AS1000112Q102M17M3T2J7?type=02&bank=100000000111&sum=50000&cur=RUB&crc=1E2F",
  "PaymentId": "4728472"
}

Поле Data — это и есть ссылка СБП. Её можно:

  • отправить инлайн-кнопкой (url-кнопка в Telegram);
  • закодировать в QR-картинку и отправить как фото;
  • открыть как обычную ссылку — на мобильном откроется приложение банка по умолчанию.

Node.js — генерация QR-картинки и отправка в чат:

const QRCode = require('qrcode');
const axios = require('axios');
const { TELEGRAM_TOKEN } = process.env;

async function sendSbpQr(chatId, paymentId) {
  // 1. Получаем payload СБП
  const { data: qrResp } = await axios.post(
    'https://securepay.tinkoff.ru/v2/GetQr',
    { TerminalKey: TERMINAL_KEY, PaymentId: paymentId, DataType: 'PAYLOAD' }
  );
  if (!qrResp.Success) throw new Error('GetQr failed');

  // 2. Рисуем QR в PNG (буфер)
  const pngBuffer = await QRCode.toBuffer(qrResp.Data, {
    width: 512,
    margin: 2,
    color: { dark: '#0a0a0a', light: '#ffffff' },
  });

  // 3. Отправляем картинку + инлайн-кнопку со ссылкой СБП
  const formData = new FormData();
  formData.append('chat_id', chatId);
  formData.append('photo', new Blob([pngBuffer]), 'sbp.png');
  formData.append('caption', '🤖 Отсканируйте QR или нажмите кнопку — оплата откроется в приложении банка');
  await axios.post(`https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendPhoto`, formData);

  await axios.post(`https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage`, {
    chat_id: chatId,
    text: 'Оплата курса «Нейросети для бизнеса» — 500 ₽',
    reply_markup: {
      inline_keyboard: [[
        { text: '💳 Оплатить через СБП', url: qrResp.Data },
      ]],
    },
  });
}

Telegram инлайн-кнопка типа url с ссылкой https://qr.nspk.ru/... откроет приложение банка, установленное по умолчанию. Никаких отдельных обработчиков не требуется — это обычная внешняя ссылка.

Шаг 4. Webhook проверки статуса оплаты

Банк присылает на ваш URL (указанный в личном кабинете) POST с уведомлением Notification при каждой смене статуса. Обязательно проверяйте подпись — иначе эндпоинт можно подделать.

// Node.js + Express
const express = require('express');
const { signToken } = require('./payment');
const app = express();
app.use(express.json());

app.post('/webhook/tinkoff', async (req, res) => {
  const notif = req.body;

  // 1. Проверка подписи
  const expectedToken = signToken(notif);
  if (notif.Token !== expectedToken) {
    console.warn('Bad token', notif.OrderId);
    return res.status(400).send('OK'); // отвечаем OK, но игнорируем
  }

  // 2. Идемпотентность: проверяем, не обработан ли уже заказ
  const already = await Orders.findOne({ orderId: notif.OrderId, paid: true });
  if (already) return res.send('OK');

  // 3. Разбираем статус
  if (notif.Status === 'CONFIRMED') {
    await Orders.markPaid(notif.OrderId, notif.PaymentId, notif.Amount);
    await notifyClient(notif.OrderId, '✅ Оплата получена! Доступ открыт.');
    await crmCreateDeal(notif.OrderId); // передать сделку в amoCRM
  } else if (notif.Status === 'REJECTED' || notif.Status === 'REFUNDED') {
    await Orders.markFailed(notif.OrderId, notif.Status);
    await notifyClient(notif.OrderId, '❌ Платёж не прошёл. Попробуйте ещё раз.');
  }

  // 4. ОБЯЗАТЕЛЬНО ответить 200 OK
  res.send('OK');
});
# Python + Flask
from flask import Flask, request
app = Flask(__name__)

@app.post("/webhook/tinkoff")
def tinkoff_webhook():
    notif = request.json
    expected = sign_token(notif)
    if notif.get("Token") != expected:
        return "OK", 400

    order = Orders.get(notif["OrderId"])
    if order and order.paid:
        return "OK"

    if notif["Status"] == "CONFIRMED":
        order.mark_paid(notif["PaymentId"], notif["Amount"])
        notify_client(notif["OrderId"], "✅ Оплата получена! Доступ открыт.")
        crm_create_deal(notif["OrderId"])  # amoCRM / Bitrix
    elif notif["Status"] in ("REJECTED", "REFUNDED"):
        order.mark_failed(notif["Status"])
        notify_client(notif["OrderId"], "❌ Платёж не прошёл. Попробуйте ещё раз.")

    return "OK"  # Банк ждёт 200 OK

Критично: банк повторяет webhook каждые 10–60 минут, пока не получит 200 OK. Поэтому:

  1. Всегда отвечайте 200 OK (даже при внутренней ошибке логики — иначе банк будет слать дубли).
  2. Реализуйте идемпотентность по OrderId: повторная обработка подтверждённого платежа не должна списывать товар дважды.
  3. Сверяйте сумму notif.Amount с суммой заказа в вашей БД — защита от подмены.

Альтернатива: нативный Telegram Payments с ЮKassa

Если нужна именно встроенная платёжная кнопка Telegram (без ухода по ссылке), используйте нативный Telegram Payments API с ЮKassa или SmartGlocal — это единственные провайдеры, поддерживающие СБП внутри Telegram-инвойсов.

Шаг 1. Подключение провайдера в BotFather

@BotFather → /mybots → выбрать бота → Payments →
подключить ЮKassa → указать shopId и secret key из ЛК ЮKassa

BotFather вернёт provider_token вида 284685063:TEST:.... Для прод-режима токен начнётся без TEST:.

Шаг 2. Создание инвойса (sendInvoice)

await axios.post(`https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendInvoice`, {
  chat_id: chatId,
  title: 'Курс «Нейросети для бизнеса»',
  description: 'Полный доступ к 12 урокам и шаблонам',
  payload: JSON.stringify({ order_id: 'order-100500', type: 'course' }),
  provider_token: '284685063:TEST:xxxxxxxx', // от ЮKassa через BotFather
  currency: 'RUB',
  prices: [{ label: 'Курс', amount: 50000 }], // копейки
  need_email: true,
  send_email_to_provider: true,
  provider_data: {
    receipt: {
      items: [{
        description: 'Курс «Нейросети для бизнеса»',
        quantity: '1',
        amount: { value: '500.00', currency: 'RUB' },
        vat_code: 1,
      }],
    },
  },
});

Telegram сам показывает платёжную кнопку и список способов оплаты (карта, СБП, SberPay) — клиент выбирает СБП, подтверждает в приложении банка.

Шаг 3. Приём pre_checkout и успешной оплаты

Telegram требует ответить на pre_checkout_query за 10 секунд, иначе кнопка зависнет:

// Webhook от Telegram
if (update.pre_checkout_query) {
  await axios.post(`https://api.telegram.org/bot${TOKEN}/answerPreCheckoutQuery`, {
    pre_checkout_query_id: update.pre_checkout_query.id,
    ok: true,
  });
  return;
}

if (update.message?.successful_payment) {
  const sp = update.message.successful_payment;
  const payload = JSON.parse(sp.invoice_payload); // { order_id: 'order-100500' }
  await Orders.markPaid(payload.order_id, sp.telegram_payment_charge_id);
  await notifyClient(payload.order_id, '✅ Оплата получена! Доступ открыт.');
}

Нативный Telegram Payments удобен, но: провайдеров всего два, комиссия ЮKassa (от 1,5% за СБП) выше ставки СБП, и сложнее делать кастомную логику (скидки, подписки, частичные оплаты). Ручной QR через Точка гибче и дешевле.

Подробнее о нативном фреймворке — в статье Telegram Payments: как принимать оплату через бота.

Как интегрировать оплату по ссылке (без QR)

Частый связанный запрос — «как интегрировать оплату по ссылке», когда QR рисовать не нужно, а нужна просто кликабельная ссылка. Здесь всё то же, что и для СБП, но вместо GetQr вы используете PaymentURL из ответа Init:

// paymentUrl из Init: https://securepay.tinkoff.ru/v2/...
await axios.post(`${TG_API}/sendMessage`, {
  chat_id: chatId,
  text: '🛒 Спасибо за заказ! Нажмите кнопку, чтобы оплатить.',
  reply_markup: {
    inline_keyboard: [[
      { text: '💳 Оплатить 500 ₽', url: paymentUrl },
    ]],
  },
});

Это универсальный паттерн: одна инлайн-кнопка url работает и для СБП-payload, и для платёжной страницы банка, и для счёта ЮKassa/Robokassa/Prodamus. Подробнее про эквайринг для ИП — в гайде Интернет-эквайринг для ИП.

Тестирование платёжного сценария

Точка и ЮKassa дают тестовые терминалы (у Точки ключи с пометкой DEMO, у ЮKassa — с префиксом test_). Полный чек-лист перед продакшеном:

  1. Создать тестовый платёж на 10 ₽, убедиться, что Init вернул Success: true.
  2. Получить QR/ссылку, открыть с телефона, оплатить тестовой картой или подтвердить СБП в приложении банка-тестёра.
  3. Проверить webhook: статус CONFIRMED дошёл, подпись валидна, заказ переведён в paid.
  4. Двойная отправка webhook: вручную повторить запрос на /webhook/tinkoff — заказ не должен зачислиться дважды (идемпотентность).
  5. Негативный сценарий: отменить платёж на стороне банка → статус REJECTED → клиенту ушло «Попробуйте ещё раз».
  6. Тайм-аут: не оплачивать 30 минут → проверить, что бот напомнит клиенту или закроет заказ.

Минимальный автотест на Python:

def test_payment_flow():
    order = create_payment("order-test-1", 1000, "Тест", "t@t.t")
    assert order["Success"] is True
    # эмулируем webhook подтверждения
    notif = {"OrderId": "order-test-1", "Status": "CONFIRMED",
             "Amount": 1000, "PaymentId": order["PaymentId"]}
    notif["Token"] = sign_token(notif)
    client.post("/webhook/tinkoff", json=notif)
    assert Orders.get("order-test-1").paid is True

Обработка ошибок и частые проблемы

Симптом Причина Решение
Init возвращает INVALID_TOKEN Неверная подпись Проверьте, что Password добавляется последним, ключи сортируются по алфавиту, значение — строка
Webhook приходит повторно Банк не получил 200 OK Отвечайте 200 OK всегда, проверьте, что эндпоинт отвечает за <10 сек
Заказ зачислен дважды Нет идемпотентности Проверяйте флаг paid по OrderId перед обработкой
QR не открывает банк Клиент не выбрал банк в СБП по умолчанию Дублируйте QR картинкой и текстом «Откройте приложение вашего банка и отсканируйте»
REJECTED сразу после Init Не прошёл лимит / неверная сумма Проверьте, что Amount в копейках, не меньше минимума терминала
Чек по 54-ФЗ не формируется Не заполнен Receipt Все платежи от физлиц требуют Receipt с Email/Phone и Items
Клиент оплатил, но бот молчит Webhook упал с 500 Логируйте ошибки, отвечайте 200 OK, используйте очередь (Redis/RabbitMQ) для обработки

Защита от гонок. Между получением webhook и выдачей товара может пройти время. Используйте блокировку по OrderId (например, SELECT ... FOR UPDATE или Redis-лок) — иначе два подряд webhook могут выдать доступ дважды.

Онлайн-касса по 54-ФЗ

Приём оплаты от физлиц через СБП в боте требует онлайн-кассы, если вы ИП или ООО. Точка, ЮKassa и Prodamus предлагают встроенную кассу — чек формируется автоматически по данным из Receipt, отправляется в ОФД и клиенту на почту/телефон.

Исключения:

  • Самозанятые (НПД) — чек формирует приложение «Мой налог», касса не нужна. Используйте СБП по номеру телефона или сервисы вроде Prodamus с режимом самозанятого.
  • Расчёты между юрлицами (B2B) — касса не требуется, но оплата СБП для B2B недоступна (используйте счёт на оплату).

Подробнее о 54-ФЗ и персональных данных в ботах — в статьях Чат-боты и ФЗ-54: оплата СБП с онлайн-кассой и ФЗ-152 и персональные данные в чат-ботах.

Связки с CRM и автоматизацией

Подключение СБП редко бывает изолированным. Типичная схема для бизнеса:

  1. Клиент нажимает «Купить» в боте → создаётся сделка в amoCRM или Bitrix24 на этапе «Ожидает оплаты».
  2. Бот генерирует СБП-платёж и присылает QR.
  3. Webhook CONFIRMED → сделка переводится на этап «Оплачено», клиент получает доступ/товар, в карточку пишется telegram_payment_charge_id.
  4. Если платёж не пришёл за 30 минут → бот напоминает, а в CRM создаётся задача «Связаться с клиентом».

Готовые связки amoCRM ↔ Telegram и автоворонки с оплатой — в статьях Интеграция amoCRM и Telegram-бота и Автоворонки продаж 2026. Если собираете бота с нуля — пригодится руководство по Telegram Bot API.

Чек-лист запуска

  • Договор с эквайером, метод «СБП» включён
  • TerminalKey и Password в переменных окружения (не в коде!)
  • HTTPS-эндпоинт для webhook, отвечающий 200 OK за <10 сек
  • Проверка подписи Token в каждом webhook
  • Идемпотентность по OrderId
  • Сверка суммы notif.Amount с заказом
  • Receipt заполнен (54-ФЗ), онлайн-касса подключена
  • Inline-кнопка с QR/ссылкой СБП, дублирование картинкой
  • Автотест платёжного флоу и негативных сценариев
  • Мониторинг и алерты на ошибки webhook
  • Запасной канал оплаты (карта/ссылка), если СБП недоступен у клиента

FAQ

Сколько времени уходит на подключение СБП к боту? Сама интеграция (Init → GetQr → webhook) — 15–30 минут готового кода. Регистрация ИП и договор с эквайером — 1–3 рабочих дня.

Можно ли принимать СБП без ИП/ООО? Да, как самозанятый — через СБП по номеру телефона или сервисы типа Prodamus с режимом НПД. Онлайн-касса не нужна, чек формирует «Мой налог».

Какой банк выбрать, если важна минимальная комиссия? Точка Банк передаёт ставку СБП напрямую (0,4–0,7%) без абонплаты. Prodamus — от 0,4% для самозанятых. ЮKassa удобнее для нативного Telegram Payments, но комиссия СБП там от 1,5%.

Что делать, если клиент оплатил, но webhook не пришёл? Запросите статус через GetState (Точка) или GET /payments/{id} (ЮKassa) и сверьте с заказом. Не полагайтесь только на webhook — делайте периодическую сверку.

Итог

Подключение СБП к Telegram-боту укладывается в пять шагов: договор с эквайером → Init создаёт счёт → GetQr генерирует QR → inline-кнопка отправляет ссылку в чат → webhook подтверждает оплату. На выходе — комиссия 0,4–0,7% (в 3–5 раз ниже карт), конверсия 78–85% и оплата за 5–10 секунд без выхода из Telegram.

Если нужна не просто оплата, а полноценная связка «бот + СБП + amoCRM/Bitrix + автоворонка + онлайн-касса», команда FlowMasters собирает такие сценарии под ключ: от подбора эквайера под вашу нишу до интеграции с CRM и выдачи доступа после оплаты. Связанные гайды по теме — разработка Telegram-ботов, чат-бот с оплатой СБП и ЮKassa API.

💡 Нужна помощь с автоматизацией?

Обсудим ваш проект — консультация бесплатная

Обсудить проект
Все статьи

Начните экономить уже сегодня

Выберите удобный способ связи — ответим за 30 минут

Оставьте заявку

Получите персональный расчёт стоимости

Нажимая кнопку, вы даёте согласие на обработку персональных данных в соответствии с ФЗ-152 «О персональных данных».

Расчёт стоимости

Начните с самого популярного тарифа

Бесплатная консультация
Прототип за 3 дня
Гарантия результата