Юнит-экономика: что это и как посчитать на примере магазина
Пошаговый расчёт юнит-экономики: от заказа после скидок и возвратов до маржи, CAC и точки безубыточности. Таблица и сценарии на учебном магазине.
Содержание статьи
Собственник магазина видит рост заказов и хочет удвоить рекламный бюджет. Но средний чек не отвечает на вопрос, сколько остаётся после скидки, возврата, закупки и доставки. Юнит-экономика сводит эти деньги к одной единице — заказу или клиенту — и показывает, при каком объёме решение приносит прибыль. Посчитаем её на вымышленном учебном магазине Wave: операции взяты из базы, расходы заданы отдельно как допущения.
Коротко: формула и порядок расчёта
Для магазина начните с заказа. Возьмите сумму, которую оставил покупатель после скидок и возвратов. Вычтите закупку проданного товара, доставку, упаковку, комиссию за платёж и обработку возвратов. Остаток — маржинальная прибыль заказа, или вклад в покрытие постоянных расходов. Для нового клиента отдельно сравните накопленный вклад его заказов со стоимостью привлечения CAC.
Положительный вклад заказа — ещё не прибыль бизнеса. В сентябре наш магазин оставил 2,46 млн ₽ вклада на 1 433 оплаченных заказах, но при модельных фиксированных и маркетинговых бюджетах месяц закончился расчётным минусом 1,52 млн ₽. Эта разница и есть причина считать несколько уровней, а не один «процент маржи».
Маржа заказа = сумма после скидок − возвраты − товарные и прочие переменные затратыПосле этого отдельно учитываются CAC нового клиента и постоянные расходы месяца.
- Выберите юнит и период; не смешивайте один заказ с одним клиентом.
- Сверьте выручку после возвратов и состав переменных затрат.
- Сравните канал привлечения с маржой когорты, а месяц — с фиксированными расходами.
- Повторите расчёт при скидке, дополнительных возвратах и росте CAC.
Как выбрать юнит: заказ, клиент или товар
Юнит — не обязательно пользователь. Выберите объект, количество которого меняется вместе с решением. Для скидки на товар полезна товарная позиция; для цены доставки — заказ; для расходов на привлечение — новый покупатель и его последующие заказы. Если у одного покупателя две покупки, делить весь маркетинговый бюджет на число заказов и называть результат CAC нельзя.
В смешанном ассортименте товарная позиция даёт хорошее решение о цене, но не покрывает всю логистику заказа автоматически. Заказ — удобное зерно для оплаты, доставки и возврата. Клиент нужен, чтобы видеть повторы и окупаемость привлечения. Эти уровни связаны, но их знаменатели различаются.
| Бизнес / решение | Юнит | Почему |
|---|---|---|
| Магазин: поднять цену категории | Товарная позиция | Цена и закупка относятся к позиции; общие затраты заказа требуют распределения |
| Магазин: изменить доставку | Заказ | Доставка возникает на заказ, даже если внутри несколько товаров |
| Магазин: увеличить рекламу | Новый клиент | CAC платится за клиента, который может покупать повторно |
| Подписка: поменять тариф | Аккаунт × месяц | Доход и обслуживание повторяются ежемесячно |
| Сервис доставки: добавить смену | Смена курьера | Пропускная способность и оплата смены ограничивают объём |
Что в учебном магазине наблюдается, а что мы предполагаем
Wave — вымышленный магазин из учебной базы. Берём оплаченные заказы, размещённые с 1 по 30 сентября 2024 года. В orders есть цена до скидки, сумма после скидки и покупатель; в returns — сумма возврата, которую привязываем к исходному заказу. Данные заканчиваются 31 октября: поздние возвраты после этой даты не видны. Это срез известной к дате расчёта экономики, а не окончательный результат всех сентябрьских заказов.
Себестоимости, доставки, упаковки, банковской комиссии и фактического рекламного бюджета в CSV нет. Они заданы единым файлом допущений для всего кластера. Затраты в примере — синтетические допущения, а не данные реального магазина. Если ваш учёт знает фактические расходы, замените ими параметры. НДС и режим налогообложения из учебных колонок не восстановить; налоговый расчёт нужно вести отдельно с вашей согласованной базой.
| Параметр | Значение | Роль |
|---|---|---|
| Себестоимость товара | 42–68% цены позиции по категории | Плановая закупка, не наблюдение в CSV |
| Доставка и упаковка | 220 ₽ + 55 ₽ на оплаченный заказ | Переменный расход |
| Эквайринг | 1,8% суммы заказа после скидки | Комиссию не пересчитываем при возврате |
| Обработка возврата | 140 ₽ за событие | Дополнительный переменный расход |
| Восстановление себестоимости при возврате | 75% оценочной себестоимости | Остальное считаем потерей |
| Маркетинг в сентябре / постоянные расходы | 975 000 ₽ / 3 000 000 ₽ | Отдельные месячные бюджеты |
Доход заказа: скидка и возврат меняют базу
В сентябре 1 433 оплаченных заказа имели сумму до скидок 9 254 468 ₽. После скидок в orders.net_total осталось 8 672 855 ₽. Код STACK встречается в 210 заказах и дал 395 227 ₽ из общих 581 613 ₽ скидок; этот эффект уже сидит в net_total, повторно вычитать купон нельзя. Известные к 31 октября возвраты по тем же заказам составили 605 982 ₽, поэтому в нашем управленческом расчёте остаётся 8 066 873 ₽. Прямое суммирование gross_total вместо этой величины завысило бы результат на 1 187 595 ₽ ещё до разговора о себестоимости.
Есть тонкость с датой возврата. Если считать только события, произошедшие в сентябре, часть денег по сентябрьским покупкам, возвращённых в октябре, исчезнет из расчёта. Мы относим возврат к исходному заказу и указываем дату среза. Для сравнения сентябрьской и октябрьской когорт потребуется одинаковая длительность наблюдения: октябрьская в этом файле ещё не созрела для полного сравнения возвратов.
Термин «выручка» далее означает именно управленческую сумму заказа после скидки и известного возврата. Он не утверждает момент признания дохода в финансовой отчётности. Если важен НДС, начните с проверки, содержит ли сумма налог, и не применяйте к неизвестной базе произвольную ставку. Отдельно проверьте, не оплачивает ли поставщик часть возврата: в этом учебном наборе такой компенсации нет. В 15 сентябрьских заказах записанный возврат превышает сумму после скидки на 17 640 ₽ в совокупности. Мы сохраняем эти записи в расчёте как данные, но в рабочем магазине их пришлось бы сверить с платёжным реестром.
| Строка | Формула | Сумма |
|---|---|---|
| Сумма до скидок | Σ gross_total | 9 254 468 ₽ |
| После скидок | Σ net_total | 8 672 855 ₽ |
| Известные возвраты | Σ refund_rub по сентябрьским заказам | −605 982 ₽ |
| После возвратов | 8 672 855 − 605 982 | 8 066 873 ₽ |
WITH refunds AS (SELECT order_id, SUM(refund_rub) AS amount FROM returns GROUP BY 1)
SELECT COUNT(*) AS orders, SUM(o.net_total) AS after_discount,
SUM(COALESCE(r.amount,0)) AS refunds,
SUM(o.net_total-COALESCE(r.amount,0)) AS after_refund
FROM orders o LEFT JOIN refunds r USING(order_id)
WHERE o.status='paid' AND o.placed_at>=DATE '2024-09-01'
AND o.placed_at<DATE '2024-10-01'Переменные затраты: что вычитать из заказа
Сначала посчитайте стоимость товаров по строкам заказа: у каждой категории свой предположенный процент закупочной цены. Для сентябрьских заказов стартовая оценка себестоимости — 5 320 124,21 ₽. Возвращённый товар может быть частично пригоден для повторной продажи; модель возвращает в стоимость запасов 279 246,65 ₽ и оставляет в расходе 5 040 877,56 ₽. Это именно модель восстановления, а не результат складской инвентаризации.
Доставка с упаковкой дают 394 075 ₽: 1 433 заказа × 275 ₽. Эквайринг на сумму после скидки — 156 111,39 ₽. Обработка 120 возвратных событий — 16 800 ₽. Вместе эти расходы, кроме товара, равны 566 986,39 ₽. Возврат денег покупателю уже вычтен из дохода; обработка возврата — отдельный расход. Если дважды вычесть refund_rub или не агрегировать возвраты до соединения, одна строка заказа превратится в несколько и итог будет неверным.
Зарплата постоянной команды, аренда и поддержка офиса не меняются строго с каждым заказом, поэтому пока остаются ниже строки вклада. Реклама тоже показывается отдельным бюджетом: для решения об увеличении закупки трафика её предельную часть придётся пересчитать, но смешивать уже обещанный бюджет месяца с доставкой каждого заказа нельзя.
Полная таблица юнит-экономики: от заказа до месяца
Такой расчёт удобно повторить в таблице: строка — один переход от денег покупателя к затратам. Ниже стоят суммы всего сентябрьского потока и пересчёт на один оплаченный заказ. Столбец на заказ — среднее, а не обещание, что любой отдельный заказ оставляет ровно 1 715,99 ₽: категории и возвраты неодинаковы.
Сумму после возвратов делим на число сентябрьских заказов только после того, как связали возвраты с исходным order_id. Себестоимость считаем на строках order_items, затем сворачиваем до заказа. Это защищает доход от размножения при соединении заказа с несколькими товарами. Строки ниже можно перенести в Excel, но в рабочем файле держите также сырой список заказов и сверку с ним.
| Строка | Формула для периода | Всего | На заказ |
|---|---|---|---|
| Оплаченные заказы | COUNT(DISTINCT order_id) | 1 433 | 1 |
| Сумма до скидок | Σ gross_total | 9 254 468 ₽ | 6 458,11 ₽ |
| Скидки | Σ gross_total − Σ net_total | −581 613 ₽ | −405,87 ₽ |
| Возвраты | −Σ refund_rub | −605 982 ₽ | −422,88 ₽ |
| Доход после возвратов | 8 672 855 − 605 982 | 8 066 873 ₽ | 5 629,36 ₽ |
| Закупка товара после восстановления | 5 320 124,21 − 279 246,65 | −5 040 877,56 ₽ | −3 517,71 ₽ |
| Доставка и упаковка | 1 433 × (220 + 55) | −394 075 ₽ | −275 ₽ |
| Эквайринг | 8 672 855 × 1,8% | −156 111,39 ₽ | −108,94 ₽ |
| Обработка возвратов | 120 × 140 | −16 800 ₽ | −11,72 ₽ |
| Вклад до маркетинга | Доход − переменные затраты | 2 459 009,05 ₽ | 1 715,99 ₽ |
| Маркетинг | Бюджеты пяти каналов | −975 000 ₽ | −680,39 ₽* |
| Постоянные расходы | Месячное допущение | −3 000 000 ₽ | −2 093,51 ₽* |
| Операционный результат модели | Вклад − бюджеты | −1 515 990,95 ₽ | −1 057,91 ₽* |
Распределение месячных бюджетов на 1 433 заказов нужно лишь для сверки отчёта. Это не переменная стоимость дополнительного заказа и не CAC. CAC делится на впервые купивших клиентов каждого канала.
Переход от заказа к клиенту: когда считать CAC
В сентябре покупки сделали 1 336 разных клиентов. Вклад на покупателя месяца равен 2 459 009,05 / 1 336 = 1 840,58 ₽. Но это смесь старых и новых покупателей, а CAC относится к тем, кого впервые удалось привести к оплате. В базе таких покупателей сентября 1 193; их фиксируем по дате первой оплаченной покупки, а не по регистрации или посещению сайта.
Для клиента с повторными покупками складывайте маржу его заказов по месяцам жизни когорты. Знаменатель оставляйте тем же числом новых покупателей, даже если во втором месяце вернулась малая часть. Иначе вы измерите только выживших и завысите способность всей группы вернуть затраты на привлечение. Сумма за доступные месяцы — наблюдённый маржинальный LTV на этом горизонте, не пожизненный прогноз.
В месячном отчёте не вычитайте CAC из маржи каждого повторного заказа. Он уже выплачен при привлечении; повторное вычитание разрушит кривую окупаемости. Если бюджет канала содержит бонус за первую покупку, который уже уменьшил net_total, также не учитывайте эту скидку второй раз в числителе CAC.
Для сравнения каналов на одинаковом возрасте когорты используйте расчёт LTV/CAC: он показывает, почему выручка клиента и маржинальная ценность дают разные решения.
Каналы: один первый заказ покрывает привлечение, другой нет
Источник клиента в учебной таблице users.channel постоянен для пользователя. Затраты на каналы в ней отсутствуют, поэтому бюджеты из файла допущений складывают медиа, долю команды и инструменты. Это условная атрибуция первого платежа к каналу пользователя, а не доказательство, что именно реклама вызвала покупку.
Для organic 380 новых сентябрьских покупателей дали 665 945,77 ₽ вклада первых заказов. При бюджете 60 000 ₽ это 1 752,49 ₽ вклада и 157,89 ₽ CAC на клиента: положительный остаток 1 594,59 ₽. У paid_ads 328 новых покупателей дали 552 170,48 ₽ первого вклада при бюджете 620 000 ₽: 1 683,45 ₽ против CAC 1 890,24 ₽, дефицит 206,80 ₽ на клиента. Дальнейшие покупки могут закрыть разницу; по одному заказу нельзя назвать канал окончательно убыточным.
Решение о следующем рубле трафика требует предельного, а не среднего CAC. Если дополнительный бюджет приводит более дорогих покупателей, прошлый средний 1 890,24 ₽ не гарантирует ту же цену нового клиента. Поставьте лимит теста, измерьте новых покупателей и обновите кривую их маржи на одинаковом горизонте.
Если вопрос сформулирован как «какой процент выручки можно отдать рекламе», посчитайте ДРР и его предел по марже на том же наборе продаж.
| Канал | Новых покупателей | Модельный бюджет | CAC | Вклад первого заказа / клиент | После CAC / клиент |
|---|---|---|---|---|---|
| organic | 380 | 60 000 ₽ | 157,89 ₽ | 1 752,49 ₽ | +1 594,59 ₽ |
| paid_ads | 328 | 620 000 ₽ | 1 890,24 ₽ | 1 683,45 ₽ | −206,80 ₽ |
| social | 143 | 150 000 ₽ | 1 048,95 ₽ | 1 903,37 ₽ | +854,42 ₽ |
| referral | 130 | 75 000 ₽ | 576,92 ₽ | 1 982,62 ₽ | +1 405,69 ₽ |
| 212 | 70 000 ₽ | 330,19 ₽ | 1 668,02 ₽ | +1 337,83 ₽ |
Почему положительная маржа заказа не спасла месяц
Каждый оплаченный сентябрьский заказ в среднем оставил 1 715,99 ₽ до маркетинга и постоянных расходов. Месячный вклад 2 459 009,05 ₽ покрыл 975 000 ₽ условного маркетинга, но до 3 млн ₽ остальных постоянных расходов не дотянул. Расчётный операционный результат — минус 1 515 990,95 ₽. Эта цифра не является бухгалтерской чистой прибылью: налоги, амортизацию, проценты и дополнительные статьи мы здесь не моделируем.
Если ассортимент и средняя маржа сохранятся, на покрытие 3 975 000 ₽ обязательств потребуются 2 317 заказов вместо 1 433. Это условный порог при постоянных цене, структуре продаж и издержках. Он больше наблюдаемого объёма на 884 заказа, или на 61,69% от факта. Рост заказов может изменить скидки, долю категорий и стоимость рекламы, поэтому точку нужно пересчитывать для плана, а не механически переносить из прошлого месяца.
Если вы планируете гибко покупать рекламу пропорционально каждому следующему заказу, её предельную стоимость следует включить в переменную часть модели. Здесь месячный маркетинг уже утверждён и не меняется с небольшим изменением объёма; поэтому он находится в фиксированном бюджете планового месяца.
Разрез по категориям: средняя маржа скрывает товарный состав
Сентябрьская общая маржинальность 30,48% не описывает ни одну категорию целиком. Электроника даёт крупнейшую сумму после возвратов — около 3,13 млн ₽, но только 20,04% вклада. У одежды 38,77%, у домашней категории 36,73%. Если план продаж сдвинется в электронику, предположение о неизменной средней марже сделает расчёт безубыточности слишком оптимистичным.
Категория внутри заказа не несёт всю доставку отдельно. В таблице ниже общие переменные затраты заказа распределены пропорционально стоимости его товарных строк до скидки. Это способ распределения для анализа, а не наблюдаемая стоимость доставки именно книги или лампы. При смене правила распределения категория может поменять место в рейтинге; итог магазина остаётся тем же.
При разговоре о цене сначала разделите маржу и наценку: оба процента используют одну рублёвую разницу, но разные знаменатели.
| Категория | Сумма после возвратов | Маржинальная прибыль | Маржинальность |
|---|---|---|---|
| electronics | 3 130 331 ₽ | 627 231 ₽ | 20,04% |
| clothing | 1 874 282 ₽ | 726 704 ₽ | 38,77% |
| home | 1 505 148 ₽ | 552 821 ₽ | 36,73% |
| sport | 1 048 048 ₽ | 362 880 ₽ | 34,62% |
| beauty | 436 688 ₽ | 180 587 ₽ | 41,35% |
| books | 72 377 ₽ | 8 786 ₽ | 12,14% |
Процент после возвратов и распределения общих переменных затрат заказа.
Что будет, если скидка, возвраты или CAC изменятся
Одна базовая цифра не помогает согласовать скидку. Мы меняем только один параметр и оставляем число заказов, категории и прочие условия прежними. Дополнительная скидка 10% от уже сниженной суммы net_total уменьшает месячный вклад с 2 459 009,05 до 1 607 334,69 ₽; эквайринг на уменьшившуюся сумму тоже чуть снижается. Это не прогноз спроса: покупатели могут купить больше, но такого эффекта данных нет.
Сценарий «возвраты +5 п. п.» означает примерно 72 дополнительных события на 1 433 заказа при прежнем среднем размере возврата и прежней доле восстановления себестоимости. Вклад падает до 2 253 889,82 ₽. При росте всех сентябрьских маркетинговых расходов на 20% вклад заказов не меняется, но операционный минус расширяется до 1 710 990,95 ₽. Вывод: для каждой акции нужно посчитать, сколько дополнительных заказов она должна принести и изменится ли их состав.
| Изменение одного параметра | Вклад до маркетинга | Операционный результат | Практический вывод |
|---|---|---|---|
| База | 2 459 009 ₽ | −1 515 991 ₽ | Положительный заказ, отрицательный месяц |
| Дополнительная скидка 10% на net_total | 1 607 335 ₽ | −2 367 665 ₽ | Плану нужен измеренный прирост спроса |
| Частота возвратов +5 п. п. | 2 253 890 ₽ | −1 721 110 ₽ | Проверьте категорию и причину возврата |
| CAC +20% через бюджет без новых клиентов | 2 459 009 ₽ | −1 710 991 ₽ | Нужна инкрементальная проверка закупки |
Как перенести расчёт на другую модель бизнеса
У подписки единицей часто становится аккаунт за месяц. Вместо товара и доставки появляются облачные ресурсы, платёжная комиссия и переменная поддержка; за срок жизни аккаунта суммируются месячные вклады. Привлечение проверяется по когорте подписок, а не по одному списанию. Если тариф годовой и деньги поступают заранее, отдельно считайте график денежных поступлений и экономику исполнения обязательств.
У услуги единицей может быть оплаченный проект или час специалиста. Почасовая оплата исполнителя переменна, оклад менеджера и офис — чаще фиксированы на рассматриваемом диапазоне объёма. На маркетплейсе дополнительными строками становятся комиссия площадки, хранение, невыкуп и обратная логистика; ставки нужно брать из актуального договора, а не переносить из чужой статьи.
Переносить из Wave следует порядок расчёта и правила сверки, не его процент закупки и не норму маржинальности. Разные бизнесы по-разному признают доходы и распределяют общие расходы. Запишите, какое решение меняет ещё один юнит и в каком периоде можно увидеть его полный результат. Для товара на Ozon или Wildberries используйте отдельный лист с выкупом и возвратами, не называя ставки Wave тарифами площадки.
Четыре разных моста — магазин, подписка, услуга и маркетплейс — собраны в примерах юнит-экономики. Сравните не только итог, но и событие, после которого возникают переменные затраты.
Как собрать собственную таблицу без двойного счёта
Сохраните исходные таблицы отдельно: заказы, строки заказа, возвраты, расходы на каналы и справочник категорий. Укажите ключи и зерно каждой. Перед денежным соединением агрегируйте order_items и returns до order_id; после соединения проверьте COUNT(*) = COUNT(DISTINCT order_id) и сумму net_total против заказа без соединения.
Затем сделайте отдельные отчёты: экономика каждого заказа; новые клиенты по месяцу первой покупки и каналу; накопленная маржа той же когорты; месячные бюджеты. В каждой таблице оставьте период и дату среза возвратов. Сводить их в одну ячейку «LTV/CAC» до сверки не нужно: вычислить красивый коэффициент легче, чем найти потерянный возврат.
Для управленческого решения рядом с базой покажите два сценария: скидка и стоимость привлечения. Если модель линейная, отметьте диапазон, где она применима. План на 2 317 заказов нельзя автоматически считать продолжением наблюдённых 1 433: склад, курьерская мощность и новая стоимость рекламы могут измениться.
Пять ошибок, после которых бюджет кажется безопасным
Первая — использовать сумму до скидок и считать, что магазин заработал на 1,19 млн ₽ больше. Вторая — привязывать возврат к месяцу события, а не исходному заказу, и сравнивать незрелые когорты. Третья — соединять товарные строки напрямую с orders и размножать цену заказа. Четвёртая — объявлять CAC как рекламный расход на любой заказ, включая повторы. Пятая — назвать положительный вклад заказа прибылью бизнеса и не вычесть фиксированные 3 млн ₽.
Шестая ошибка прячется в себестоимости: ставка по категории взята из допущений, а в отчёте выглядит как настоящая закупочная цена. Решение о цене на таком основании допустимо лишь как тест чувствительности. Перед изменением прайса поставьте рядом фактические закупочные документы и проверьте, как возврат меняет состояние товара.
Седьмая — принимать канал по марже первого заказа и забывать повторные. В сентябре paid_ads недобирает 206,80 ₽ на новом клиенте сразу после первой оплаты, но будущие заказы могут это изменить. Решение «выключить» или «масштабировать» требует одинакового горизонта наблюдения и предельного CAC следующей порции трафика. Если покупка произошла в последний день месяца, у такого клиента ещё не было времени вернуться; сравните когорты после одинакового числа дней, прежде чем объявлять их качество разным.
Частые вопросы и следующий шаг
«Юнит-экономика — это прибыль?» Нет: положительная маржа юнита показывает, что он помогает покрыть общие расходы. Прибыль бизнеса появляется после вычета постоянных расходов и других обязательных статей. «Какой юнит выбрать интернет-магазину?» Заказ для доставки и скидок, новый клиент для CAC, товар для цены и закупки; не пытайтесь ответить на все три вопроса одним знаменателем.
«Нужно ли включать НДС?» Нужно согласовать, какую сумму заказа и какие расходы вы сравниваете; из учебной базы налоговую базу не определить. «Какая маржинальность нормальная?» Универсального процента нет. Ваш минимум зависит от постоянных расходов, объёма, возвратов и желаемого результата. «Когда окупится реклама?» Когда накопленная маржа когорты новых клиентов на том же горизонте дойдёт до CAC их канала.
Если хотите проверить собственные параметры, откройте калькулятор юнит-экономики или скачайте XLSX на его странице. Если хотите воспроизвести расчёт по заказам, начните с группировки и соединений в тренажёре SQL с нуля. Для регулярного бюджета перенесите этот мост в отчёт и ежемесячно сравнивайте факт с допущениями: самые дорогие ошибки обнаруживаются не в формуле, а в забытых статьях расходов.
Материалы по теме

CPO: что это, формула и чем отличается от CPA и CAC
CPO — стоимость одного заказа: маркетинговые расходы, делённые на число заказов. Формула, пример расчёта, отличие от CPA и CAC и безубыточный CPO.

Примеры юнит-экономики: магазин, подписка, услуга и маркетплейс
Четыре расчёта с разными юнитами: заказ Wave, SaaS-аккаунт, бронирование услуги и отправление маркетплейса. Формулы, таблицы затрат и сценарии.

Точка безубыточности: формула, расчёт и график для магазина
Считаем точку безубыточности в заказах и рублях, запас прочности и влияние скидок. График выручки и затрат на учебном магазине с явными допущениями.