Как превратить экспорт подписок в отчет по MRR и ARR (Руководство 2026)

Экспорт подписок содержит строки: клиент, тарифный план, сумма, интервал, статус, дата начала. Отчет по MRR требует одну цифру на каждый месяц. Переход от одного к другому кажется простой арифметикой и в основном сводится к определениям.
Каждая цифра в готовом отчете зависит от двух решений: какие подписки считать активными и вычитаются ли скидки из суммы.
Ошибитесь в любом из них, и отчет все равно сойдется внутренне. Вот только он будет расходиться с данными финансового отдела, панели биллинга и версии за прошлый месяц.
В этом руководстве рассказывается, с чем нужно определиться в первую очередь, о трех ручных способах расчета и о том, на каком этапе каждый из них перестает работать.
Что вам понадобится перед началом работы
Вам нужен экспорт, где одна строка соответствует одной подписке, а не одному счету на оплату. Счета показывают, за что была выставлена оплата. Подписки показывают, какие платежи регулярно повторяются.
Вам также нужен интервал выставления счетов в каждой строке. Месячные и годовые тарифные планы нельзя суммировать, пока годовые не будут нормализованы.
Также понадобится колонка со статусом. Документация Stripe по аналитике биллинга определяет MRR как сумму нормализованных за месяц значений. В ней учитываются только подписки со статусом active и past_due.
Это определение стоит принять как есть. Оно официально опубликовано, конкретно и дает вам весомый аргумент, когда кто-то спросит, почему изменилась цифра.
Сначала нужно принять три решения.
Какие статусы учитываются. «Активные» плюс «просроченные» — это задокументированный вариант по умолчанию. Отмененные и неоплаченные подписки считаются оттоком и исключаются.
Вычитаются ли скидки. Stripe позволяет настраивать этот параметр отдельно для регулярных и разовых скидок. Бессрочные скидки вычитаются всегда.
С какого момента подписчик начинает учитываться. Stripe позволяет выбрать начало первого расчетного периода или получение первого платежа. Первый вариант описывается как наиболее распространенный.
Запишите эти три правила на листе перед тем, как писать формулу. Именно они отличают согласованный отчет от бесконечных споров.
Why the arithmetic is the easy part
Нормализация — это просто. В собственном примере Stripe используются 100 подписчиков на месячном тарифе за $100 и 50 подписчиков на годовом тарифе за $600. Это дает (100 × 100) + (50 × (600 / 12)) = 12,500.
Сложности кроются в исключениях, и их легко упустить из виду в таблице.
Налоги исключаются. Stripe исключает налоги из MRR. Если в вашем экспорте указаны суммы брутто, вы завышаете показатели каждый месяц.
Пробные периоды исключаются. Подписки с пробным периодом не учитываются, пока они не перейдут в платные.
Бесплатные тарифы исключаются. Подписчик на бесплатном тарифе ничего не приносит, поэтому он также не считается активным подписчиком.
Доход на основе потребления исключается. Именно этот пункт часто удивляет людей. Продукты с тарификацией по объему потребления полностью исключаются из MRR, поэтому у бизнеса с частичной оплатой по факту использования MRR по определению будет ниже фактической выручки.
Кроме того, есть случай с купонами, который задокументирован и действительно противоречит интуиции. Если MRR подписчика падает до нуля, этот подписчик считается ушедшим за этот период.
Купон на скидку 100% делает именно это. Если позже убрать купон, подписчик снова станет активным, что отобразится как реактивация.
Таким образом, промоакция может вызвать отток в вашем отчете без ухода хотя бы одного реального клиента.
Как сделать это вручную
Вариант 1: Нормализовать интервал, затем просуммировать по месяцам
Добавьте колонку с ежемесячной суммой. Разделите годовые суммы на 12, умножьте недельные примерно на 4,33, а месячные оставьте без изменений.
Затем подведите итоги по месяцам с помощью функции SUMIFS, отфильтровав по статусу. Используйте функцию EOMONTH, чтобы сформировать даты окончания месяцев, по которым вы составляете отчет.
Составляйте отчет по MRR на конец месяца, а не на сегодняшний день. Загружаемый отчет Stripe показывает именно MRR каждого подписчика на конец месяца, и соблюдение этого правила избавит вас от проблем со сверкой в будущем.
Главное ограничение здесь — история изменений. Этот способ дает четкую картину за текущий месяц, но ничего не говорит о том, почему показатели изменились.
Вариант 2: Создать колонки движения показателей
Именно это делает отчет по-настоящему полезным. Разделите изменения на новые подписки, реактивацию, расширение, сокращение и отток.
Определение роста в Stripe — это начальный показатель плюс новые подписки, реактивация и расширение, минус сокращение и отток, скорректированные на курсы валют. В их практическом примере сумма меняется с $1,000 до $1,045 именно за счет этих компонентов.
Обратите внимание на последний пункт. Если кто-то из клиентов платит в другой валюте, чистая модель на формулах не сойдется, пока вы не учтете влияние курсовой разницы.
У мультивалютности есть и второе последствие, о котором стоит знать. Stripe заявляет, что фильтрация и группировка по продукту или цене недоступны, если доход от подписок обрабатывается в нескольких валютах.
Ограничение этого пути — сложность поддержки. Колонки движения требуют снимка данных за предыдущий период, поэтому вам придется постоянно хранить копию данных за прошлый месяц.
Вариант 3: Брать данные о движении показателей напрямую из биллинговой системы
Большинство биллинговых платформ позволяют экспортировать данные о движении показателей. Stripe публикует три CSV-файла: MRR на одного подписчика по месяцам, сводку метрик подписки и журнал изменений MRR каждого клиента.
Именно третий файл вам и нужен. Он избавляет от самой сложной части Варианта 2.
Если вы измените определение метрики, будьте готовы к задержке. Stripe отмечает, что изменения конфигурации вступают в силу в течение 24–48 часов.
Общий предел возможностей. Все три пути ограничиваются только MRR. Чтобы превратить его в ARR, ARPU, показатели оттока и удержания, потребуется принять еще ряд решений поверх той же таблицы.
Где ручной способ начинает буксовать
На первый месяц уйдет полдня. На четвертый понадобится больше времени, и вовсе не потому, что данные стали сложнее.
К этому моменту в вашей рабочей книге уже будет два определения «активного» пользователя, скорректированная вручную колонка валютных курсов и вкладка движения показателей, к которой никто не хочет прикасаться.
Производные метрики только усугубляют проблему. ARPU — это общий MRR, деленный на количество активных подписчиков. Lifetime value — это ARPU, деленный на показатель оттока.
У показателя оттока есть своя ловушка. Знаменатель Stripe — это подписчики, активные 30 дней назад, плюс новые подписчики, добавленные за этот период, что дает 100 / (1000 + 100) = 9.1%. Таблица, которая делит только на начальное количество, покажет более высокую цифру.
Удержание также ведет себя неожиданно. Удержание выручки может превышать 100%, поскольку расширение внутри когорты перевешивает отток.
В этом нет ничего сложного. Это просто пять экспертных решений, которые должны приниматься абсолютно одинаково каждый месяц тем, кто в данный момент составляет отчет.
Как составить отчет с помощью Powerdrill Bloom
Шаг 1: Загрузите экспорт подписок
Загрузите CSV-файл подписок или файлы подписок и движения показателей вместе. Powerdrill Bloom анализирует колонки при загрузке, поэтому пропущенные интервалы, пустые суммы и дублирующиеся ID подписок обнаруживаются еще до расчета итогов.
Шаг 2: Сформулируйте определения на естественном языке
Опишите правила вместо того, чтобы настраивать их вручную. Укажите, какие статусы учитываются, очищены ли суммы от скидок и на конец какого месяца составляется отчет.
Затем в рамках того же шага запросите проверки. Спросите, в каких строках указан неожиданный интервал, а какие подписки обнулились после применения скидок. Затем спросите, сходятся ли ежемесячные итоги со сводкой биллинга.
Шаг 3: Экспортируйте график, отчет или презентацию
Выгрузите ежемесячный тренд, таблицу движения по компонентам или готовый слайд для совета директоров с цифрами и определениями.
Почему это лучше, чем пересобирать отчет каждый месяц
| Ручной способ | Powerdrill Bloom | |
|---|---|---|
| Нормализация годовых планов | Колонка с формулой в каждом файле | Загрузить и указать правило |
| Детализация движения показателей | Необходимость хранить снимок за прошлый месяц | Просто запросить компоненты |
| Исключение пробных периодов и тарифицируемых позиций | Ручные фильтры при каждом расчете | Указать исключения |
| Сверка со сводкой биллинга | Ручная проверка | Запросить проверку сходимости итогов |
Именно на промежуточные строки уходят целые дни. Просуммировать колонку — не проблема; сложность в том, чтобы сохранять неизменными пять определений из месяца в месяц.
Распространенные ошибки
Суммирование счетов вместо подписок. Счета включают разовые сборы и пропорциональные начисления. Регулярный доход — это свойство подписки, а не счета.
Учет налогов в сумме. Налог завышает показатели каждый месяц и никогда не компенсируется. Очищайте сумму от налогов перед нормализацией.
Учет пробных периодов как дохода. У пробного периода еще нет регулярной суммы платежа. Его включение — это заимствование роста следующего месяца.
Приравнивание ARR к MRR, умноженному на 12, без пояснений. Это нормализованный годовой показатель, а не собранные денежные средства. Обозначьте его соответствующим образом, чтобы никто не принял его за объем заказов.
Игнорирование эффекта влияния купонов на отток. Полная скидка снижает сумму подписки до нуля, что считывается как отток. Помечайте такие строки заранее, чтобы не объяснять это постфактум.
Деление оттока только на начальное количество. Задокументированный знаменатель включает подписчиков, добавленных в течение расчетного периода. Эти два варианта дают разные показатели на одних и тех же данных.
Создание отчета с нуля каждый месяц. Определения не меняются, меняется только файл экспорта. Сохраняйте правила и просто меняйте файл — это тот же принцип, что и в отчете о сравнении бюджета с фактическими показателями.
Заключение
Зафиксируйте список статусов, определитесь со скидками, нормализуйте интервал и составляйте отчет на конец месяца. Эти четыре шага позволят создать отчет по MRR, который выдержит любые вопросы со стороны финансового отдела.
Самая затратная часть — это не подсчет суммы. Сложность в том, что пять определений должны оставаться неизменными каждый месяц, в то время как структура экспорта может меняться.
Если именно на это уходят ваши дни в конце месяца, попробуйте Powerdrill Bloom для анализа экспорта подписок. См. также наше руководство по установке целевых показателей KPI на основе собственных данных. Обзор AI-инструментов для отслеживания SaaS-метрик и страница финансового AI-анализа помогут разобраться с инструментарием.
Часто задаваемые вопросы
Какова формула расчета MRR на основе экспорта подписок?
Нормализуйте каждую подписку до ежемесячной суммы, затем сложите те, которые имеют подходящий статус. Пример Stripe: (100 × $100) + (50 × ($600 / 12)) = $12,500.
Как перевести MRR в ARR?
Умножьте ежемесячный показатель на 12. Обозначьте его как нормализованный годовой показатель, а не как собранные денежные средства, поскольку счета по годовым планам выставляются авансом.
Следует ли включать доход на основе потребления?
Stripe исключает продукты с тарификацией по объему потребления из MRR. Если значительная часть вашей выручки зависит от использования, отражайте ее отдельной строкой, а не объединяйте с основным показателем.
Какие статусы подписки считаются активными?
По умолчанию документируются статусы active плюс past_due. Отмененные и неоплаченные подписки считаются оттоком и исключаются из общей суммы.
Почему мой показатель оттока отличается от данных в панели биллинга?
Чаще всего дело в знаменателе. Задокументированный расчет делит показатель на число подписчиков, активных 30 дней назад, плюс новые подписчики, добавленные за этот период.