Чистая прибыль по каждому товару на Wildberries и Ozon

Оборот виден в кабинете. Прибыль — нет: она размазана по десятку статей, часть из которых площадка отдаёт кабинетной суммой за месяц, а не по товарам. Отсюда знакомое «продаж много, денег нет».

Мы считаем прибыль по одной формуле — и для магазина целиком, и для каждого артикула, — а у каждого числа подписано, замерено оно, посчитано нами или неизвестно. Последнее важнее первых двух: неизвестное, поданное как ноль, и есть главный источник завышенной прибыли.

Насколько «прибыль» из кабинета отличается от настоящей

Не риторический вопрос — у нас есть замер.

Июль 2026, двенадцать реальных кабинетов. Если сложить прибыль так, как она складывается «в лоб» из построчных отчётов площадок, получается 37,0 млн ₽. По полной формуле, с расходами уровня кабинета — рекламой, хранением, платной приёмкой, прочими удержаниями, налогом, — получается 24,5 млн ₽.

Разница 12,5 млн ₽, и вся она в сторону завышения. Это не ошибка площадки и не наша: просто часть расходов приходит отдельно от продаж, и тот, кто их не подставил, честно видит цифру в полтора раза больше правды.

Формула, по которой считаем

Одна на обе площадки. Не «версия для WB» и «версия для Ozon».

Прибыль = Реализация + Компенсация площадки + Возврат комиссии − Комиссия − Логистика − Эквайринг − Штрафы − Реклама − Хранение − Платная приёмка − Продвижение бренда − Прочие удержания − Себестоимость − Налог

Знаменатель маржинальности — Реализация, то есть ваша цена после вашей собственной скидки, но до скидки площадки. Это не придирка: разделите ту же прибыль на то, что фактически заплатили покупатели, и вместо 18,85 % получится 41,41 % — совсем другая цифра, по которой принимаются совсем другие решения.

Что в этой формуле неочевидно

Возвраты не вычитаются

Кажется, что должны. Но невыкупленное просто не попадает в продажи — в разобранном месяце продано 6 063 штуки при 9 016 заказанных. Вычесть возвраты ещё раз значит посчитать их дважды: на том отчёте это дало бы 2 399 433 ₽ вместо 2 916 951 ₽.

Эквайринг ведёт себя по-разному

У Ozon он приходит внутри фактической комиссии, у WB — отдельной строкой. Молча выбрать одно поведение для обеих площадок нельзя: на одном кабинете WB это 35 206 ₽, и они либо вычтены, либо потеряны.

Сводка складывает рубли, а не строки

Прибыль по нескольким кабинетам считается по каждому отдельно, и только потом суммируется. Смешать входные данные разных площадок в одну формулу — верный способ получить завышенную сводку.

Одна сверка, о которой мы говорим честно

Что именно было проверено

Формулу свели с отчётом площадки за один месяц по реальному кабинету: 2 916 952 ₽ у нас против 2 916 951 ₽ в отчёте, маржинальность 18,85 % против 18,85 %. Расхождение — один рубль, это округление.

Это одна проверка на одном отчёте, а не непрерывная сверка каждый день. Мы намеренно не пишем «сверяем до рубля» как постоянное свойство сервиса — это было бы обещанием, которого никто не выполняет. Что осталось от проверки на постоянной основе: числа того отчёта закреплены тестом, и если формулу сломать, тест падает. И принцип: если наш отчёт расходится с кабинетом — неправы мы, и это чинится, а не объясняется.

Та же формула кормит и дашборд, и лист прибыли, и отчёт о прибылях и убытках — расходиться между экранами им нечем. Построчная расшифровка сходится в итог: это тоже проверяется тестом, а не глазами.

У каждого числа подписано, откуда оно

Потому что «замерено» и «мы прикинули» — разные основания для решения на сотни тысяч рублей.

ЯрлыкЧто значит
от площадкиЧисло пришло из отчёта маркетплейса. С ним идут в кабинет и сверяют там.
наш расчётМы посчитали сами из чисел площадки. Спорить об этом — к нам, и рядом написано, из чего именно посчитано.
замереноПосчитано по вашей же истории этого товара, с порогами достаточности данных.
предположениеВеличину ввёл человек. Видно на экране, чтобы предположение не читалось как факт.
нет данныхНи замера, ни предположения. Сценарий не считается вовсе, вместо числа стоит причина.
оценкаВеличина выведена, а не измерена, — например деньги в разрезе поисковой фразы на Ozon: заказов по фразам площадка не отдаёт, и расход туда разносится.
без себесаСебестоимость не задана и потому не вычтена. Настоящая маржа ниже показанной, и по такому числу нельзя выносить вердикт «участвовать в акции или нет».
предварительноОтчёт площадки за период ещё не закрыт, часть сумм оценена по последним неделям. На одной закрытой неделе такие оценки составляли 432 560 ₽ логистики и 74 868 ₽ эквайринга — молча писать нули значило бы завысить прибыль на треть.

Прочерк — это не ноль

Если площадка не отдала статью, на её месте стоит прочерк, а не ноль. Ноль означал бы «расхода не было», то есть завышенную прибыль, поданную как факт. Рядом с итогом идёт список того, чего не хватило: «Не учтено: реклама, хранение — площадка эти статьи не отдала, прибыль завышена на них».

Список намеренно кричит только о расходах. Недостающий доход — например компенсация площадки — прибыль занижает, а не завышает, и засорять им предупреждение значило бы обесценить само предупреждение.

Как расходы доходят до отдельного товара

Здесь важно не преувеличить: часть статей площадка по товарам не делит вовсе.

Что привязано к товару фактом

Комиссия, логистика, эквайринг, штрафы, себестоимость — приходят построчно вместе с продажей и раскладываются по артикулам без домыслов.

Прочие удержания: факт плюс доля

Заметная часть статьи физически не несёт артикула — кросс-докинг, услуги поставки, подписка, страхование, приёмка. За июль по одному кабинету это 164 580 ₽ из 490 125 ₽.

Поэтому к привязанной части прибавляется доля неразнесённого остатка, пропорциональная доле товара в Реализации. Правило восстановлено по восьми контрольным точкам и проверено на четырёх независимых: расхождение на месяце — 23 ₽, это 0,09 %.

Хранение — целиком долей

По нему привязанной к артикулу части не бывает вовсе, то есть оно разносится пропорцией полностью. Это не «почти факт», и на экране так и сказано словами.

Реклама — отдельный разрез

Расход по каждому артикулу собирается: у Ozon это клики плюс продвижение с оплатой за заказ (за июль по одному кабинету 1 027 166 ₽ при эталонных 1 026 302 ₽), у WB это единственный существующий разрез по артикулам.

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

Сделали — и что изменилось: замер против контрольной группы

Самое слабое место любого сервиса советов: советовать умеют все, доказать результат — почти никто.

«Посмотрите через неделю» — это обещание, а не замер. Проблема в том, что простое «до и после» врёт систематически: если весь кабинет вырос на 11 %, а товар на 12, сравнение «до/после» покажет +12 % и будет формально право, а по существу соврёт.

Поэтому мы вычитаем движение кабинета. Контроль — ваши же товары: похожие по масштабу трафика, за тот же период, с которыми в те же дни не делали того же самого. Норм по рынку у нас нет и не будет — по каждой категории в базе один-три кабинета, и все свои, а покупать внешнюю оценку решено не идти.

Когда вердикта не будет — и это правильный ответ

УсловиеЧто скажем
Срок наблюдения не вышел«Судить будем через N дней: раньше это разница между днями недели, а не результат». У каждого действия свой срок — правка карточки зреет дольше, чем ставка.
Мало наблюдений«На таких числах разница между „сработало“ и „не сработало“ — это один-два заказа».
Не набралась контрольная группа«Без контрольной группы рост товара и рост всего кабинета выглядят одинаково».
Отрыв в пределах обычного разброса«Товары этого кабинета за такой срок расходятся на столько и без всяких действий. Записывать это в результат нельзя».
В том же окне менялось несколько вещей«Разделить их вклад мы не можем — вердикта не будет».

А когда вердикт всё-таки есть, к нему намертво пришита оговорка: «Это не доказательство причины: мы видим, что товар повёл себя не так, как остальной кабинет, и что это совпало по времени с действием. Совпадение по времени причиной не является». Ширину «обычного разброса» задаём не мы, а сам кабинет — разброс изменений контрольных товаров за тот же период. Это и есть определение слова «обычный».

Упущенные продажи в рублях

Дни, когда товара не было на складе, умноженные на скорость продаж в дни с товаром и на прибыль с единицы. Ни кабинет площадки, ни один сервис аналитики такой цифры не даёт — потому что это модель, а не выгрузка, и мы называем её этим словом.

Четыре правила, без которых счёт стал бы враньём

День без остатка — не то же самое, что день без наблюдения. Если сбор остатков в этот день не отработал, снимка нет ровно так же, как если бы товар кончился, а выводы противоположные. Ненаблюдённые дни в счёт не идут, и об этом сказано в той же фразе: «ещё N дней окна сбор не отработал — итог занижен».

Скорость продаж — без отменённых заказов. По отменённому заказу денег не было, упущенной прибылью он быть не может.

Считаем карточку целиком, а не отдельный размер. Покупатель, не нашедший размер M, чаще берёт L, а не уходит. Цена этой ошибки измерена: по одному кабинету поразмерный счёт дал 4,57 млн ₽ за месяц, а по группам размеров — 1,05 млн ₽. Вчетверо, и в сторону завышения.

Ничего не достраивается. Нет прибыли с единицы — товар не считается и попадает в список «посчитать нечем» с причиной. Средняя по кабинету сюда не подставляется никогда.

Отдельная оговорка про само число. Прибыль с единицы здесь берётся из построчных денег продажи — то есть без расходов уровня кабинета, которые к конкретному дню отсутствия товара не привязать. Это не та же величина, что чистая прибыль магазина по полной формуле, и выдавать одну за другую мы не будем.

Утренний список: что просело и какая вероятная причина

Каждое утро — короткий список изменений по товарам за неделю: где просело, где выросло и какая вероятная причина. Шестьдесят два сценария: кончился остаток, подняли цену, площадка сняла свою скидку, встала реклама, вышли из акции, просела воронка, выросла цена заказа в рекламе, ушёл выкуп.

Именно «вероятная». Это сопоставление ваших же чисел между собой, то есть корреляция, а не доказательство — и на самом экране написано так же. Когда ничего не сходится, вердикт говорит «вероятен внешний фактор», а не хватается за правдоподобную историю: выдуманная причина хуже отсутствующей, потому что делает недостоверными все настоящие на той же странице.

Исключение ровно одно: когда площадка своими словами сообщила, что карточка заблокирована. Это факт, и смягчать его до «вероятно» было бы враньём в другую сторону.

Перед тем как объяснять падение, мы проверяем, настоящее ли оно. Половина разобранных «падений» оказалась артефактом учёта: сравнение с акционным пиком, один крупный заказ в прошлом окне, меньше дней в продаже, правленая задним числом себестоимость. Отсеянное не прячется молча — оно едет наверх списком с числом строк и причиной словами.

Границы, о которых лучше знать заранее

Честно, чтобы не было сюрприза

Две площадки, не три. Wildberries и Ozon. Яндекс Маркет в коде есть, но ни один его метод не проверен живым кабинетом, и все признаки площадки у нас выключены — чтобы экран показывал честное «нет данных», а не уверенный ноль. Пока это так, мы его не заявляем.

Внешней аналитики рынка нет. Ни ниш, ни объёмов чужих продаж, ни выручки конкурентов. Мы про ваш кабинет и ваши деньги.

Рейтинга и тональности отзывов в разборе причин нет. Источника для них в проекте не существует, поэтому сценарий «рейтинг упал» намеренно отсутствует, а не собран на глазок из числа отзывов.

Часть данных приходит с задержкой. Пока отчёт площадки за период не закрыт, суммы помечены как предварительные — с прямым указанием, что именно оценено.

Частые вопросы

Чем это отличается от отчёта в кабинете площадки?

Кабинет показывает построчные удержания по продажам. Расходы, которые приходят отдельно от продаж — реклама, хранение, платная приёмка, прочие удержания, налог, — в этих строках не участвуют. На двенадцати кабинетах за июль 2026 разница между «в лоб» и полной формулой составила 12,5 млн ₽ в сторону завышения.

Правда ли, что вы сверяете всё до рубля?

Нет, и мы намеренно так не пишем. Была одна сверка формулы с отчётом площадки за месяц по реальному кабинету: 2 916 952 ₽ у нас против 2 916 951 ₽ в отчёте, расхождение в один рубль — округление. Числа того отчёта закреплены тестом, и если формулу сломать, тест упадёт. Но ежедневной сверки с кабинетом это не заменяет и таковой не является.

Реклама раскладывается по каждому товару?

Расход по артикулам собирается отдельным разрезом: у Ozon это клики плюс продвижение с оплатой за заказ, у WB это единственный доступный разрез. Но в прибыли магазина целиком реклама берётся кабинетной суммой — раскладывать по товарам то, что площадка по товарам не привязала, значило бы выдумать атрибуцию.

Что будет, если я не задам себестоимость?

Число всё равно посчитается, но будет помечено ярлыком «без себеса» с пояснением, что настоящая маржа ниже показанной. По такому числу мы не выносим вердикт «участвовать в акции или нет» — это специально запрещено.

Как вы доказываете, что ваш совет сработал?

Не доказываем — замеряем. Изменение товара сравнивается с изменением контрольной группы ваших же похожих товаров за тот же период; отрыв меньше обычного разброса кабинета называется шумом. При любом положительном выводе стоит оговорка, что совпадение по времени причиной не является.

Можно посчитать бесплатно, без подключения кабинета?

Да — по числам, которые вы введёте руками: калькулятор прибыли Wildberries считает ту же экономику одной штуки, включая точку безубыточности и цену под нужную маржу. Расчёт по вашим реальным продажам требует подключённого кабинета: он идёт по вашим данным и нашим формулам.

Начните с одного товара

Посчитайте юнит-экономику руками — бесплатно и без регистрации. Если сойдётся с тем, что вы думали, это хорошая новость. Если нет — вы только что нашли, где течёт.

Для работы достаточно ключа с правами только на чтение.

Читайте дальше: репрайсер для WB и Ozon · биддер для Ozon