СМС за 45 рублей: как операторы придумали налог на стартапы и почему мы больше не будем его платить

от автора

SMS vs. Confirmator

SMS vs. Confirmator

Одна шестизначная цифровая последовательность. Пятьдесят рублей. Шах и мат.

Давайте сыграем в игру. Я говорю вам услугу, вы угадываете цену.

Услуга: передать по воздуху 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 ₽/мес за штуку

sms.ru/price

P1SMS

2,92 ₽ (цифровое имя, доходит ~60%); общее имя: МТС 12,30 ₽, Билайн 12,50 ₽, МегаФон 10,83 ₽

«Без наценок» — только от 50 000 SMS/мес; МТС берёт +1 000 ₽/мес за шаблон

p1sms.ru

iqSMS

от 2,79–3,25 ₽

Минимальный платёж10 000 ₽; цена «от», точную назовёт менеджер

iqsms.ru

TargetSMS

6,92–9,73 ₽ по операторам (МегаФон и Билайн — пакетная сетка в кабинете)

Без минимального платежа, это плюс; но за имя отправителя 1 500–3 000 ₽/мес

targetsms.ru

ePochta SMS

1,90–2,99 ₽ (прямое подключение)

Претензии по недоставке принимают только на прямых подключениях

epochtasms.ru

SMSint

от 2,38 ₽ (со случайного номера)

От буквенной подписи — сервисный сбор + «внутрисетевая стоимость оператора»

smsint.ru

SMSC

~7,5–7,7 ₽ за SMS в пакетах

Зато у них отличнаялента новостей — сплошная хроника повышений операторов

smsc.ru

SMSDirector

2,69 ₽ единый по РФ; детальный 1,29–2,79 ₽ по операторам

Прайс датирован 01.12.2020 — написан до трёх волн повышений 2024–2026, актуальную цену уточняйте у менеджера

smsdirector.ru/price

Twilio (для сравнения)

$0,7522 за сегмент (~70 ₽) по России

Глобальный игрок делает то же самое, только дороже; новым аккаунтам из РФ с 2022 — несладко

twilio.com

Два вывода из таблицы.

Первый: агрегаторы — не спасение, а комфортная каюта на том же корабле. Они живут на наценке к операторским тарифам, и каждое операторское повышение послушно перепечатывают в свои прайсы (агрегатор TargetSMS даже написал оправдательную статью «Повышения цен являются экономически обоснованными» — спасибо, ребята, очень убедительно, особенно с вашей наценкой сверху). Отдельного упоминания заслуживает SMSDirector: у них есть публичный прайс с честными 2,69 ₽ за SMS — вот только датирован он декабрём 2020 года, до всех волн повышений. Это уже не прайс-лист, а исторический документ ушедшей эпохи.

Второй, и он гораздо важнее: обратите внимание на мелкий шрифт. Платите вы за отправленные, а не за доставленные сообщения. SMS.RU прямо пишет: «платите только за отправленные SMS». Не дошло — ваша проблема. Пользователь не получил код, ушёл к конкуренту, а стоимость SMS списана. Это как платить таксисту за попытку доехать.

Ах да, доставляемость. Маркетинговые буклеты обещают «открываемость 98%», но в реальности авторизационные SMS теряются, задерживаются на минуты и тонут в антиспам-фильтрах, что даже горячие сторонники признают: «даже 95% доставляемости — мало для входа в аккаунт». Пять процентов ваших новых пользователей просто не войдут. А вы за это заплатили.

А что в лагере мессенджеров? Спойлер: там другая физика

Вся дороговизна SMS держится на одной вещи: интерконнекте. Оператор владеет «последней милей» до SIM-карты и берёт ренту за доступ. Мессенджеры этой ренты лишены — сообщение идёт через интернет, который пользователь и так оплатил. Поэтому экономика там другая:

Канал

Цена за подтверждение

Нюансы

Источник

Telegram Gateway

$0,01 (~1 ₽) за доставленный код

Оплата только в крипте TON; код приходит в служебный чат; только авторизационные тексты; работает, но зависит от одного мессенджера

gateway.telegram.org, Hi-Tech Mail.ru

WhatsApp (authentication-шаблоны Meta)

~$0,052–0,056 (≈5 ₽) за доставленное + подписка BSP

Россия — в верхней части ценовой сетки Meta; провайдеры берут от 5 000–6 000 ₽/мес за канал и до 20 000 ₽ за настройку; у i-Digital авторизационное — 7,11 ₽ с НДС

i-dgtl.ru, 360dialog, Wazzup

Flash Call (звонок, код = последние цифры)

0,20–1,98 ₽

Дёшево, но операторымассово блокируют Flash Call-пулы, вычисляя их по длительности звонка; zvonok.com честно предупреждает о нестабильности

flashcall.ru, redsms.ru

Viber (сервисные)

~0,92 ₽ +30 500 ₽/мес за бизнес-аккаунт

Абонплата съедает всю экономию при малых объёмах

i-dgtl.ru

VK ID

бесплатно

Но это OAuth-кнопка «Войти через VK», а не подтверждение номера; и аудитория ограничена экосистемой VK

id.vk.com

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-код во всей этой истории.

Провокационные тезисы, за которые меня закидают в комментариях

  1. Авторизационное SMS — это искусственно дефицитный товар. Себестоимость доставки шести цифр стремится к нулю; цена в 45 ₽ — это чистая рента за доступ к инфраструктуре, построенной на абонентских деньгах.

  2. Пакетная тарификация — мошенническая по сути механика. Вы платите не за то, что отправили, а за то, что могли бы отправить. Представьте, что ресторан берёт с вас «пакет на столик»: заказали салат — платите, как за всё дегустационное меню.

  3. Операторы блокируют Flash Call не из соображений безопасности, а потому что это конкурент их марже. Когда «защита абонентов» точечно убивает только те сервисы, которые дешевле вашего прайса, — это не защита абонентов.

  4. Синхронные повышения цен четырёх игроков в один день — это просто совпадение. (Этот тезис защищать не буду, скажите мне сами, что это было.)

  5. SMS-код как фактор аутентификации мёртв, и цена — последняя, но не главная причина. SIM-swapping, перехват через SS7, доставляемость 95% на входе в аккаунт. Мы платим втридорога за технологию 1992 года, которая ещё и небезопасна.

Что делать стартапу прямо сейчас

  • Посчитайте честно. Не «цена за SMS», а стоимость успешной регистрации: цена × доля доставленных × доля введённых кодов + абонплаты + шаблоны + стоимость поддержки «мне не пришёл код». Число вас не порадует.

  • Перестаньте платить за попытки. Канал, где списывают за отправку, а не за результат, перекладывает на вас риск, который не вы создаёте.

  • Давайте пользователю выбор канала. Кто-то живёт в Telegram, кто-то — в WhatsApp, а через год половина новых смартфонов в стране будет с MAX из коробки. Один API, много каналов — это уже не роскошь, это confirmator.ru.

  • И заложите в юнит-экономику 80 копеек, а не 45 рублей. Разница между этими числами — это ещё один разработчик в вашей команде. Или ещё один месяц жизни вашего стартапа.


Дисклеймер: статья написана при участии команды Confirmator, что, впрочем, не делает цифры в таблицах менее кликабельными — все источники открыты, проверяйте. Мнение об операторском ценообразовании — оценочное суждение автора. Цены актуальны на начало сентября 2026 и, зная темпы, к моменту вашего прочтения могут вырасти. Ещё раз.

Обсудим в комментариях: сколько платите за верификацию вы? И главное — за что, собственно, мы всё это время платили?

ссылка на оригинал статьи https://habr.com/ru/articles/1077448/