Одна шестизначная цифровая последовательность. Пятьдесят рублей. Шах и мат.
Давайте сыграем в игру. Я говорю вам услугу, вы угадываете цену.
Услуга: передать по воздуху 140 байт. Не видео в 4K, не архив с исходниками, а строчку «Ваш код: 482913». Себестоимость для оператора — величина, которую аналитики скромно округляют до нуля: сигнальный трафик сети SS7, который и так бежит по оборудованию, уже купленному на ваши абонентские деньги.
Ваш ответ? Копейки? Рубль?
До 45 рублей. Это не фантастика и не опечатка. Это реальный счёт, который небольшой растущий стартап может получить от «Мегафона» за авторизационные SMS при малых объёмах — и я говорю это не по наслышке, а по личному опыту. Сорок пять рублей. За шесть цифр. За одного пользователя. Который, возможно, удалит ваше приложение через двадцать минут.
А теперь представьте, что у вас не двадцать пользователей, а десять тысяч новых в месяц. Откройте калькулятор — дальше будет больно…
Кейс: Papaplant, или анатомия ограбления в реальном времени
Познакомьтесь: DachaGroup и их приложение Papaplant — мобильный сканер растений. Сфотографировал фикус — узнал, почему он грустный. Приложение свежее, аудитория растёт, как алоэ на подоконнике у бабушки: порядка 10 000 новых пользователей в месяц. Каждого нужно зарегистрировать. Каждому — отправить код. А части пользователей — не один раз: переустановил приложение, сменил телефон, вышел из аккаунта, потерялся код в просторах сети.
Теперь арифметика, которую венчурные пособия почему-то обходят стороной:
-
10 000 регистраций + 10% повторных подтверждений = ~11 000 SMS в месяц.
-
По «потолку» в 45 ₽: до 495 000 ₽ в месяц. Почти 6 млн ₽ в год. Это зарплата двух сеньор-разработчиков. За SMS-коды.
-
По «нормальной» агрегаторской цене в 8 ₽: 88 000 ₽/мес, больше миллиона в год. Уже терпимо, но всё ещё — один хороший сотрудник, работающий исключительно на «Ваш код: 482913».
Стартап, у которого ещё толком нет выручки, платит оператору дань просто за то, что его пользователи хотят войти в приложение. Это не бизнес-модель. Это погонная плата за право существовать.
Хроника обновления тарифов: как это было
Не верите в «до 45 рублей»? Пройдёмся по хронике — с ссылками, чтобы вы могли проверить и возмутиться самостоятельно.
2024 год, прелюдия. По данным Frank RG, средние затраты банков на одно SMS клиенту за год выросли на 23–26% — до ~2,4 ₽, при инфляции 9,5% (Finance Mail.ru, Frank Media). Банки — это киты с миллиардными объёмами и персональными менеджерами. Если им поднимают цены на четверть, представьте, что делают с мелкими.
1 марта 2025, синхронное чудо. МТС, Билайн, Ростелеком и Сбербанк-Телеком повысили цены на авторизационные и сервисные SMS — в один день (хроника агрегатора SMSimple). У МТС авторизационное SMS стало стоить 3,14 ₽, у Билайна сервисное — 3,43 ₽. Совпадение? Не думаю… У всех четырёх одновременно подорожали… электроны, видимо.
Осень 2025, изобретение пакетного ада. Операторы перешли к пакетной тарификации «на уникального абонента в месяц» (AdIndex, 13.11.2025):
-
МегаФон с 1 ноября 2025: пакет из 1–5 транзакционных SMS одному абоненту — 45 ₽. То есть одно-единственное сообщение фактически стоит сорок пять рублей, если абоненту больше ничего не нужно.
-
Билайн с 1 октября 2025: первое транзакционное сообщение абоненту в месяц обходится в 9,6 ₽ в пакетной сетке (официальный комментарий: «от 4,75 ₽ без НДС» — верим, конечно).
-
МТС с сентября 2025: 1 000 ₽ в месяц за каждый зарегистрированный шаблон SMS. Не за сообщения. За текст сообщения. Десять шаблонов — десять тысяч фиксом, даже если вы не отправили ни байта.
-
Оценка источников AdIndex: средняя стоимость SMS для клиентов выросла в 2–3 раза.
1 марта 2026, апофеоз. МТС упразднила категорию «авторизационные» и ввела новые пакеты (i-Digital, 03.03.2026): 1–5 сообщений абоненту в месяц — 9,50 ₽, 6–20 — 46 ₽, 21+ — 64 ₽. Читайте ещё раз: шестое сообщение одному и тому же человеку скачком удорожает весь пакет почти в пять раз. Пользователь пять раз не получил код из-за задержки сети — а платите вы, и по нарастающей. Гениально. Налог на собственную ненадёжность.
По данным IntellectDialog и обзоров на vc.ru, первое транзакционное SMS абоненту МТС в месяц в пиковой комплектации доходит до 66 ₽ с НДС (IntellectDialog, vc.ru).
Шестьдесят шесть рублей, Карл! За «Ваш код: 482913».
Лучший анекдот года рассказал Telegram
В 2023 году выяснилось, что российские операторы выставили Telegram цену до $0,25 за одно SMS с кодом — в 10 раз дороже, чем в Западной Европе, и в 30 раз дороже, чем в США (Хабр, 22.03.2023). Telegram ответил просто: перевёл доставку кодов на email. Ушёл. Хлопнул дверью.
Это, между прочим, единственно верная реакция на ценообразование «потому, что можем». Но у Telegram миллиард пользователей и собственный мессенджер. А у вашего стартапа — двенадцать энтузиастов, надежда и счёт в банке, который тает на SMS-кодах.
«Но ведь есть агрегаторы!» Есть. Смотрим.
Хорошо, скажете вы, не ходи к оператору напрямую — иди через агрегатора. Пошли, посмотрели, записали (цены с официальных страниц тарифов, проверены на начало сентября 2026):
|
Сервис |
Цена за SMS |
Условия и подводные камни |
Источник |
|---|---|---|---|
|
SMS.RU |
от 8,36–8,50 ₽ (первое SMS абоненту в месяце, дальше дороже) |
Пакетная тарификация как у операторов; абонплата за имя отправителя 2 080–3 000 ₽/мес; шаблоны 1 100–2 000 ₽/мес за штуку |
|
|
P1SMS |
2,92 ₽ (цифровое имя, доходит ~60%); общее имя: МТС 12,30 ₽, Билайн 12,50 ₽, МегаФон 10,83 ₽ |
«Без наценок» — только от 50 000 SMS/мес; МТС берёт +1 000 ₽/мес за шаблон |
|
|
iqSMS |
от 2,79–3,25 ₽ |
Минимальный платёж10 000 ₽; цена «от», точную назовёт менеджер |
|
|
TargetSMS |
6,92–9,73 ₽ по операторам (МегаФон и Билайн — пакетная сетка в кабинете) |
Без минимального платежа, это плюс; но за имя отправителя 1 500–3 000 ₽/мес |
|
|
ePochta SMS |
1,90–2,99 ₽ (прямое подключение) |
Претензии по недоставке принимают только на прямых подключениях |
|
|
SMSint |
от 2,38 ₽ (со случайного номера) |
От буквенной подписи — сервисный сбор + «внутрисетевая стоимость оператора» |
|
|
SMSC |
~7,5–7,7 ₽ за SMS в пакетах |
Зато у них отличнаялента новостей — сплошная хроника повышений операторов |
|
|
SMSDirector |
2,69 ₽ единый по РФ; детальный 1,29–2,79 ₽ по операторам |
Прайс датирован 01.12.2020 — написан до трёх волн повышений 2024–2026, актуальную цену уточняйте у менеджера |
|
|
Twilio (для сравнения) |
$0,7522 за сегмент (~70 ₽) по России |
Глобальный игрок делает то же самое, только дороже; новым аккаунтам из РФ с 2022 — несладко |
Два вывода из таблицы.
Первый: агрегаторы — не спасение, а комфортная каюта на том же корабле. Они живут на наценке к операторским тарифам, и каждое операторское повышение послушно перепечатывают в свои прайсы (агрегатор TargetSMS даже написал оправдательную статью «Повышения цен являются экономически обоснованными» — спасибо, ребята, очень убедительно, особенно с вашей наценкой сверху). Отдельного упоминания заслуживает SMSDirector: у них есть публичный прайс с честными 2,69 ₽ за SMS — вот только датирован он декабрём 2020 года, до всех волн повышений. Это уже не прайс-лист, а исторический документ ушедшей эпохи.
Второй, и он гораздо важнее: обратите внимание на мелкий шрифт. Платите вы за отправленные, а не за доставленные сообщения. SMS.RU прямо пишет: «платите только за отправленные SMS». Не дошло — ваша проблема. Пользователь не получил код, ушёл к конкуренту, а стоимость SMS списана. Это как платить таксисту за попытку доехать.
Ах да, доставляемость. Маркетинговые буклеты обещают «открываемость 98%», но в реальности авторизационные SMS теряются, задерживаются на минуты и тонут в антиспам-фильтрах, что даже горячие сторонники признают: «даже 95% доставляемости — мало для входа в аккаунт». Пять процентов ваших новых пользователей просто не войдут. А вы за это заплатили.
А что в лагере мессенджеров? Спойлер: там другая физика
Вся дороговизна SMS держится на одной вещи: интерконнекте. Оператор владеет «последней милей» до SIM-карты и берёт ренту за доступ. Мессенджеры этой ренты лишены — сообщение идёт через интернет, который пользователь и так оплатил. Поэтому экономика там другая:
|
Канал |
Цена за подтверждение |
Нюансы |
Источник |
|---|---|---|---|
|
Telegram Gateway |
$0,01 (~1 ₽) за доставленный код |
Оплата только в крипте TON; код приходит в служебный чат; только авторизационные тексты; работает, но зависит от одного мессенджера |
|
|
WhatsApp (authentication-шаблоны Meta) |
~$0,052–0,056 (≈5 ₽) за доставленное + подписка BSP |
Россия — в верхней части ценовой сетки Meta; провайдеры берут от 5 000–6 000 ₽/мес за канал и до 20 000 ₽ за настройку; у i-Digital авторизационное — 7,11 ₽ с НДС |
|
|
Flash Call (звонок, код = последние цифры) |
0,20–1,98 ₽ |
Дёшево, но операторымассово блокируют Flash Call-пулы, вычисляя их по длительности звонка; zvonok.com честно предупреждает о нестабильности |
|
|
Viber (сервисные) |
~0,92 ₽ +30 500 ₽/мес за бизнес-аккаунт |
Абонплата съедает всю экономию при малых объёмах |
|
|
VK ID |
бесплатно |
Но это OAuth-кнопка «Войти через VK», а не подтверждение номера; и аудитория ограничена экосистемой VK |
|
|
SMS у оператора/агрегатора |
2–45 ₽, платите за отправку |
См. всё, что написано выше |
см. таблицы выше |
Картина ясна: мессенджерные каналы в разы дешевле, но у каждого — своё раздражающее «но». Telegram Gateway — только Telegram и крипта. WhatsApp — подписки провайдеров и цены Meta, как за заграницу. Flash Call блокируют те самые операторы, которым он перешёл дорогу (удивительное совпадение, не правда ли). Viber хочет тридцать тысяч в месяц за право быть дешёвым.
И тут на сцену выходит игрок, который собрал все тузы в одном рукаве.
Confirmator: восемьдесят копеек и ни одного пакета
Confirmator — сервис подтверждения телефона и email через API. Суть: ваш сервер создаёт один challenge, пользователь подтверждает номер в Telegram, MAX или WhatsApp (или вводит код из email), результат прилетает через REST API или подписанный webhook. Всё.
Теперь цифры, ради которых всё затевалось:
-
0,80 ₽ за одно успешное подтверждение. Не «от», не «при объёме от миллиона», не «плюс абонплата за шаблон». Восемьдесят копеек, фиксированно.
-
Платите только за успех. Отклонённые и истёкшие запросы — бесплатны. Пользователь не подтвердил — вы не заплатили. После десятилетий «платите за отправленные» это звучит, как фантастика.
-
Без карты на старте — можно попробовать на тестовом окружении.
-
Пополнение 100 ₽ = 125 подтверждений. Сто рублей. У оператора на сто рублей вы купите от двух до десяти SMS. Если повезёт.
-
Поддержка MAX — российского мессенджера, который с 1 сентября 2025 предустанавливается на все новые смартфоны в РФ (обзор, Chat2Desk). Это принципиально: MAX не зависит от санкционных качелей, не требует крипты, и его аудитория в России растёт принудительно-органическим образом. Из конкурентов полноценную связку Telegram + MAX + WhatsApp + email в одном API с единой ценой мы не нашли. Если нашли вы — добро пожаловать в комментарии, сравним.
Посчитаем Papaplant на Confirmator: 11 000 подтверждений × 0,80 ₽ = 8 800 ₽ в месяц. Против 88 000 ₽ у среднего агрегатора и против 495 000 ₽ по операторскому «потолку». Экономия — до полумиллиона рублей ежемесячно. Это не оптимизация. Это другая реальность!
Сводная таблица: сколько стоит верифицировать 10 000 пользователей в месяц
|
Канал |
Цена за подтверждение |
Стоимость 11 000 подтверждений/мес |
Скрытые платежи |
|---|---|---|---|
|
SMS напрямую (пакетная сетка операторов) |
до 45 ₽ |
до 495 000 ₽ |
Абонплаты за имя и шаблоны (1 000–3 000 ₽/мес за каждый), плата за недоставленные |
|
SMS через агрегатора |
8–12 ₽ (буквенное имя) |
88 000–132 000 ₽ |
Абонплаты за имя/шаблоны, плата за отправку, а не доставку |
|
SMS через агрегатора (цифровое имя) |
2,4–3 ₽ |
26 000–33 000 ₽ |
Доставляемость ~60% — пользователь может просто не получить код |
|
WhatsApp OTP через провайдера |
~5–7 ₽ |
55 000–77 000 ₽ |
Подписка BSP 5 000–25 000 ₽/мес, настройка до 20 000 ₽ |
|
Telegram Gateway |
~1 ₽ |
~11 000 ₽ |
Оплата в TON, один мессенджер, зависимость от внешней платформы |
|
Flash Call |
0,2–2 ₽ |
2 200–22 000 ₽ |
Операторы блокируют пулы номеров, стабильность — лотерея |
|
Confirmator |
0,80 ₽ |
8 800 ₽ |
Нет: платите только за успешные подтверждения, все каналы включены |
(Цены — из открытых источников по состоянию на сентябрь 2026, ссылки приведены выше. Тарифы меняются, операторы — быстрее всего. Перепроверяйте перед подписанием договора.)
Техническая начинка: три HTTP-запроса и ноль страданий
Хватит финансов, поговорим как инженеры. Всё, что делает интеграция с Confirmator API, — это три вызова:
POST /v1/challenges → создали проверку, получили ссылки на ботовGET /v1/challenges/:id/status → подождали результата (или webhook вместо polling)POST /v1/challenges/:id/consume → одноразово забрали типизированный proof
Никаких SDK, XML и «личных кабинетов с менеджером» — голый HTTPS + Bearer-токен. Поэтому на любом языке интеграция выглядит одинаково и укладывается в один экран кода. Смотрите сами.
Node.js (plain fetch, без единой зависимости)
const apiKey = process.env.CONFIRMATOR_API_KEY;async function call(path, init = {}) { const res = await fetch("https://confirmator.ru" + path, { ...init, headers: { authorization: `Bearer ${apiKey}`, "content-type": "application/json", ...init.headers, }, }); const body = await res.json(); if (!res.ok) throw new Error(body.error?.code ?? String(res.status)); return body;}export async function verifyPhone(phone) { // 1. Создаём challenge - 0,80 ₽ резервируются, а не списываются const challenge = await call("/v1/challenges", { method: "POST", body: JSON.stringify({ phone, purpose: "login", deliveryMode: "polling" }), }); // Пользователю показываем challenge.authorization_url // или кнопки мессенджеров из challenge.links (Telegram, MAX, WhatsApp) // 2. Ждём терминальный статус (polling; в проде лучше webhook) let status; do { await new Promise((r) => setTimeout(r, 1000)); status = await call(`/v1/challenges/${challenge.id}/status`); } while (status.status === "created" || status.status === "opened"); if (status.status !== "confirmed") return false; // rejected/expired - бесплатно // 3. Одноразово забираем proof const { proof } = await call(`/v1/challenges/${challenge.id}/consume`, { method: "POST", headers: { "idempotency-key": crypto.randomUUID() }, }); return proof.phoneVerified === true;}
Python (requests, тот же самый flow — буквально построчно)
import os, time, uuidimport requestsAPI_KEY = os.environ["CONFIRMATOR_API_KEY"]BASE = "https://confirmator.ru"def call(path, method="GET", **kwargs): headers = {"Authorization": f"Bearer {API_KEY}"} headers.update(kwargs.pop("headers", {})) response = requests.request( method, BASE + path, headers=headers, timeout=10, **kwargs ) body = response.json() if not response.ok: raise RuntimeError(body.get("error", {}).get("code", response.status_code)) return bodydef verify_phone(phone: str) -> bool: # 1. Создаём challenge - 0,80 ₽ резервируются, а не списываются challenge = call("/v1/challenges", "POST", json={ "phone": phone, "purpose": "login", "deliveryMode": "polling", }) # Пользователю показываем challenge["authorization_url"] # или кнопки мессенджеров из challenge["links"] (Telegram, MAX, WhatsApp) # 2. Ждём терминальный статус (polling; в проде лучше webhook) while True: status = call(f"/v1/challenges/{challenge['id']}/status") if status["status"] not in ("created", "opened"): break time.sleep(1) if status["status"] != "confirmed": return False # rejected/expired - бесплатно # 3. Одноразово забираем proof proof = call( f"/v1/challenges/{challenge['id']}/consume", "POST", headers={"Idempotency-Key": str(uuid.uuid4())}, )["proof"] return proof.get("phoneVerified") is True
Сравните: это не «похожие» примеры — это один и тот же код, просто написанный дважды. fetch против requests, остальное совпадает до пунктуации. Если ваша команда завтра переедет с Node на Python (или наоборот), верификацию вы перепишете за время одного созвона.
Если не хочется polling: пожалуйста, webhook с подписью
Для продакшена есть deliveryMode: "webhook": Confirmator сам придёт на ваш endpoint, подписав тело HMAC-SHA256 (заголовок x-confirmator-signature, строка подписи — timestamp + "." + rawBody). Проверка — три строчки в любом фреймворке, например на FastAPI:
import hmac, hashlib, timedef check_signature(raw_body: bytes, timestamp: str, signature: str, secret: str) -> bool: if abs(time.time() - int(timestamp)) > 300: # отсекаем replay return False expected = "v1=" + hmac.new( secret.encode(), timestamp.encode() + b"." + raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, signature) # timing-safe сравнение
Тот же HMAC на Node — createHmac("sha256", secret) + timingSafeEqual, полный пример на Express есть в документации. Два нюанса из разряда «сделайте это сразу»: дедуплицируйте события по x-confirmator-event-id (доставка — at-least-once, до пяти повторов) и создавайте сессию пользователя только по proof.phoneVerified === true, а не по факту открытия ссылки на бота.
И заметьте, чего в этом API нет: нет регистрации шаблонов (по 1 000 ₽/мес за штуку у МТС, напоминаю), нет абонплаты за имя отправителя, нет статуса «доставлено в операторскую сеть, дальше не наша забота». Есть insufficient_balance с кодом 402, если деньги кончились, — и это, пожалуй, самый честный HTTP-код во всей этой истории.
Провокационные тезисы, за которые меня закидают в комментариях
-
Авторизационное SMS — это искусственно дефицитный товар. Себестоимость доставки шести цифр стремится к нулю; цена в 45 ₽ — это чистая рента за доступ к инфраструктуре, построенной на абонентских деньгах.
-
Пакетная тарификация — мошенническая по сути механика. Вы платите не за то, что отправили, а за то, что могли бы отправить. Представьте, что ресторан берёт с вас «пакет на столик»: заказали салат — платите, как за всё дегустационное меню.
-
Операторы блокируют Flash Call не из соображений безопасности, а потому что это конкурент их марже. Когда «защита абонентов» точечно убивает только те сервисы, которые дешевле вашего прайса, — это не защита абонентов.
-
Синхронные повышения цен четырёх игроков в один день — это просто совпадение. (Этот тезис защищать не буду, скажите мне сами, что это было.)
-
SMS-код как фактор аутентификации мёртв, и цена — последняя, но не главная причина. SIM-swapping, перехват через SS7, доставляемость 95% на входе в аккаунт. Мы платим втридорога за технологию 1992 года, которая ещё и небезопасна.
Что делать стартапу прямо сейчас
-
Посчитайте честно. Не «цена за SMS», а стоимость успешной регистрации: цена × доля доставленных × доля введённых кодов + абонплаты + шаблоны + стоимость поддержки «мне не пришёл код». Число вас не порадует.
-
Перестаньте платить за попытки. Канал, где списывают за отправку, а не за результат, перекладывает на вас риск, который не вы создаёте.
-
Давайте пользователю выбор канала. Кто-то живёт в Telegram, кто-то — в WhatsApp, а через год половина новых смартфонов в стране будет с MAX из коробки. Один API, много каналов — это уже не роскошь, это confirmator.ru.
-
И заложите в юнит-экономику 80 копеек, а не 45 рублей. Разница между этими числами — это ещё один разработчик в вашей команде. Или ещё один месяц жизни вашего стартапа.
Дисклеймер: статья написана при участии команды Confirmator, что, впрочем, не делает цифры в таблицах менее кликабельными — все источники открыты, проверяйте. Мнение об операторском ценообразовании — оценочное суждение автора. Цены актуальны на начало сентября 2026 и, зная темпы, к моменту вашего прочтения могут вырасти. Ещё раз.
Обсудим в комментариях: сколько платите за верификацию вы? И главное — за что, собственно, мы всё это время платили?
ссылка на оригинал статьи https://habr.com/ru/articles/1077448/