Все материалы
Бизнесгайдстарт

Юнит-экономика: что это и как посчитать на примере магазина

Пошаговый расчёт юнит-экономики: от заказа после скидок и возвратов до маржи, CAC и точки безубыточности. Таблица и сценарии на учебном магазине.

КейсПрактика28 сентября 2026 г.19 мин

Собственник магазина видит рост заказов и хочет удвоить рекламный бюджет. Но средний чек не отвечает на вопрос, сколько остаётся после скидки, возврата, закупки и доставки. Юнит-экономика сводит эти деньги к одной единице — заказу или клиенту — и показывает, при каком объёме решение приносит прибыль. Посчитаем её на вымышленном учебном магазине 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_total9 254 468 ₽
После скидокΣ net_total8 672 855 ₽
Известные возвратыΣ refund_rub по сентябрьским заказам−605 982 ₽
После возвратов8 672 855 − 605 9828 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, но в рабочем файле держите также сырой список заказов и сверку с ним.

Управленческий расчёт Wave за сентябрь 2024, округление до копейки
СтрокаФормула для периодаВсегоНа заказ
Оплаченные заказыCOUNT(DISTINCT order_id)1 4331
Сумма до скидокΣ gross_total9 254 468 ₽6 458,11 ₽
СкидкиΣ gross_total − Σ net_total−581 613 ₽−405,87 ₽
Возвраты−Σ refund_rub−605 982 ₽−422,88 ₽
Доход после возвратов8 672 855 − 605 9828 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 / клиент
organic38060 000 ₽157,89 ₽1 752,49 ₽+1 594,59 ₽
paid_ads328620 000 ₽1 890,24 ₽1 683,45 ₽−206,80 ₽
social143150 000 ₽1 048,95 ₽1 903,37 ₽+854,42 ₽
referral13075 000 ₽576,92 ₽1 982,62 ₽+1 405,69 ₽
email21270 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%. Если план продаж сдвинется в электронику, предположение о неизменной средней марже сделает расчёт безубыточности слишком оптимистичным.

Категория внутри заказа не несёт всю доставку отдельно. В таблице ниже общие переменные затраты заказа распределены пропорционально стоимости его товарных строк до скидки. Это способ распределения для анализа, а не наблюдаемая стоимость доставки именно книги или лампы. При смене правила распределения категория может поменять место в рейтинге; итог магазина остаётся тем же.

При разговоре о цене сначала разделите маржу и наценку: оба процента используют одну рублёвую разницу, но разные знаменатели.

Сегменты сентября после возвратов и распределённых расходов
КатегорияСумма после возвратовМаржинальная прибыльМаржинальность
electronics3 130 331 ₽627 231 ₽20,04%
clothing1 874 282 ₽726 704 ₽38,77%
home1 505 148 ₽552 821 ₽36,73%
sport1 048 048 ₽362 880 ₽34,62%
beauty436 688 ₽180 587 ₽41,35%
books72 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_total1 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 с нуля. Для регулярного бюджета перенесите этот мост в отчёт и ежемесячно сравнивайте факт с допущениями: самые дорогие ошибки обнаруживаются не в формуле, а в забытых статьях расходов.

Продолжить чтение
Вся библиотека