Маржинальний прибуток інтернет-магазину: CM1, CM2, CM3 на прикладі
Як порахувати маржинальний прибуток магазину по рівнях CM1/CM2/CM3 — собівартість, доставка, невикуп, комісії LiqPay і monobank, реклама — і як показати водоспад від виручки до прибутку в дашборді.

Виручка — це не гроші, які лишаються бізнесу. Між нею і прибутком — собівартість, доставка, комісії, повернення, реклама. Маржинальний прибуток (contribution margin) показує, скільки кожне замовлення реально «вносить» у покриття постійних витрат і прибуток. Без нього неможливо зрозуміти, які товари, канали й акції вигідні.
Рівні маржинального прибутку
Зручно рахувати в три кроки:
| Рівень | Формула | Що показує |
|---|---|---|
| CM1 | net-виручка − собівартість товару | товарна маржа |
| CM2 | CM1 − доставка − пакування − комісії оплати − витрати на повернення/невикуп | маржа після виконання замовлення |
| CM3 | CM2 − маркетингові витрати | що лишається на постійні витрати і прибуток |
Net-виручка — без ПДВ (якщо ви платник), за вирахуванням знижок і повернень.
Приклад за місяць
Умовні дані магазину з накладеним платежем і онлайн-оплатою.
| Стаття | Сума, ₴ | % від net-виручки |
|---|---|---|
| Net-виручка | 1 000 000 | 100% |
| Собівартість | −520 000 | 52% |
| CM1 | 480 000 | 48% |
| Доставка, оплачена магазином | −45 000 | 4,5% |
| Невикуп (зворотна доставка) | −18 000 | 1,8% |
| Пакування | −9 000 | 0,9% |
| Комісії еквайрингу і накладеного платежу | −16 000 | 1,6% |
| CM2 | 392 000 | 39,2% |
| Реклама (Google, Meta, TikTok) | −210 000 | 21% |
| Комісії маркетплейсів | −25 000 | 2,5% |
| CM3 | 157 000 | 15,7% |
З виручки в мільйон на оренду, зарплати і прибуток лишається 157 тисяч. Тепер видно важелі: −5% витрат на рекламу при тих самих продажах дають більше, ніж +5% виручки.
Звідки брати кожну статтю
| Стаття | Джерело |
|---|---|
| Виручка, знижки, статуси | CRM (KeyCRM, Bitrix24) або платформа (Horoshop, Prom, Shopify) |
| Собівартість | облік / таблиця закупівельних цін за SKU |
| Доставка, невикуп | API служби доставки або CRM |
| Комісії оплат | виписки й API LiqPay, monobank |
| Реклама | Google Ads, Meta, TikTok API |
| Маркетплейси | звіти Prom, Rozetka тощо |
Найчастіше «дірка» — собівартість: її ведуть у таблиці, яка оновлюється нерегулярно. Варто зробити її частиною пайплайна з перевіркою, що кожен проданий SKU має ціну закупівлі (пайплайни).
Маржа на рівні товару і каналу
Найцінніше — рахувати CM2 і CM3 за товарами, категоріями та каналами:
- товар із високою виручкою може мати низький CM2 через габаритну доставку;
- категорія з високим невикупом «з'їдає» маржу непомітно;
- канал з добрим ROAS може давати від'ємний CM3 на товарах з низькою маржею (ROAS і POAS).
SELECT p.category,
SUM(oi.revenue_net) AS revenue,
SUM(oi.revenue_net - oi.cogs) AS cm1,
SUM(oi.revenue_net - oi.cogs - oi.shipping_alloc - oi.fees_alloc - oi.returns_alloc) AS cm2,
SAFE_DIVIDE(SUM(oi.revenue_net - oi.cogs - oi.shipping_alloc - oi.fees_alloc - oi.returns_alloc), SUM(oi.revenue_net)) AS cm2_pct
FROM order_items oi
JOIN products p USING (sku)
WHERE oi.order_month = '2026-09-01'
GROUP BY 1
ORDER BY cm2_pct;
Витрати рівня замовлення (доставка, комісія) розподіляються на товари пропорційно виручці або вазі — оберіть правило і задокументуйте.
Як показувати в дашборді
- Водоспад (waterfall) від net-виручки до CM3 — найзрозуміліший графік для власника;
- CM2 % і CM3 % за тижнями з трендом;
- таблиця категорій з CM1/CM2 %, відсортована від найгірших;
- CM3 за каналами залучення;
- позначка частки SKU без собівартості (якість даних).
Більше про економіку клієнта — у гайді з юніт-економіки.
Типові помилки
- Рахувати «маржу» як виручка − собівартість і зупинятись на CM1.
- Ігнорувати невикуп і зворотну доставку.
- Брати комісії з тарифів, а не з фактичних виписок.
- Не враховувати знижки й бонуси.
- Змішувати виручку з ПДВ і собівартість без ПДВ.
Чекліст
- Net-виручка визначена однаково в усіх звітах
- Собівартість для кожного проданого SKU
- Доставка, невикуп і пакування на рівні замовлення
- Фактичні комісії з виписок платіжних сервісів
- Правило розподілу витрат замовлення на товари
- Водоспад CM1→CM3 на першому екрані фінансів
- Розбивка за категоріями й каналами
Покроково: від P&L до маржинального прибутку
Більшість бізнесів уже мають вхідні дані в обліку, просто згруповані інакше. Щоб побудувати погляд на маржинальний прибуток:
- Випишіть усі статті витрат з P&L за останні 3 місяці.
- Позначте кожну статтю як змінну (росте разом із замовленнями чи виручкою) або постійну (не змінюється, якщо замовлень удвічі більше).
- Для змінних знайдіть драйвер: на замовлення (пакування, комплектація), на одиницю (собівартість), % від виручки (комісії платіжок, маркетплейсів), на відправлення (перевізник).
- Розподіліть змінні витрати на замовлення за цими драйверами, щоб кожне замовлення, товар і канал отримали свою частку.
- Звірте: сума розподілених змінних витрат має збігатися зі статтями P&L з невеликою похибкою.
SQL: маржинальний прибуток за каналами і місяцями
SELECT
DATE_TRUNC(o.order_date, MONTH) AS month,
o.channel,
SUM(o.revenue_net) AS revenue,
SUM(o.cogs) AS cogs,
SUM(o.shipping_cost + o.packaging_cost) AS fulfilment,
SUM(o.payment_fee + o.marketplace_fee) AS fees,
SUM(o.return_cost) AS returns,
SUM(o.revenue_net - o.cogs) AS cm1, -- валова маржа
SUM(o.revenue_net - o.cogs - o.shipping_cost - o.packaging_cost
- o.payment_fee - o.marketplace_fee - o.return_cost) AS cm2,
ANY_VALUE(a.spend) AS ad_spend,
SUM(o.revenue_net - o.cogs - o.shipping_cost - o.packaging_cost
- o.payment_fee - o.marketplace_fee - o.return_cost) - ANY_VALUE(a.spend) AS cm3
FROM clean.orders o
LEFT JOIN (
SELECT DATE_TRUNC(day, MONTH) AS month, channel, SUM(spend) AS spend
FROM clean.ad_spend GROUP BY 1, 2
) a ON a.month = DATE_TRUNC(o.order_date, MONTH) AND a.channel = o.channel
WHERE o.status = 'paid'
GROUP BY 1, 2
ORDER BY 1 DESC, cm3;
Канали з витратами, але без замовлень, у такому з'єднанні зникають. У робочій версії спочатку будуйте сітку «місяць × канал», як описано в гайді з дашбордів.
Приклад: товар, що виглядає чудово до CM2
Ілюстративні місячні числа для двох товарів:
| Товар X (габаритний) | Товар Y (компактний) | |
|---|---|---|
| Виручка | 300 000 | 300 000 |
| Собівартість | 150 000 | 180 000 |
| CM1 (валова маржа) | 150 000 (50%) | 120 000 (40%) |
| Замовлень | 400 | 400 |
| Доставка + пакування на замовлення | 220 | 60 |
| Фулфілмент | 88 000 | 24 000 |
| Комісії (2,5%) | 7 500 | 7 500 |
| Повернення (витрати) | 18 000 | 6 000 |
| CM2 | 36 500 (12%) | 82 500 (28%) |
За валовою маржею X — кращий товар. Після фулфілменту і повернень Y заробляє більш ніж удвічі більше. Рішення, що з цього випливають: закласти доставку в ціну X, встановити для нього мінімальне замовлення або перестати рекламувати його як флагман. Звіт лише з валовою маржею ніколи не почне таких розмов.
Цілі для маржинального прибутку
Універсального «хорошого» CM% немає — він залежить від постійних витрат. Корисна ціль виводиться з вашого власного P&L:
Потрібний CM3 на місяць = постійні витрати + цільовий операційний прибуток
Якщо постійні витрати 400 000 на місяць, а ви хочете 100 000 операційного прибутку, потрібно 500 000 CM3. За ставки CM3 20% це 2,5 млн виручки. Якщо ставка падає до 16%, для тієї самої цілі потрібно вже 3,1 млн. Саме тому щотижнево відстежувати ставку CM3 так само важливо, як і виручку.
Що робити, коли маржа падає
Коли ставка CM3 знижується, пройдіть рівні по черзі: CM1 (ціни, знижки, собівартість, товарний мікс), CM2 (доставка, повернення, комісії), CM3 (реклама). Майже завжди причина видна на одному рівні, і саме там шукати рішення: переглянути знижкову політику, тарифи перевізника чи бюджет каналу з найгіршим POAS.
Кілька закономірностей, які я бачу часто:
- CM1 падає, виручка росте. Акція або зсув продажів до дешевших, менш маржинальних товарів. Перш ніж радіти виручці, перевірте частку продажів зі знижкою і товарний мікс.
- CM2 падає при стабільному CM1. Зміна тарифів перевізника, зростання повернень або більше замовлень трохи вище порогу безкоштовної доставки. Повернення часто надходять із запізненням на кілька тижнів, тож дивіться на тренд, а не лише на поточний місяць.
- CM3 падає при стабільному CM2. Реклама дорожчає швидше, ніж приносить замовлення, — часто після масштабування кампанії за межі її ефективної аудиторії.
Записуйте причину і дію в щотижневому перегляді. За кілька місяців такий журнал стає найкориснішим документом бізнесу про власну економіку.
Часті запитання
Чим маржинальний прибуток відрізняється від валового?
Валовий прибуток — зазвичай виручка мінус собівартість (CM1). Маржинальний враховує всі змінні витрати на замовлення, включно з доставкою, комісіями і рекламою.
Які витрати вважати змінними?
Ті, що ростуть з кожним замовленням: товар, доставка, пакування, комісії, реклама на залучення. Оренда, зарплати офісу й підписки на сервіси — постійні, вони під CM3.
Як часто рахувати CM?
Щотижня для операційних рішень і щомісяця для фінансового звіту. Щоденно — лише CM3 після реклами як оперативний контроль.
Чи можна порахувати CM без складного обліку?
Так, для старту достатньо таблиці собівартості за SKU, вивантаження замовлень і рекламних витрат. Точність зростає, коли додаються фактичні комісії й доставка.


