За 90 дней выручка по моим магазинам составила 41 268 724 ₽, а после расходов, учтённых в расчёте, с каждых 100 ₽ осталось 11,4 ₽. По общей сумме видно, что магазинный оборот оставляет деньги, но выбрать по ней товар для следующей закупки невозможно. Внутри этой суммы могут соседствовать позиции с хорошим заработком и позиции, которым продажи обходятся дороже полученной выручки. Сам итог этого не показывает. Поэтому, когда я решаю, что закупать и продвигать дальше, мне нужен расчёт по каждому товару, а не средняя температура по всем заказам.
Начинаю я обычно со статистики продаж: какой товар продавался, сколько денег по нему начислено, какие заказы завершились возвратом. Но строка с большой выручкой для меня ещё не кандидат на пополнение склада. Рядом должны появиться закупочная стоимость проданных единиц, удержания площадки, расходы на доставку и реклама, которая помогала эти продажи получать. Иначе я сравниваю товары по деньгам, которые пришли в расчёт, а не по деньгам, которые остались у меня. Именно на этом переходе от продаж к остатку и возникают самые неприятные ошибки.
Почему прибыль магазина не отвечает на вопрос о прибыли товара
Общий результат складывается из результатов отдельных товаров и расходов, которые относятся ко всему бизнесу. Сильная позиция может перекрывать убыток другой, и в итоговой строке это выглядит вполне благополучно. Если я вижу только эту строку, то могу продолжать закупать убыточный товар и радоваться росту оборота. При этом каждая дополнительная продажа будет уменьшать заработок соседних позиций. Чтобы проверить такую ситуацию, я раскладываю общую сумму на товары и отдельно показываю расходы, для которых пока нет обоснованного способа распределения.
В моих данных из каждых 100 ₽ выручки комиссия Ozon забрала 40,5 ₽, логистика и прочие сборы — 10,1 ₽, реклама — 13,1 ₽. Себестоимость товара составила 21,5 ₽, налог — 3,5 ₽, остаток — 11,4 ₽. Это фактическая структура по моим магазинам за указанный период, а не тарифная таблица Ozon и не обещание результата для другого продавца. Значения округлены, поэтому при сложении возможна небольшая разница. Ещё одно ограничение: эти данные описывают только перечисленные статьи, и без проверки остальных расходов бизнеса я не стану называть остаток окончательной чистой прибылью.
Особенно легко ошибиться с рекламой: взять общую долю 13,1 ₽ и мысленно назначить её каждому товару на каждые 100 ₽ продаж. Тогда позиция, которую почти не рекламировали, получит чужие расходы, а товар с дорогим продвижением окажется лучше, чем был на самом деле. То же самое происходит с усреднённой логистикой, когда товары отправляются в разных условиях. По переданному агрегату я не могу сказать, какие конкретно позиции у меня убыточны: для этого нужны строки начислений и заказов. Зато он показывает, какие существенные расходы нельзя потерять при переходе к товарному расчёту.
Куда уходит 100 ₽ выручки
Магазины автора, 90 дней
Как разложить рекламу, логистику и налог по товарам
Моё основное правило простое: сначала ищу прямую связь расхода с товаром, а распределение использую только там, где такой связи нет. Для этого соединяю данные о продажах, отправлениях, начислениях и рекламных кампаниях через доступные идентификаторы. Названия товара недостаточно: оно может меняться, а похожие позиции легко перепутать. Поэтому в своей таблице держу устойчивый идентификатор товара и связь с конкретной операцией. Если магазинных кабинетов несколько, добавляю признак магазина, чтобы одинаковые артикулы случайно не склеились.
Рекламу я сначала разбираю по кампаниям, а внутри кампании использую детализацию расхода по товарам, если она доступна. Когда кампания относится к конкретной позиции, переносить её затраты на весь ассортимент незачем. Если в кампании несколько товаров, а прямой детализации нет, выбираю явную базу распределения — например, выручку, отнесённую рекламным отчётом к этим товарам. Тогда расход товара равен расходу кампании, умноженному на долю его рекламной выручки в выручке кампании. Это уже оценка, зависящая от атрибуции отчёта, поэтому я отмечаю её отдельно и не раздаю рекламный бюджет всем продажам магазина. Кампанию без атрибутированных продаж тоже нельзя считать бесплатной: её расход остаётся у продвигаемого товара или в отдельной строке нераспределённых затрат.
Логистику я привязываю к отправлениям и операциям по ним, включая расходы, связанные с возвратами, если они были начислены. Когда отправление содержит конкретный товар и начисление однозначно относится к нему, распределять ничего не нужно. Если внутри несколько позиций, сначала ищу доступную детализацию, а при её отсутствии выбираю базу, связанную с природой расхода: количество единиц, вес или объём, в зависимости от условий начисления. Деление пропорционально цене товара здесь может исказить результат, потому что дорогой товар не обязательно дороже перевозить. Прочие сборы я разбираю отдельно, даже если в общей сводке они объединены с логистикой. Без детализации начисления точного товарного результата у меня не будет, и это лучше обозначить, чем спрятать за красивой суммой.
Налог для управленческого расчёта по товарам я могу распределить пропорционально выручке: беру рассчитанный налог за период и умножаю его на долю выручки позиции в сопоставимой общей выручке. При этом сам налог сначала должен быть определён по применяемому режиму и корректной налоговой базе. Такой способ распределения не означает, что налог юридически рассчитывается отдельно с каждого артикула именно так. Показатель 3,5 ₽ из моих данных нельзя использовать как готовую ставку для чужого магазина. Если налоговая база зависит от расходов или включает другие операции, связь с выручкой становится управленческим допущением. Я сохраняю это пояснение рядом с расчётом, чтобы потом не принять условное распределение за налоговую декларацию.
Как посчитать прибыль с товара на Ozon по шагам
Первым шагом я задаю период и собираю выручку по каждому товару в единой логике учёта. Для товарной прибыльности мне нужен результат продаж с учётом возвратов и корректировок, а не сумма денег, перечисленная на расчётный счёт. Продажи, себестоимость и связанные начисления должны относиться к сопоставимому набору операций. Если часть расходов приходит позже, я помечаю расчёт как предварительный и затем обновляю его. В рабочей таблице оставляю отдельные колонки для проданных единиц, возвращённых единиц и денежного результата продаж, чтобы не смешивать движение товара с движением денег.
Следующим шагом из выручки товара вычитаю себестоимость именно проданных единиц, а не стоимость всей закупленной партии. Для разных поступлений закупочная стоимость может различаться, поэтому заранее выбираю последовательный способ её учёта и не меняю его под желаемый результат. В себестоимость включаю относящиеся к товару затраты на приобретение и подготовку, но проверяю, не стоят ли они уже отдельной строкой расходов. Состав этих затрат я подробнее объясняю в статье как посчитать себестоимость товара без самообмана. Возвращённую пригодную единицу обрабатываю как возврат товара в учёте, а связанные потери и услуги отражаю по факту, вместо того чтобы автоматически считать её окончательно проданной.
После себестоимости вычитаю комиссию, затем логистику и остальные начисления, которые удалось связать с продажами позиции. Каждую операцию беру со знаком из своей нормализованной таблицы, чтобы возврат удержания не превратился в дополнительный расход. Затем вычитаю рекламу, отнесённую к товару напрямую или распределённую внутри кампании по выбранному правилу. После этого вычитаю долю налога, рассчитанную на предыдущем этапе. Получается остаток товара после перечисленных затрат: выручка минус себестоимость, комиссия, логистика, прочие начисления, реклама и налог. Эту цепочку можно повторить для любого артикула, не подставляя вместо фактических расходов средние доли магазина.
Последним шагом я отдельно учитываю общие расходы бизнеса, если они ещё не вошли в расчёт: например, оплату сервисов или административной работы. Для них выбираю понятную базу распределения, но сохраняю результат товара до этой операции и после неё. Иначе нельзя будет понять, позиция сама теряет деньги или просто получила заметную долю общего бюджета. Если все расходы разложены, сумма результатов товаров должна сходиться с результатом магазина в той же логике учёта. Если часть затрат осталась нераспределённой, я показываю её отдельно и сверяю товарный итог за вычетом этой суммы. Расхождение проверяю по строкам, а не закрываю произвольной поправкой.
Не вычитайте комиссию и логистику повторно из выплаты, в которой эти удержания уже учтены. Для расчёта от выручки нужно вычитать расходы, а для расчёта от выплаты сначала восстановить, какие операции в неё вошли. Смешение этих подходов создаёт убыток на бумаге даже там, где его не было. Я проверяю смысл исходной суммы до любых формул, потому что правильная арифметика не исправляет неверную базу.
Ошибка, из-за которой прибыль по товарам Ozon становится выдуманной
Самая коварная ошибка для меня — равномерно размазать все расходы по выручке товаров. Таблица после этого сходится с общим итогом магазина, и возникает ощущение, что расчёт проверен. Но сходимость подтверждает только сохранение общей суммы, а не правильность её распределения. Представим позицию, которую активно продвигали, и другую, которая продавалась без этой кампании. Если разделить рекламные расходы между ними по всей магазинной выручке, первая получит необоснованное облегчение, а вторая оплатит чужое продвижение.
В деньгах ошибка равна той части расхода, которую перенесли с настоящего получателя на чужой товар. У рекламируемой позиции прибыль будет завышена на эту сумму, у другой — занижена, хотя итог магазина останется прежним. Дальше ошибка попадает в закупку: я могу увеличить запас товара, который выглядит прибыльным только благодаря соседу. Одновременно есть риск сократить товар, который действительно приносит остаток, но получил чужие удержания. Получается, что неверное распределение меняет не прошлый итог, а мои будущие решения и расходы на них.
Есть и обратная ловушка: объявить товар убыточным только потому, что после распределения административных расходов его результат стал отрицательным. Если до этого распределения позиция покрывала свои затраты и оставляла деньги на общий бюджет, её удаление не обязательно улучшит положение магазина. Оплата сервиса или работа администратора могут сохраниться, а вклад товара исчезнет. Поэтому рядом с полной прибыльностью я смотрю, какие расходы действительно уйдут вместе с позицией. Этот вопрос полезнее, чем попытка любой ценой добиться положительного результата у каждого артикула после условного распределения.
Что делать с товарами, которые тянут магазин вниз
Когда расчёт собран, я сортирую товары по денежному результату и начинаю проверку с отрицательных значений. Статистика продаж Ozon по товарам нужна здесь как исходный слой, а не как готовый ответ о заработке. Сначала проверяю пропущенную себестоимость, возвраты, повторные начисления и ошибки распределения рекламы. Затем смотрю на сумму потерь и на остаток с проданной единицы, используя сопоставимые данные о продажах и возвратах. Отрицательная сумма при большом обороте требует внимания, но без проверки строк она ещё не доказывает, что сам товар нужно убирать.
Если позиция уходит в минус после рекламы, я разбираю кампанию и сравниваю результат до рекламного расхода и после него. Положительный остаток до продвижения показывает, что проблема может находиться в стоимости привлечения продаж, а не в закупочной цене товара. При этом я не считаю, что после отключения кампании весь прежний объём продаж сохранится: такого знания у меня нет. Если минус появляется ещё до рекламы, проверяю цену, закупку, упаковку и начисления по отправлениям. Для сравнения позиций с разной выручкой дополнительно смотрю относительные показатели, а различие между ними разбираю в статье о рентабельности товара и наценке.
После проверки я выбираю действие по причине потерь, а не по цвету ячейки: пересмотреть продвижение, изменить условия закупки, проверить цену или остановить пополнение. Если товар остаётся отрицательным после собственных затрат и понятного способа исправить это нет, продолжать закупку ради оборота я не вижу смысла. При этом распродажу уже купленного остатка считаю отдельным решением, потому что новая закупка и возврат денег из существующего запаса — разные задачи. Для такой работы мне и понадобился SellOps, который я сделал сам, когда не нашёл готового сервиса, расчётам которого мог бы доверять. О том, как устроен мой подход к работе с данными, можно прочитать в описании SellOps, но сами правила распределения я советую понимать независимо от инструмента.
Завтра я бы начал с выгрузки продаж и начислений за выбранный период, добавил себестоимость и связал рекламные расходы с кампаниями и товарами. Затем собрал бы таблицу, где рядом видны выручка позиции, прямые расходы, остаток до общих затрат и результат после их распределения. Отдельно оставил бы список начислений, которые пока не удалось привязать, чтобы они не исчезли из прибыли от продаж на Ozon. После сверки с итогом магазина выбрал бы товар с отрицательным результатом и проверил его операции вручную. Цель этой проверки — получить конкретное решение о цене, рекламе или следующей закупке, а не просто ещё один отчёт с общей суммой заработка.
Хотите увидеть эти цифры по своим товарам?
Попробовать SellOps бесплатно