Аналитика, отчёт о реализации и API дают разные цифры: где правда и что с чем сверять
Разбираем, почему выручка в аналитике Ozon Seller, в отчёте о реализации и в ответе API не совпадает: заказ против выкупа, дата заказа против даты доставки, отмены и возвраты в разных разрезах. С порядком сверки за 40 минут и примером на реальных числах.
Открываете аналитику — за март 2,42 млн. Скачиваете отчёт о реализации — 1,86 млн. Дёргаете API, чтобы собрать свою таблицу, — третье число, не равное ни первому, ни второму. Первая мысль: Ozon недоплатил. В девяти случаях из десяти недоплаты нет, а есть три источника, которые отвечают на три разных вопроса и считают по трём разным календарям. Ниже — откуда берётся разрыв, какие цифры вообще можно сравнивать между собой, и как за полчаса разложить расхождение на слагаемые, чтобы понять, осталось ли после этого что-то подозрительное.
Почему у одного магазина три разных выручки
Аналитика в кабинете (раздел «Аналитика» → графики и отчёты) построена вокруг заказа. Метрика «Заказано на сумму» фиксирует момент, когда покупатель нажал кнопку: товар ещё едет, может быть отменён, может не быть выкуплен — в цифре он уже есть. Это витрина спроса. По ней нормально управлять ставками, ассортиментом и позицией в выдаче, но нельзя платить налоги.
Отчёт о реализации товара (Финансы → Документы; в части кабинетов этот раздел называется «Отчёты» — посмотрите, как у вас) построен вокруг перехода права собственности. Туда попадает только то, что покупатель получил, — плюс минусовые строки по тому, что он вернул. Это бухгалтерский документ, на его основании считается ваша выручка и НДС у тех, кто на ОСНО. Продажи, которых не было физически, в нём не появляются по определению.
Детализация начислений (Финансы → Начисления) — третья сущность, построенная вокруг денег. Там каждая операция стоит на дате своего начисления: доставка сегодня, обратная логистика по невыкупу — через несколько недель, реклама — ежедневно, хранение — по своему графику. Именно из этих строк складывается сумма выплаты, и она не равна ни «заказано», ни «реализовано».
Вывод, который экономит много нервов: сравнивать между собой можно только «доставлено» из аналитики и «продажи» из отчёта о реализации. Всё остальное — сравнение спроса с фактом отгрузки, и оно обязано расходиться.
Заказ, доставка, начисление: три календаря
Второй источник разрыва — дата, по которой строка попадает в период. Их как минимум три, и они разъезжаются на дни и недели.
Дата заказа. По ней живёт аналитика по умолчанию. Заказ 31 марта — это март, чем бы дело ни кончилось.
Дата доставки (получения). По ней живёт отчёт о реализации. Тот же заказ от 31 марта, доставленный 4 апреля, окажется в апрельском отчёте. На стыке месяцев так «переезжает» примерно столько заказов, сколько вы делаете за срок доставки: при среднем сроке 3–5 дней это 10–15 % месяца.
Дата начисления. По ней живут транзакции и выплата. Услуга может встать на дату, отличную и от заказа, и от доставки: обратная логистика по невыкупу начисляется, когда товар доехал обратно, а это 2–4 недели после заказа.
Отсюда простое правило: любое сравнение делайте на длинном окне и не по календарному месяцу, а со сдвигом. Возьмите заказы с 1 по 25 число и сверяйте их с реализацией за месяц плюс первую неделю следующего — хвост перестанет мешать.
Отмены, невыкупы и возвраты: кто где виден
Три события съедают разницу между «заказано» и «продано», и каждое ведёт себя по-своему.
Отмена до отгрузки. Покупатель передумал, или вы не смогли собрать заказ. В аналитике такой заказ обычно исчезает задним числом — поэтому цифра за вчерашний день сегодня может стать меньше. В отчёте о реализации его не было никогда. Если вы выгружали аналитику утром, а сверяете вечером, вы сверяете две разные выгрузки.
Невыкуп. Товар доехал до пункта выдачи, покупатель не забрал. В аналитике заказ остаётся в «Заказано», но не попадает в «Доставлено». В отчёт о реализации не попадает вообще. А вот в транзакциях появляется: за логистику туда и обратно вы платите. Это худший вид расхождения — расход есть, выручки нет.
Возврат после получения. Товар был доставлен, попал в отчёт как продажа, через две недели вернулся. Возврат приходит минусовой строкой — и, как правило, в тот период, когда он оформлен. Поэтому в отчёте за май можно увидеть минус по товару, который в мае вообще не продавался: это возвращается апрель. У сезонных категорий после распродажи так набегает минус в 5–8 % месячной выручки.
Что с чем сверять
| Источник | Ключевая дата | Что считает | Для чего годится | Корректная пара для сверки |
|---|---|---|---|---|
| Аналитика, «Заказано» | Дата заказа | Спрос, включая будущие отмены | Реклама, позиции, ассортимент | Ни с чем: это не выручка |
| Аналитика, «Доставлено» | Дата доставки | Фактически полученные единицы | Оценка выкупа, план поставок | Продажи в отчёте о реализации |
| Отчёт о реализации | Дата доставки и возврата | Реализация и возвраты минусом | Учёт, налог, сверка с Ozon | «Доставлено» в аналитике |
| Детализация начислений | Дата начисления | Все удержания и услуги | Проверка комиссии и логистики | Сумма выплаты, акт сверки |
| API аналитики | Дата заказа, чаще всего UTC | То же, что аналитика, с лагом | Свои дашборды | Выгрузка из кабинета за те же дни |
| API финансов | Дата доставки и операции | Реализация и транзакции | Автоматический учёт | Отчёт о реализации за тот же месяц |
Разбор: как 2,42 млн в аналитике стали 1,86 млн в отчёте
Числа из нашего мартовского закрытия. Аналитика: заказано 1 640 штук на 2 418 000 ₽, то есть 1 474 ₽ за единицу. Отчёт о реализации: 1 344 штуки на 1 862 000 ₽, средняя цена реализации — 1 385 ₽. Расхождение 556 000 ₽, то есть 23 %. Раскладываем.
По штукам разница 296 — и она собирается из пяти слагаемых: четыре уменьшают отчёт относительно аналитики, одно увеличивает. Отмены до передачи в доставку — 118 штук: в отчёте их нет и не будет. Невыкупы — 96 штук: доехали до ПВЗ, никто не забрал. Заказы с 28 по 31 марта, доставленные в апреле, — 152 штуки: они уйдут в апрельский отчёт.
Дальше хвосты в обратную сторону. Заказы конца февраля, доставленные в марте, — плюс 84 штуки: они есть в мартовском отчёте, но сидят в февральской аналитике. И 14 минусовых строк — возвраты февральских покупок, оформленные в марте: они уменьшают март, поэтому в разрыв идут со знаком «плюс». Итого 118 + 96 + 152 − 84 + 14 = 296. Сходится до штуки, и это главный признак, что расхождение методическое.
С деньгами точность ниже, считаем по средней: 296 штук по 1 474 ₽ — это 436 000 ₽. Остаётся 120 000 ₽ необъяснённых, около 89 ₽ на каждую проданную единицу. Это разница между ценой, которую видит покупатель и показывает аналитика, и ценой реализации в отчёте: баллы и скидки, часть которых компенсирует площадка, отражаются в двух документах по-разному. Механика здесь несколько раз менялась — как именно считаются ваши акции, проверьте в базе знаний Ozon Seller. Но сам факт разрыва в 5–7 % по средней цене считайте нормой, а не ошибкой. Точнее разложить можно только через SKU-мэтчинг: средняя по магазину прячет перекос ассортимента.
Что мы из этого вынесли: сверять надо по SKU, а не по магазину целиком. На уровне магазина все ошибки смешиваются в одну кучу, и 23 % выглядят как «Ozon что-то удержал». На уровне SKU сразу видно, что 60 % невыкупов дал один товар — и это уже задача про карточку и размерную сетку, а не про бухгалтерию.
Порядок сверки за 40 минут
Делаем раз в месяц, после того как отчёт о реализации стал доступен (обычно в первых числах следующего месяца — точную дату смотрите в разделе «Документы»).
Первый раз это займёт не сорок минут, а полдня: придётся понять, где в ваших выгрузках какое поле. Дальше — механика, и её имеет смысл автоматизировать. Мы в Starbox для этого и считаем прибыль по товарам из нескольких источников сразу, чтобы разрыв между заказом и реализацией не приходилось каждый месяц искать руками.
Почему API отдаёт не то, что кабинет
Отдельная история для тех, кто собирает свой дашборд: к методическим расхождениям добавляются четыре технических.
Часовой пояс. Кабинет рисует графики по Москве, а даты в ответах API приходят в UTC — проверьте это на своей выгрузке, сравнив одно конкретное отправление. Три часа съезжают по границе суток: заказы с 21:00 до 24:00 по Москве уедут в предыдущий день. На месяце это почти не видно, на дневном графике — сразу, и именно отсюда берутся «странные провалы по понедельникам».
Лаг и дозаполнение. Метрики аналитики за вчера не финальные: они уточняются ещё несколько суток по мере доставок и отмен. Если ваш скрипт забирает данные за вчера и больше к ним не возвращается, история навсегда останется заниженной. Забирайте скользящее окно в 7–14 дней и перезаписывайте его целиком.
Разная гранулярность. Аналитический метод (/v1/analytics/data) ограничен по длине периода и набору измерений, реализация отдаётся отдельным финансовым методом и агрегирована крупнее — как правило, помесячно, — а транзакции лежат в третьем методе со своими датами начислений. Версии и лимиты этих ручек Ozon периодически обновляет, точные ограничения смотрите в документации API. Смешивать дневную аналитику с месячной реализацией в одной таблице без явной пометки периода — верный способ получить четвёртое неверное число.
Лимиты. При частых запросах прилетает 429, и часть данных просто не доезжает. Дыра ровно на один день в вашей таблице — это почти всегда не методика, а логи.
Когда расхождение — уже не методика, а повод писать в поддержку
Штатный разрыв раскладывается почти целиком: необъяснённый остаток после разбора обычно укладывается в 1–2 % выручки. Ненормально выглядит другое: в отчёте о реализации единиц больше, чем было заказано за сопоставимый период; конкретное отправление доставлено, но его нет в отчёте ни за один месяц; комиссия по строке заметно отличается от тарифа вашей категории, и это не объясняется участием в акции или сменой схемы; одна и та же выгрузка за уже закрытый месяц при повторном скачивании даёт другие числа.
Идите в поддержку не с формулировкой «у меня не сходится выручка», а с конкретикой: номер отправления, дата доставки, ожидаемая сумма, фактическая сумма, скриншот строки отчёта. Один разобранный кейс по отправлению решается за пару дней, «проверьте мне март» — не решается никогда.
У претензий по расчётам есть свой срок: бесконечно назад пересматривать периоды никто не будет, актуальное окно проверьте в базе знаний Ozon Seller. Поэтому сверка раз в месяц дешевле, чем разбор за полгода. Акт сверки взаиморасчётов остаётся финальным аргументом: он показывает сальдо, и если сальдо сходится, спор идёт про методику, а не про деньги.
FAQ
Почему в аналитике Ozon сумма больше, чем в отчёте о реализации?
Потому что аналитика считает заказы, а отчёт — только доставленные товары. Разница складывается из отмен, невыкупов, возвратов и заказов, которые доставились уже в следующем месяце. Для категории с выкупом 80 % разрыв в 20–25 % — штатная картина.
Какая цифра считается правильной для налоговой?
Отчёт о реализации товара и начисления по нему. Аналитика — управленческий инструмент, первичным документом она не является и выручку не подтверждает. На УСН доход считается кассовым методом, то есть по дате поступления денег, и в доход идёт полная сумма продажи, а не то, что осталось на счёте после удержанной комиссии — эту разницу проще один раз проговорить с бухгалтером, чем потом пересдавать декларацию.
Почему цифры за вчера меняются на следующий день?
Данные аналитики дозаполняются несколько суток: отменённые заказы убираются, доставки проставляются задним числом. Поэтому фиксировать день в своей таблице имеет смысл не раньше чем через 3–5 суток, а окно выгрузки делать скользящим.
Почему в отчёте о реализации есть минусовые строки?
Это возвраты. Товар был доставлен в одном периоде и попал в отчёт как продажа, а вернулся в другом — тогда в новом периоде появляется строка со знаком минус. У сезонных товаров после распродажи такие строки могут съесть 5–8 % выручки месяца.
Как сверить данные из API с кабинетом, если они не совпадают?
Сначала выровняйте часовой пояс (кабинет — Москва, API обычно UTC) и период, потом сравнивайте одинаковые метрики: «доставлено» с «доставлено», а не с «заказано». Если после этого расхождение остаётся, проверьте логи на 429 и повторно запросите окно в две недели — часть значений к этому моменту уже уточнилась.
Вы развиваете магазин. ИИ разбирается с рутиной.
Поручите Starbox AI поиск потерь в прибыли, проверку рекламы и планирование запасов. Задавайте вопросы в чате и получайте рекомендации по своему магазину. Попробуйте ИИ-менеджера для Ozon 14 дней бесплатно, без карты.
Попробовать ИИ-менеджера бесплатно