Никита Митусов Обсудить задачу

КаксоздатьботавMAX:отрегистрациидооплаты

Никита Митусов 2 ноября 2026 18 мин чтения

Коротко

Чтобы создать бота в MAX, нужен подтверждённый профиль юрлица, ИП или самозанятого на платформе business.max.ru. Физлицу верификация недоступна. Вы заполняете карточку бота, ждёте модерацию до 48 часов по рабочим дням и получаете токен в настройках. Встроенной оплаты нет: покупатель платит по ссылке.

Как создать бота в MAX: подтвердить на business.max.ru профиль юрлица, ИП или самозанятого, заполнить карточку бота, пройти модерацию и взять токен в настройках. Просто физлицу бота не создать, верификация для него закрыта. Встроенной оплаты в MAX нет: покупатель платит по ссылке на странице платёжного сервиса, поэтому для продаж нужен свой сервер или конструктор.

Сразу о том, на чём стоит эта статья. Telegram-ботов с оплатой и выдачей доступа я делал, например для курса по монтажу. Своего бота в MAX я пока не запускал, с этим мессенджером работал только на уровне ссылок на сайтах. Поэтому здесь разбор официальной документации dev.max.ru и правил платформы на 2 ноября 2026, плюс мои проверки адреса API. Что подтвердить не удалось, собрано в отдельном разделе ближе к концу.

Кто может создать бота в MAX: юрлицо, ИП, самозанятый, физлицо

Кто Можно создать бота Сколько ботов Чем подтвердить профиль Никнейм бота
Организация да 5 Госуслуги, T-Business ID, Alfa ID idИНН_bot
ИП да 5 Госуслуги, T-Business ID, Alfa ID idИНН_bot
Самозанятый да 2 только Госуслуги se(orgid)_bot
Физлицо нет 0 верификация недоступна нет
Нерезидент РФ нет 0 верификация недоступна нет

Это условия из инструкции по подключению. Банковские сервисы работают только в веб-версии платформы.

Создать бота в макс без ИП можно, если вы самозанятый. Нужен личный кабинет на Госуслугах, другого способа подтвердить профиль у самозанятого нет. В части статей из выдачи ещё написано, что самозанятым нельзя. Документация это уже опровергает. Цифровой ID и подпись «Госключом» самозанятым недоступны, на обычного бота это не влияет.

Физлицу бот недоступен. Зато приватный канал он создать может: прямо в мессенджере, без платформы, нужен аккаунт на российском номере.

Не заводите бота на чужой профиль. В карточке бота автоматически показано название организации, а передать бота другому владельцу пока нельзя. Если подрядчик заведёт бота на своё ИП, бот останется у него. Правильный порядок такой: профиль ваш, подрядчику вы даёте только токен.

Ещё две детали. Организацию подтверждает только владелец или представитель с правом первой или единственной подписи. И одному номеру телефона соответствует один профиль, поэтому берите рабочий номер, который точно останется в компании.

Как создать бота в MAX: пошаговая инструкция

  1. Войдите на платформу. Откройте business.max.ru/self или мини-приложение «MAX для бизнеса» в самом мессенджере. В веб-версии вход идёт по номеру телефона и коду из SMS.
  2. Создайте профиль и пройдите верификацию. Выберите тип: организация, ИП или самозанятый. Перед проверкой через Госуслуги убедитесь, что вы там в роли руководителя или администратора, а данные из ЕГРЮЛ или ЕГРИП свежие. Обновление обычно занимает до часа, в редких случаях до суток.
  3. Создайте бота. Раздел «Чат-боты», кнопка «Создать». Нужен логотип 500×500 px в JPG или PNG до 5 МБ, название до 59 символов без эмодзи и описание до 200 символов. Никнейм платформа выдаст сама, выбрать или поменять его нельзя.
  4. Дождитесь модерации. По документации проверка занимает до 48 часов по рабочим дням. Статус виден рядом с ботом: «На модерации», «Опубликован» или «Нужны исправления». Результат приходит сообщением от бота «MAX для бизнеса».
  5. Скопируйте токен. Он нужен и конструктору, и своему коду. Подробности в следующем разделе.
  6. Выберите, на чём бот будет работать. Конструктор партнёра подойдёт для простых сценариев: вставляете токен и собираете диалог из блоков. Свой код нужен, когда бот принимает оплату, выдаёт доступ или работает с вашей базой. Сравнение цен есть в статье сколько стоит бот для Telegram и MAX.

Любая правка карточки отправляет бота на повторную модерацию. Пока она идёт, пользователи видят старую версию.

До создания бота подготовьте документы. Правила обязывают показать пользователям, кто управляет ботом, контакты, условия использования и политику обработки персональных данных. Оператором персональных данных считаетесь вы, MAX тут ни при чём. Шаблоны соглашения и политики есть в разделе «Правила» на dev.max.ru.

Как получить токен бота в MAX

Откройте на платформе раздел «Чат-боты», выберите бота, нажмите ⋮, затем «Настройки» и значок копирования справа от поля с токеном. Если профиль и бот созданы в мини-приложении «MAX для бизнеса», токен есть там же, а в одноимённом боте работает команда «Получить токен».

В документации тут есть расхождение. Раздел про API говорит, что токен присваивается при создании бота. Раздел про управление ботом говорит, что он формируется после успешной проверки. Рассчитывайте на второе: до модерации бот всё равно недоступен пользователям.

Токен это полный доступ к боту. Не храните его в коде и не пересылайте в чатах. Если он утёк, нажмите значок обновления в тех же настройках.

Минимальный запрос к API MAX: адрес, токен и сертификат

Адрес API: https://platform-api2.max.ru. Токен передаётся в заголовке Authorization без слова Bearer. Передавать его в адресе запроса больше нельзя.

Первый запрос у вас, скорее всего, упадёт, и код тут ни при чём. С 19 июля 2026 MAX требует обращаться на новый домен, а его сертификат выдан Минцифры. Корневого сертификата Минцифры нет в стандартных списках доверия, поэтому клиент обрывает соединение.

Я проверил это 2 ноября 2026 на Windows 11. Обычный curl остановился на ошибке SEC_E_UNTRUSTED_ROOT. С корневым сертификатом тот же запрос дошёл и вернул 401 с текстом No access token. Это правильный ответ на запрос без токена: адрес живой, защищённое соединение работает. Старый platform-api.max.ru в тот день тоже отвечал, но строить на нём бота нельзя, документация просит перейти.

Скачайте сертификат и сверьте отпечаток. Он должен начинаться с D2:6D:2D:02:31:B7. Общая страница сертификатов лежит на Госуслугах.

curl -fsSL -o russian_root.pem https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt
openssl x509 -in russian_root.pem -noout -fingerprint -sha256

Проверьте бота. В ответ придут его имя, username и is_bot: true.

curl --cacert russian_root.pem "https://platform-api2.max.ru/me" \
  -H "Authorization: ВАШ_ТОКЕН"

Отправьте сообщение. user_id придёт в событии, когда вы сами напишете боту.

curl --cacert russian_root.pem -X POST \
  "https://platform-api2.max.ru/messages?user_id=ID_ПОЛЬЗОВАТЕЛЯ" \
  -H "Authorization: ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{"text": "Проверка связи"}'

Не отключайте проверку сертификата через -k или verify=False. Вы будете передавать токен по соединению, которое никто не проверил.

Запросы с токеном я не выполнял, верифицированного бота у меня нет. Их форма взята из документации, а ответы про сертификат и 401 получены на живом адресе.

Бот в MAX на Python

Официальные библиотеки есть для JavaScript (@maxhub/max-bot-api) и Go. Для Python официальной нет. Можно писать обычные HTTP-запросы или сгенерировать клиент по спецификации OpenAPI, которую MAX выложил на GitHub. Сторонние пакеты существуют, но я их не проверял.

Вот эхо-бот на long polling. Он отвечает на каждое сообщение и годится только для проверки. Токен положите в переменную окружения MAX_TOKEN, рядом с файлом должен лежать russian_root.pem.

import os
import requests

API = "https://platform-api2.max.ru"
HEADERS = {"Authorization": os.environ["MAX_TOKEN"]}
CA = "russian_root.pem"

marker = None
while True:
    params = {"timeout": 30, "types": "message_created"}
    if marker is not None:
        params["marker"] = marker
    data = requests.get(f"{API}/updates", headers=HEADERS, params=params,
                        verify=CA, timeout=40).json()
    marker = data.get("marker", marker)
    for update in data.get("updates", []):
        message = update["message"]
        user_id = message["sender"]["user_id"]
        text = message["body"].get("text", "")
        requests.post(f"{API}/messages", params={"user_id": user_id},
                      headers=HEADERS, json={"text": f"Получил: {text}"},
                      verify=CA, timeout=10)

Этот код я проверил на макете: локальный сервер отдавал событие в формате из документации. На живом API с токеном он не запускался.

Вебхук или long polling: что выбрать в MAX

Для боевого бота документация оставляет только вебхук.

Webhook Long Polling
Боевой бот да нет
Разработка и тесты да да
Свой сервер с HTTPS нужен не нужен
Как работает MAX сам присылает событие бот сам спрашивает о новых событиях

Вместе они не работают: при активной подписке Long Polling молчит. Об этом легко забыть, когда тестируете бота после боевого запуска.

Подписка на события:

curl --cacert russian_root.pem -X POST "https://platform-api2.max.ru/subscriptions" \
  -H "Authorization: ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://ваш-домен.ru/webhook", "update_types": ["message_created", "bot_started", "message_callback"], "secret": "ваш-секрет"}'

Требования к адресу из описания метода:

  • только HTTPS и только порт 443, порт в адресе не указывается;
  • сертификат от доверенного центра или Минцифры, самоподписанный не подойдёт, цепочка должна быть полной;
  • ответ HTTP 200 в течение 30 секунд, любой другой код считается ошибкой;
  • до 10 повторов с растущим интервалом: 60, 150, 375 секунд и дальше;
  • проверка заголовка X-Max-Bot-Api-Secret, он отсекает запросы не от MAX;
  • одно событие может прийти дважды, поэтому обработчик должен спокойно принимать дубль.

Не путайте два сертификата. Обычный сертификат от доверенного центра стоит на вашем сервере и нужен, чтобы MAX достучался до вас. Корневой сертификат Минцифры нужен вашему коду, чтобы достучаться до MAX.

Самое опасное правило: если адрес 8 часов не отвечает успешно, бот автоматически отписывается от вебхука. Значит, после починки сервера подписку придётся создать заново.

На практике сбой редко виден сразу. На курсе по монтажу хостинг 25 марта закрыл исходящие почтовые порты. Оплата проходила, бот работал, не уходило только письмо с доступом. Первая жалоба покупателей пришла через 3 дня, диагноз я поставил на пятый день, а восстановилось всё на шестой. В тот же день на том же сервере замолчал бот второго проекта: оказался заблокирован IPv6, пришлось перевести сервис на IPv4. В MAX такой простой стоил бы подписки на события уже через 8 часов.

Поэтому каждый такой шаг надо проверять извне. Для вебхука MAX это просто: раз в несколько минут запрашивайте GET /subscriptions и пишите себе, если список пуст.

Какие кнопки есть в боте MAX

Кнопки встраиваются в сообщение, как inline-клавиатура в Telegram. В одном сообщении до 210 кнопок: 30 рядов по 7 штук. Кнопок link, open_app, request_geo_location и request_contact в ряду не больше 3.

Тип Что делает Для чего
callback присылает боту событие message_callback выбор тарифа, подтверждение
link открывает ссылку до 2048 символов сайт, форма, онлайн-оплата
request_contact отправляет номер из аккаунта MAX регистрация, программа лояльности
request_geo_location отправляет местоположение доставка, ближайший офис
open_app открывает мини-приложение каталог, калькулятор
message отправляет боту готовый текст быстрый ответ, команда
clipboard копирует текст промокод, трек-номер

Нижней клавиатуры, как reply-клавиатура в Telegram, в спецификации MAX нет. При пересылке сообщения кнопки пропадают. Номер телефона, полученный через request_contact, можно использовать только внутри этого бота.

Какие ограничения у ботов в MAX

Ограничение Значение
Запросы к API 30 в секунду, при превышении ответ 429
Сообщения в один диалог, чат или канал не более 2 в секунду
Длина сообщения до 4000 символов
Вложения в сообщении до 12
Параметр в ссылке на бота ?start= до 128 символов
Список чатов бота метод GET /chats отключён, ID чатов храните сами
Групповые чаты по умолчанию запрещены, разрешаются в настройках приватности
Первый бот-администратор чата назначается только в интерфейсе мессенджера
Скрыть бота нельзя: любого бота находят по ссылке или никнейму
Сменить никнейм нельзя
Сменить владельца пока нельзя

Есть ограничение и другого рода. Правила разрешают MAX ограничить или удалить бота без объяснения причин. Поэтому логику, заказы и базу клиентов я держу на своём сервере, а мессенджер остаётся одним из входов.

Можно ли делать рассылки через бота в MAX

Прямого разрешения нет, и это самый неприятный пункт правил. Требования к приложениям, пункт 1.5, запрещают через API отправлять авторизационные, транзакционные и сервисные сообщения, а также рекламные, маркетинговые и иные массовые рассылки. Исключение одно: случаи, прямо предусмотренные договором с компанией MAX. Отдельно сказано, что наличие технической возможности ничего не меняет.

Определения в правилах широкие:

  • авторизационные: одноразовые коды, токены и ссылки для входа на другие ресурсы;
  • транзакционные: сообщения о движении денег по картам и счетам, включая результат операции;
  • сервисные: сообщения о событиях и статусах, связанных с услугами.

При буквальном чтении сюда попадает даже «ваш заказ передан в доставку». Как MAX применяет этот пункт к ответам внутри диалога, который начал сам пользователь, документация не объясняет. Конструкторы при этом продают рассылки в MAX. Перед запуском я бы написал на partner_support@max.ru и сохранил ответ. Если бот держится на рассылках, это первый вопрос к поддержке.

Конкурсы и акции в боте тоже требуют отдельного согласования с MAX.

Как принимать оплату в боте MAX

Встроенной оплаты нет. Я просмотрел спецификацию API и описание библиотеки MAX Bridge: методов счёта и платежа, аналога sendInvoice и Stars там нет. В описании API онлайн-оплата упомянута только как пример для кнопки-ссылки. Деньги принимает внешний платёжный сервис.

Схема на своём сервере:

  1. Покупатель выбирает тариф кнопкой callback, бот получает событие.
  2. Сервер создаёт платёж в ЮKassa или Т-Банке и записывает к нему user_id и тариф.
  3. Бот присылает кнопку link с адресом оплаты.
  4. Покупатель платит на странице платёжного сервиса.
  5. Сервис присылает уведомление на ваш сервер.
  6. Сервер перепроверяет платёж через API сервиса и только потом выдаёт товар.

Сообщение с кнопкой оплаты:

curl --cacert russian_root.pem -X POST \
  "https://platform-api2.max.ru/messages?user_id=ID_ПОЛЬЗОВАТЕЛЯ" \
  -H "Authorization: ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{"text": "Тариф Базовый, 1 000 ₽", "attachments": [{"type": "inline_keyboard", "payload": {"buttons": [[{"type": "link", "text": "Оплатить", "url": "https://ваш-домен.ru/pay/123"}]]}}]}'

Шаг 6 пропускать нельзя, это я проверил на Telegram-ботах. На курсе по монтажу уведомление сначала уходило при создании платежа, и в бот попадали неудавшиеся оплаты. Теперь оно срабатывает только после подтверждения. В октябре из-за ошибки в кабинете уведомления одного магазина пошли на адрес другого. Бот спросил платёж через API, получил ответ, что такого платежа нет, и ничего не выдал. Адрес надо было поправить в кабинете, зато схема показала главное: бот не верит уведомлению на слово. Порядок отладки описан в статье оплата прошла, а заказ не оплачен.

Что ещё учесть:

  • Чек. Его формирует платёжный сервис или ваша касса. Самозанятый выдаёт чек сам, например через «Мой налог».
  • Подписка с автосписанием. Она живёт на вашем сервере, MAX здесь не участвует. На SaveAPP я строил такой узел для бота на Salebot и Т-Банка: первая оплата привязывает карту, дальше сервер списывает по команде, а подписка хранится по паре «клиент и продукт». Первое автосписание прошло на тесте на десятый день.
  • Без разработки. У ЮKassa есть свой бот в MAX: менеджер вручную выставляет счёт и отправляет ссылку или QR-код. Для потока заказов это неудобно, для редких продаж хватит.
  • Сообщение «оплата прошла». По формулировке оно похоже на транзакционное из пункта 1.5. Пока MAX не разъяснил этот пункт, чек и подтверждение пусть присылает платёжный сервис.

Как выдать доступ после оплаты в закрытый чат или канал MAX

В Telegram это типовая задача: бот создаёт ссылку-приглашение методом createChatInviteLink. В API MAX такого метода нет, и на этом месте схема из Telegram ломается.

Канал. Добавить подписчика через API нельзя, в описании метода это сказано прямо. Право add_remove_members у бота работает только в чатах. В приватном канале есть общая ссылка и опция «Заявки на вступление», но заявки разбирает администратор вручную, API для них я не нашёл.

Групповой чат. Метод POST /chats/{chatId}/members добавляет до 100 пользователей за запрос, если бот администратор с нужным правом. Но с 9 сентября 2026 работа метода ограничена, а чем именно, документация не раскрывает. Закладываться на него без проверки на тестовом чате я бы не стал.

Удаление. Метод DELETE /chats/{chatId}/members убирает участника, в его описании упомянут и канал. Таблица прав при этом ограничивает ботов чатами. Проверяйте на тесте.

Самый прямой вариант по документации: отдавать платный контент в самом боте или мини-приложении, где доступ проверяет ваш сервер.

Как создать мини-приложение в MAX

Мини-приложение это веб-страница на HTML, CSS и JavaScript, которая открывается внутри бота. Без бота оно не существует, поэтому сначала пройдите все шаги выше.

  1. Соберите приложение и положите на хостинг с HTTPS. В документации названы VK Cloud, GitHub Pages и Yandex Cloud.
  2. На платформе откройте бота: ⋮, затем «Настройки». Вставьте адрес и выберите кнопку запуска: «Открыть», «Старт», «Играть» или без названия.
  3. Подключите библиотеку MAX Bridge. Объект window.WebApp даёт данные пользователя, запрос телефона, кнопку «Назад» и открытие ссылок. Для интерфейса есть компоненты MAX UI на React.
  4. Проверяйте подпись initData на сервере через HMAC-SHA256, ключ получается из токена бота. Без этого данным о пользователе верить нельзя.
  5. Запускайте приложение по ссылке https://max.ru/имя_бота?startapp=параметр. Параметр до 512 символов: латиница, цифры, _ и -.

Оплаты в MAX Bridge тоже нет. Страница сервиса открывается через window.WebApp.openLink(url) во внешнем браузере. Одновременно может быть открыто только одно мини-приложение.

Ошибку «не удалось открыть мини-приложение» документация не разбирает. Я бы начал с простого: открывается ли адрес в обычном браузере по HTTPS и нет ли в нём пробелов.

Перенос бота из Telegram в MAX: что переносится, а что нет

Кнопки переноса нет. API похожи только внешне: те же события и кнопки, но другие адреса, форматы и ограничения.

Что Переносится Что делать
Логика, заказы, интеграции да, если живут на вашем сервере подключить второй мессенджер к тому же ядру
Тексты да проверить длину: 4000 символов вместо 4096
Inline-кнопки с переделкой другой формат, вложение inline_keyboard
Reply-клавиатура нет заменить кнопками message или callback
Команды с переделкой задать через PATCH /me/commands, старт ловить по событию bot_started
Ссылки с ?start= с переделкой новый адрес, параметр до 128 символов вместо 64
Подписчики нет звать вручную, ID пользователей в MAX другие
Файлы по file_id нет загрузить заново через POST /uploads
Имя @bot нет никнейм выдаст платформа
Вебхук нет новый адрес и сертификат, только порт 443 вместо 443, 80, 88 и 8443
Оплата sendInvoice и Stars нет кнопка-ссылка и уведомления платёжного сервиса
Инвайт-ссылки нет пересобрать выдачу доступа
Mini App частично веб-часть остаётся, вместо window.Telegram.WebApp будет window.WebApp

Порядок переезда:

  1. Отделите логику от мессенджера. Заказы, оплаты и доступы должны жить на сервере, а Telegram и MAX быть двумя входами. На курсе по монтажу сервис живёт отдельно от витрины, поэтому копию для второго проекта я поднял за один день.
  2. Заведите профиль и бота заранее. Модерация идёт до 48 часов, а верификация может упереться в роли на Госуслугах.
  3. Напишите адаптер MAX: приём событий, отправка, кнопки, сертификат.
  4. Пересоберите оплату и выдачу доступа по схемам выше.
  5. Свяжите аккаунты. Telegram-бот даёт клиенту ссылку https://max.ru/имя_бота?start=одноразовый_код, бот в MAX получает код в событии bot_started и находит клиента в базе. Личные данные в ссылку не кладите, документация прямо советует одноразовые токены.
  6. Обновите ссылки на сайте. Когда я менял WhatsApp на MAX на сайте клиники Южный, заказчик заметил, что кнопка ведёт просто в мессенджер, а не в канал клиники. Заранее соберите прямые ссылки на канал и бота и проверьте их на телефоне.
  7. Держите оба бота параллельно, пока клиенты переходят. Заставить их перейти нельзя.

Если бот собран на конструкторе, спросите поддержку про конвертацию сценариев. BotHelp заявляет такую функцию: то, чего нет в MAX, при переносе удаляется. Я её не проверял.

Что не удалось проверить на 2 ноября 2026

  • Запросы с живым токеном. Верифицированного бота у меня нет. Адрес и сертификат проверены запросом без токена, пример на Python только на макете.
  • Ограничение POST /chats/{chatId}/members с 9 сентября 2026. В документации есть сама фраза, деталей нет.
  • Применение пункта 1.5. Непонятно, как он работает для ответов в диалоге и какой договор снимает запрет.
  • Long Polling. Сказано, что скорость и срок хранения событий ограничены, чисел нет.
  • Реальные сроки модерации. Знаю только срок из документации.
  • Плата за бота. Тарифов в документации нет, но и прямого слова «бесплатно» тоже нет.

Документация MAX меняется часто, поэтому перед запуском сверяйте эти пункты заново.

Когда звать специалиста

Сами вы справитесь с профилем, верификацией, карточкой бота и простым сценарием на конструкторе. Профиль всё равно должен быть ваш, эту часть за вас никто не сделает.

Разработчик нужен, если бот принимает оплату и сам выдаёт доступ, если переносите бота из Telegram с общей базой клиентов, если нужно мини-приложение с проверкой данных. Боты для Telegram и MAX у меня стоят от 25 000 ₽, срок от 2 недель. Одну логику на две площадки считаю по смете, подключение оплаты отдельно стоит от 7 000 ₽.

Если бот уже упёрся в сертификат, вебхук или оплату, пришлите текст ошибки на бесплатный разбор. Отвечу, в чём вероятная причина и что проверить.

Частые вопросы

Можно ли создать бота в макс без ИП?

Да, если вы самозанятый: профиль подтверждается через Госуслуги, доступно 2 бота. Обычному физлицу и нерезиденту верификация недоступна, поэтому бота они не создадут.

Можно ли создать бота в макс бесплатно?

Тарифов на создание бота и запросы к API в документации MAX я не нашёл. Платить придётся за сервер или конструктор, а при продажах ещё и комиссию платёжному сервису.

Как получить токен бота в MAX?

После модерации откройте на платформе раздел «Чат-боты», нажмите ⋮, затем «Настройки» и значок копирования рядом с токеном. В боте «MAX для бизнеса» есть команда «Получить токен».

Можно ли принимать оплату в боте MAX?

Да, но через внешний платёжный сервис. Методов оплаты в API MAX нет: бот присылает кнопку со ссылкой, покупатель платит на странице сервиса, а ваш сервер получает уведомление.

Как перенести бота из Telegram в MAX?

Кнопкой не перенести. Логика и заказы переезжают, если живут на вашем сервере, а подписчиков, платёжку и выдачу инвайт-ссылок придётся настроить заново.

Можно ли сделать мини-приложение в MAX без бота?

Нет. Мини-приложение подключается только к боту, поэтому сначала нужен подтверждённый профиль и бот, прошедший модерацию.

Никита Митусов

Никита Митусов, веб-разработчик. Более 5 лет делаю сайты, магазины, интеграции и ботов. Статья основана на моих проектах и проверена по документации сервисов.

Читать дальше