Магазин-бот в МАХ 2026: каталог, корзина, оплата через СБП/ЮKassa/СберПэй
Запуск магазина в МАХ-боте быстрее и дешевле чем сайт: от 80 тыс. ₽ и за неделю. Разбираю как сделать каталог в Mini App, корзину, оплату через СБП/ЮKassa/СберПэй, доставку через СДЭК/Boxberry и интеграцию с 1С/МойСклад. С реальными SQL-схемами, кодом интеграций и бюджетами 2026.
Коротко (TL;DR)
- Магазин в МАХ-боте запускается быстрее и дешевле классического сайта: от 80 тыс. ₽ и за 1–2 недели вместо 300 тыс. ₽ и 2 месяцев.
- Архитектура 2026: МАХ-бот для диалога + Mini App для каталога, Node.js/Python бэкенд, PostgreSQL, оплата через СБП/ЮKassa/СберПэй, доставка СДЭК/Boxberry/Я.Доставка.
- Лучшее соотношение комиссии и конверсии — СБП (0,4–0,7%) + ЮKassa (2,8–3,5%) как резерв. Для держателей Сбера — обязательно СберПэй.
- Интеграция с 1С/МойСклад окупается за 1–2 месяца: убирает двойной учёт, синхронизирует остатки в реальном времени.
- Бюджет: минимум 80–150 тыс. ₽ (без 1С), средний 200–400 тыс. ₽, enterprise 500 тыс. — 1 млн ₽. Месячно — 5–30 тыс. ₽ на хостинг и поддержку.
Магазин в МАХ-боте vs обычный сайт vs Telegram Mini App
Прежде чем нырять в разработку, важно понять — в каких случаях МАХ-бот выгоднее обычного сайта или Telegram-канала. Я делал магазины во всех трёх форматах и могу сказать честно: правильный выбор зависит от продукта, аудитории и стадии бизнеса.
| Параметр | МАХ-бот | Обычный сайт | Telegram Mini App |
|---|---|---|---|
| Стоимость разработки | 80–500 тыс. ₽ | 200 тыс. — 1,5 млн ₽ | 100–500 тыс. ₽ |
| Срок запуска | 1–3 недели | 4–12 недель | 2–4 недели |
| Конверсия в покупку | 4–8% | 1–3% | 3–6% |
| Лояльность / повторные | Высокая | Низкая | Средняя |
| SEO трафик | Нет | Да | Нет |
| Конкуренция в канале | Низкая | Очень высокая | Очень высокая |
| Стоимость поддержки | 5–30 тыс. ₽/мес | 10–50 тыс. ₽/мес | 5–30 тыс. ₽/мес |
Когда МАХ-бот лучше сайта: повторные покупки (продукты, корм для животных, расходники), узкая ниша (региональная одежда, фермерские товары, ремесленники), b2c с небольшим ассортиментом до 200 SKU. Также МАХ-бот выгоден, когда у вас уже есть аудитория в мессенджере и нужно конвертировать её в покупателей.
Когда обычный сайт лучше: широкий ассортимент 1000+ SKU, важен SEO-трафик, продаёте сложные технические товары, где нужны подробные спецификации. Сайт также обязателен для b2b — большинство корпоративных клиентов всё ещё ищут поставщиков через поиск, а не через мессенджеры.
Когда Telegram Mini App лучше МАХ: целевая аудитория — IT, маркетологи, фрилансеры, молодёжь до 30. Telegram даёт максимальный охват в этих сегментах, но и конкуренция высокая. МАХ выигрывает на гос-сегменте, корпоративных клиентах, аудитории 30+, региональных проектах.
Архитектура магазина-бота
Правильная архитектура магазина в МАХ — это связка бота для диалога и Mini App для богатого каталога. Бот используется для уведомлений, быстрых заказов «как обычно», поддержки. Mini App — для просмотра каталога с фотографиями, фильтрами, оформления крупных заказов.
Бэкенд. Node.js с Fastify или Python с FastAPI. Python предпочтительнее, если нужны интеграции с 1С (есть готовые либы), машинное обучение для рекомендаций, парсинг внешних источников. Node.js — если команда сильнее в JS или нужна real-time связь через WebSocket.
База данных. PostgreSQL 16 как основная: товары, заказы, пользователи. Redis для корзины (быстрый доступ, TTL для брошенных корзин), кеша каталога, rate-limit. Для поиска по каталогу — Meilisearch или встроенный full-text search PostgreSQL.
Платежи. ЮKassa как основной агрегатор + СБП напрямую для минимальной комиссии. Для крупных чеков — СберПэй и Tinkoff Pay. Все провайдеры подключаются параллельно, пользователь выбирает удобный.
Доставка. API-интеграции с СДЭК, Boxberry, Я.Доставкой. Расчёт стоимости и срока в реальном времени, выбор ПВЗ на карте, автоматическое создание накладной при оплате.
Интеграция с 1С / МойСклад. REST или OData-обмен. Синхронизация товаров (импорт из 1С в магазин), остатков (1С → магазин каждые 5–15 минут), заказов (магазин → 1С при оплате). Без этого — двойной учёт и расхождения.
Каталог товаров — UX
Каталог — самая важная часть магазина. От него зависит, перейдёт ли посетитель к покупке или закроет бот.
Inline keyboards в боте используются для коротких сценариев: «показать категории» — «показать товары» — «купить». Подходит для каталогов до 30–50 товаров. Преимущество — работает в любой версии МАХ, без открытия Mini App.
Mini App для богатого каталога. Когда товаров больше 50 или нужны фотогалереи, фильтры, сравнение — без Mini App не обойтись. В Mini App делаете категории, фильтры по цене и параметрам, список товаров с фото, детальную страницу каждого товара.
Поиск по тексту. Обязательная функция для каталогов от 100 товаров. Реализация через Meilisearch (10 минут на интеграцию) или PostgreSQL full-text search. Для умного поиска — добавьте обработку опечаток и синонимов.
Featured / new / discount. Выделение акционных, новых, рекомендованных товаров. Повышает средний чек на 15–30%. Реализуется флагами в БД и сортировкой в каталоге.
Корзина и оформление заказа
Корзина — критическое место для конверсии. На этом этапе теряется 60–70% пользователей в среднем по рынку.
Состояние корзины в БД, не в state бота. Распространённая ошибка — хранить корзину в FSM-состоянии бота. При сбое или перезапуске сервиса корзина теряется. Правильно — хранить в PostgreSQL или Redis с привязкой к userId. Тогда пользователь может зайти с другого устройства и продолжить.
Расчёт доставки в реальном времени. Не показывайте абстрактную «доставка от 300 ₽» — это раздражает. Сразу после выбора адреса считайте конкретную стоимость через API доставки. Это +10–20% к конверсии в оплату.
Выбор адреса. Минимум 3 варианта: ПВЗ СДЭК, ПВЗ Boxberry, самовывоз. Для удобства — карта с ближайшими ПВЗ к адресу пользователя. API ЯКарты или 2GIS.
Промокоды и скидки. Поле для ввода промокода, валидация на сервере, скидка применяется к итоговой сумме. Промокоды можно делать персональные (через рассылку в боте), сезонные, реферальные.
Пример SQL-схемы для корзины и заказов:
-- schema.sql — корзина и заказы магазина-бота МАХ
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
max_user_id BIGINT UNIQUE NOT NULL,
first_name TEXT,
phone TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
sku TEXT UNIQUE NOT NULL,
title TEXT NOT NULL,
description TEXT,
price_cents INT NOT NULL,
stock INT DEFAULT 0,
category_id INT,
images JSONB DEFAULT '[]',
active BOOLEAN DEFAULT true,
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE carts (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
promo_code TEXT,
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE cart_items (
id BIGSERIAL PRIMARY KEY,
cart_id BIGINT REFERENCES carts(id) ON DELETE CASCADE,
product_id BIGINT REFERENCES products(id),
quantity INT NOT NULL CHECK (quantity > 0),
price_cents_at_add INT NOT NULL
);
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT REFERENCES users(id),
status TEXT NOT NULL DEFAULT 'pending',
total_cents INT NOT NULL,
delivery_method TEXT,
delivery_address JSONB,
delivery_cost_cents INT DEFAULT 0,
payment_method TEXT,
payment_id TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
paid_at TIMESTAMPTZ
);
CREATE TABLE order_items (
id BIGSERIAL PRIMARY KEY,
order_id BIGINT REFERENCES orders(id) ON DELETE CASCADE,
product_id BIGINT REFERENCES products(id),
quantity INT NOT NULL,
price_cents INT NOT NULL
);
-- индексы для быстрых выборок
CREATE INDEX idx_carts_user ON carts(user_id);
CREATE INDEX idx_orders_user_status ON orders(user_id, status);
CREATE INDEX idx_orders_payment ON orders(payment_id);
Платежи 2026 — детально
Минимум 2–3 способа оплаты — обязательное условие. Когда оставляете один способ, теряете 20–40% покупателей, у которых нет нужной карты или приложения.
СБП. Самый быстрый способ — оплата по QR-коду или через диплинк в банковское приложение. Комиссия для продавца 0,4–0,7%, для покупателя — 0%. Идеально для импульсных покупок до 5–10 тыс. ₽. Подключение через Tinkoff, Sber или СПБ напрямую.
ЮKassa. Универсальный агрегатор: карта, СБП, кошельки, рассрочка. Удобная админка для рефандов и отчётов. Комиссия 2,8–3,5%. Хороший выбор «всё в одном», если нет техкоманды для отдельных интеграций.
СберПэй. Для держателей Сбербанка. Биометрия, без ввода данных карты — конверсия выше на 30–50%. Обязательно подключайте, если ваша аудитория 35+.
Tinkoff Pay. Растущая аудитория 25–40 лет. Удобный SDK, низкая комиссия для подключённых партнёров.
Пример интеграции СБП в Node.js:
// sbp-checkout.js — оплата заказа через СБП в магазине МАХ
import { TinkoffSBP } from 'tinkoff-sbp-sdk';
import { db } from './db.js';
import { bot } from './max-bot.js';
const sbp = new TinkoffSBP({
terminalKey: process.env.TINKOFF_TERMINAL,
password: process.env.TINKOFF_PASSWORD,
});
export async function createSbpPayment(orderId, userId) {
// Получаем заказ
const order = await db.orders.findOne({ id: orderId, user_id: userId });
if (!order || order.status !== 'pending') {
throw new Error('Order not found or already paid');
}
// Создаём платёж — idempotency через orderId
const payment = await sbp.createPayment({
amount: order.total_cents,
orderId: order.id.toString(),
description: 'Заказ №' + order.id,
notificationUrl: process.env.WEBHOOK_URL + '/sbp/notify',
data: { userId: userId.toString() },
paymentMethod: 'SBP',
});
// Сохраняем paymentId для последующего вебхука
await db.orders.update(
{ id: orderId },
{ payment_id: payment.PaymentId, payment_method: 'sbp' },
);
return { qrCode: payment.QRCode, payUrl: payment.PaymentURL };
}
// Webhook от Tinkoff — обновляем статус заказа
export async function handleSbpWebhook(body) {
const { OrderId, Status, PaymentId } = body;
const order = await db.orders.findOne({ id: parseInt(OrderId) });
if (!order || order.payment_id !== PaymentId) return;
if (Status === 'CONFIRMED' && order.status === 'pending') {
await db.orders.update(
{ id: order.id },
{ status: 'paid', paid_at: new Date() },
);
// Уменьшаем остатки
await decrementStock(order.id);
// Уведомление в МАХ-боте
await bot.sendMessage(order.user_id,
'Оплата получена! Заказ №' + order.id + ' принят в работу.');
// Создаём накладную в СДЭК
await createCdekShipment(order.id);
}
}
Доставка — интеграция со службами
СДЭК API. Самая полная API: расчёт тарифов, ПВЗ на карте, создание заказов, трекинг. Покрытие — вся РФ. Подключение через личный кабинет CDEK с тестовым и боевым контурами.
Boxberry. Аналог СДЭК, чуть дешевле в некоторых регионах. API похожее. Хорошо подходит как резервная служба или для крупного ритейла с большими объёмами.
Почта России. Для дальних регионов (Дальний Восток, Север), где у СДЭК нет ПВЗ. API менее удобное, но работает. Сроки больше, но и стоимость ниже.
Я.Доставка. Курьерская доставка в крупных городах. Берут заказ из вашего адреса и привозят клиенту в день оформления. Дороже ПВЗ, но конверсия выше.
Пример расчёта стоимости доставки через CDEK API:
// cdek-calculate.js — расчёт доставки СДЭК
import axios from 'axios';
let cdekToken = null;
let tokenExpires = 0;
async function getCdekToken() {
if (cdekToken && Date.now() < tokenExpires) return cdekToken;
const resp = await axios.post('https://api.cdek.ru/v2/oauth/token', {
grant_type: 'client_credentials',
client_id: process.env.CDEK_CLIENT_ID,
client_secret: process.env.CDEK_SECRET,
});
cdekToken = resp.data.access_token;
tokenExpires = Date.now() + (resp.data.expires_in - 60) * 1000;
return cdekToken;
}
export async function calcCdekDelivery({ fromCity, toCity, weight, cost }) {
const token = await getCdekToken();
const resp = await axios.post(
'https://api.cdek.ru/v2/calculator/tariff',
{
tariff_code: 136, // склад-склад экономичный
from_location: { code: fromCity },
to_location: { code: toCity },
packages: [{ weight: weight, length: 30, width: 20, height: 15 }],
},
{ headers: { Authorization: 'Bearer ' + token } },
);
return {
cost: resp.data.delivery_sum,
days: resp.data.period_max,
tariff: 'СДЭК Посылка',
};
}
Интеграция с 1С / МойСклад
Без интеграции с системой учёта вы получаете двойную работу: операторы вручную переносят заказы из бота в 1С, обновляют остатки, создают документы. На 50+ заказов в день это полный рабочий день одного человека и неизбежные ошибки.
Синхронизация номенклатуры. Раз в час (или по триггеру) выгружаете из 1С весь каталог: SKU, название, цена, остатки. В магазине обновляете записи. Удалённые в 1С товары помечаете как inactive.
Остатки в реальном времени. Каждые 5–15 минут забираете остатки из 1С. Если товара нет на складе — деактивируете в магазине автоматически, чтобы не продать «воздух». Это критично для магазинов с единственным экземпляром (одежда конкретного размера, дизайнерские товары).
Автоматическое создание документов «Реализация». При оплате заказа в магазине автоматически создаёте документ в 1С с номенклатурой, количеством, ценой. Бухгалтер видит реализацию в учёте без ручного ввода.
МойСклад как альтернатива. Для малого бизнеса (1–3 человека) — МойСклад проще и дешевле, чем 1С. API удобнее, поддержка лучше. Подключение к боту через REST занимает 1–2 дня.
Уведомления покупателю
Уведомления — главное преимущество мессенджер-магазина перед сайтом. Письма уходят в спам, push на сайте отключают, а сообщение в МАХ-боте читает 90%+ пользователей.
Подтверждение заказа. Сразу после оплаты — детали заказа, номер, ожидаемая дата доставки. Уменьшает количество звонков в поддержку «вы получили мой заказ?».
Изменение статуса. Готов к отгрузке → отгружен → в пути → доставлен. На каждом этапе — сообщение в боте. Прозрачность статуса повышает лояльность клиента.
Push в боте + email-дублирование. Дублируйте важные уведомления на email — для документов и архива. В мессенджере — оперативные оповещения.
Запрос отзыва после доставки. Через 2–3 дня после доставки — сообщение с вопросом «как заказ?». Положительный отзыв — просьба оставить в каталоге. Негативный — связь с клиентским сервисом.
CRM-интеграция
Если у вас уже есть CRM (Bitrix24, amoCRM), интегрируйте магазин-бот с самого начала. Если CRM ещё нет — стоит подумать о её внедрении вместе с магазином. Подробнее в моём сравнении CRM 2026.
Заявка из магазина → лид в CRM. Каждый оформленный заказ создаёт сделку в CRM с контактом, товарами, суммой. Менеджер видит всю воронку: новые → в обработке → оплачено → отгружено → закрыто.
История покупок клиента. В карточке контакта в CRM — список всех заказов с датами, суммами, статусами. Менеджер при обращении клиента видит полную картину.
Сегментация для рассылок. Сегменты «активные», «дремлющие 30+ дней», «VIP по сумме», «купили категорию X». Под каждый сегмент — своя рассылка через бот.
Reactivation для уходящих клиентов. Триггер: клиент не покупал 60 дней → автоматическая рассылка с персональным промокодом. Возвращает 15–25% «спящих».
Стоимость разработки 2026
| Уровень | Что входит | Бюджет | Срок |
|---|---|---|---|
| Минимум | 10–50 товаров, 1 платёж, без 1С | 80–150 тыс. ₽ | 1–2 недели |
| Средний | 1С/МойСклад, 3–5 способов оплаты, СДЭК | 200–400 тыс. ₽ | 3–5 недель |
| Расширенный | CRM, аналитика, рассылки, лояльность | 400–700 тыс. ₽ | 5–8 недель |
| Enterprise | Мульти-склад, маркировка, ML-рекомендации | 500 тыс. — 1 млн ₽ | 2–4 месяца |
Месячные расходы — 5–30 тыс. ₽: хостинг (VPS 1–5 тыс., облако 5–20 тыс.), API-комиссии служб доставки (если есть), поддержка (минимум 2–4 часа разработчика в месяц).
Аналитика магазина
Без аналитики магазин невозможно развивать. Решения «давайте добавим скидку» или «надо сделать рассылку» становятся гаданием на кофейной гуще. Минимальный набор метрик, который должен быть с первого дня:
Конверсия по этапам. Вход в бот → каталог → товар → корзина → оформление → оплата. Каждый этап — отдельная метрика. Видите, где теряете больше всего пользователей.
AOV (Average Order Value). Средний чек. Динамика по месяцам, по сегментам, по источникам трафика. Рост AOV — главный рычаг для увеличения выручки без увеличения трафика.
Repeat rate. Процент клиентов, сделавших повторную покупку в течение 60/90 дней. Для масс-маркета — норма 20–35%. Меньше — проблема с продуктом или сервисом.
Топ-товаров и категорий. Какие SKU генерируют 80% выручки. Под них — таргет, акции, наличие на складе.
Дашборд. Минимум — таблица в Notion с ручным обновлением 1 раз в неделю. Лучше — автоматический дашборд в Metabase или Grafana с обновлением каждый час.
Юр-нюансы 2026
152-ФЗ при ПД. Магазин собирает данные клиентов: телефон, адрес, история заказов. Это ПД со всеми требованиями: политика конфиденциальности, согласие, локализация в РФ. Подробности в моих статьях про локализацию ПД и про аудит 152-ФЗ.
Кассовый аппарат для онлайн (54-ФЗ). При продаже физлицам обязателен онлайн-чек. Варианты: АТОЛ Онлайн, Orange Data, фискализация в ЮKassa. Без чека — штраф от 30 тыс. ₽ за заказ.
Маркировка Честный Знак. Если торгуете одеждой, обувью, парфюмом, БАД, шинами — обязательна передача кодов в систему. Штрафы за нарушение — 50–300 тыс. ₽ и изъятие товара.
Возврат товара 14 дней. Закон о защите прав потребителей. Клиент имеет право вернуть товар надлежащего качества в течение 14 дней. Должна быть процедура возврата с возвратом денег.
Налоги. Для малого магазина — УСН 6% «доходы». Для микро-бизнеса (до 2,4 млн ₽/год) — НПД (самозанятость). При больших оборотах — УСН 15% «доходы минус расходы» или ОСНО.
Топ-5 ошибок при запуске магазина-бота
1. Делают всё в боте без Mini App. Каталог из 50+ товаров через inline-кнопки превращается в пытку. Mini App для каталога — стандарт 2026 года.
2. Игнорируют CDEK/Boxberry API. Вручную считают доставку и пишут трек-номера. На 30+ заказах в день это ломается. Интеграция за 1–2 дня окупается за месяц.
3. Не интегрируют с 1С. Расхождения по остаткам, продажа отсутствующего товара, ручной ввод документов. Интеграция за 3–5 дней экономит 20+ часов работы оператора в месяц.
4. Используют только один способ оплаты. Только карта или только СБП. Теряют 20–40% клиентов с другими предпочтениями. Минимум 2–3 способа — обязательно.
5. Не делают reactivation-рассылки. Клиент купил один раз и пропал. Без триггерной рассылки через 30–60 дней — теряете 60–80% повторных продаж.
FAQ
Можно ли сделать магазин только в боте, без Mini App? Да, для каталога до 20–30 товаров. Inline-кнопки + фото товара + кнопка «купить». Дальше — Mini App обязателен.
Сколько времени занимает запуск с нуля? Простой магазин — 1–2 недели. С интеграциями (1С, СДЭК, CRM) — 3–5 недель. Enterprise — 2–4 месяца.
Какая комиссия у платёжных провайдеров? СБП — 0,4–0,7%, ЮKassa — 2,8–3,5%, СберПэй — 1,5–2,5%, Tinkoff Pay — 1,8–2,8%. Зависит от оборота и категории.
Можно ли продавать в МАХ-боте через дропшиппинг? Можно. Интегрируете API поставщика, при оплате создаёте заказ у поставщика, он отправляет напрямую клиенту. Маржа меньше, но и операционка проще.
Что с возвратами? Стандартная процедура: клиент пишет в бот, заполняет заявку, получает номер заявки, отправляет товар на адрес, после получения — возврат денег через 3–10 дней.
Сколько стоит поддержка после запуска? Минимум 5–10 тыс. ₽/мес — мониторинг, мелкие правки. Активная поддержка с доработками — 20–50 тыс. ₽/мес.
Можно ли мигрировать с сайта на магазин-бот? Да. База товаров и клиентов переносится за 1–2 дня. Историю заказов оставляете на сайте, новые — в боте.
Когда пора масштабировать
Магазин в МАХ-боте отлично работает на старте и в средней нише, но у формата есть пределы роста. Знать эти пределы заранее — значит планировать масштабирование, а не догонять проблему задним числом.
Сигнал 1: больше 500 заказов в день. На таком объёме одного сервера и одного оператора уже не хватает. Нужна команда из 3–5 человек, отдельный кол-центр, разделение ролей. Бэкенд переходит из monolith на микросервисы: каталог отдельно, заказы отдельно, платежи отдельно.
Сигнал 2: ассортимент за 500 SKU. Бот и Mini App перестают справляться с такой выборкой, появляется потребность в умных рекомендациях, расширенных фильтрах, ML-сортировке. Аналитика становится критичной — каждое решение по полке должно опираться на цифры.
Сигнал 3: мульти-склад. Когда работаете с несколькими складами или дропшиппинг-партнёрами одновременно. Нужна логика «откуда отправить дешевле и быстрее», учёт остатков по каждому складу, разные сроки доставки.
Сигнал 4: выход на маркетплейсы. Параллельно с магазином-ботом подключаете Wildberries, Ozon, Я.Маркет. Бэкенд становится центром синхронизации остатков и заказов между всеми каналами. Подробнее — в статье про свой магазин vs маркетплейсы.
Чек-лист «запускаю магазин-бот за 2 недели»
Неделя 1. Зарегистрируйте бота в МАХ и получите токен. Поднимите бэкенд на VPS (Selectel или Yandex Cloud). Подключите PostgreSQL, создайте схему. Загрузите первые 20–50 товаров с фото. Реализуйте каталог в боте с inline-кнопками.
Неделя 2. Сделайте Mini App с каталогом и корзиной. Подключите ЮKassa и СБП. Интегрируйте СДЭК для расчёта доставки. Настройте уведомления о заказах. Протестируйте полный цикл от заказа до доставки.
Если делаете самостоятельно с опытом — реально уложиться. Если хотите делегировать с гарантией результата — пишите. Помогу спроектировать архитектуру под ваш ассортимент, интегрировать с 1С/CDEK/ЮKassa и запустить магазин-бот в МАХ за 2–4 недели. Чат в Telegram — самый быстрый способ обсудить вашу задачу.
Нужен профессиональный аудит 152-ФЗ?
Отчёт за 1–3 дня, устранение нарушений под ключ. От 5 000 ₽.