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