Без закупочной стоимости можно узнать, сколько удержал Ozon, но нельзя узнать прибыль товара. Для расчёта нужна цена одной продаваемой единицы и правильный SKU. Если цена менялась, дополнительно нужна дата каждого изменения.

Что считать себестоимостью

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

Запишите, что входит в цену.

«Закупка» и «закупка с упаковкой и доставкой партии» дадут разные результаты. Без пояснения два SKU нельзя честно сравнить.

Приводите цену к продаваемой единице

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

Когда достаточно базовой цены, а когда нужна дата

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

до 30 июня420 ₽
с 1 июля465 ₽
с 15 августа480 ₽

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

SKU и артикул продавца решают разные задачи

SKU Ozon приходит в финансовых и операционных данных. Артикул продавца удобен человеку и обычно стабилен внутри каталога. Для автоматического сопоставления полезны оба идентификатора, но при конфликте сервис не должен угадывать товар — строку нужно вынести на ручную проверку.

Откуда брать себестоимость

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

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

Ручной ввод или таблица

Ручной ввод подходит для нескольких товаров и разового изменения. Таблица удобнее, когда SKU десятки или сотни. Безопасный импорт состоит из двух этапов:

  1. Предпросмотр. Сервис читает CSV, XLS или XLSX, проверяет заголовки, цены и даты, сопоставляет товары и показывает ошибки.
  2. Подтверждение. В базу попадают только строки, отмеченные как готовые; файл и результат проверки не должны измениться между этапами.

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

Формулы перед загрузкой заменяют значениями. Так результат не зависит от версии Excel и от того, пересчиталась ли книга перед сохранением.

Как измерять полноту себестоимости

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

  • Показывайте список SKU без цены.
  • Отдельно считайте затронутый оборот.
  • Не выводите точную маржу при низком покрытии.
  • После исправления пересчитывайте только затронутые периоды.

Не смешивайте управленческий и налоговый учёт

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