Ozon AI Team
← Все статьи
Финансы 15 мая 2026 · 12 мин чтения

Как считать юнит-экономику Ozon в 2026: полная формула с примерами

«Продал на 500К — на счёт пришло 280К. Где деньги, Лебовски?» Знакомая ситуация для большинства селлеров. Разбираемся по копейкам — все удержания, налоги, эквайринг, межкластерная доставка. С готовым Python-кодом для автоматизации.

Главное правило: смотри transaction list, а не named поля API

Если ты делаешь юнит-экономику по полям типа delivery_charge или commission_amount из карточки заказа — ты считаешь плановые удержания, а не реальные. Между ними часто разница в 1.5–2 раза.

Реальные деньги можно увидеть только через POST /v3/finance/transaction/list — там лежат все операции по конкретной отгрузке: продажа, возврат, корректировка, эквайринг, межкластерная доставка, штрафы, премиум-кешбэк, программа лояльности.

Если клиент спрашивает «почему такая маржа» — это команда лезть в transaction list. Никакие сводные отчёты Ozon не покажут реальную картину.

Из чего состоит юнит на самом деле

Считаем для одной продажи. Возьмём пример: продал кофемашину Philips за 21 990 ₽.

СтатьяСумма
Цена продажи (выручка)+21 990
Комиссия Ozon (10% для электроники)−2 199
Логистика FBO−380
Эквайринг (~1.5%)−330
Премиум-кешбэк за тебя−440
Программа лояльности−110
Реклама на единицу (ДРР 12%)−2 640
Закупка с поставщика−12 000
Упаковка + брак (3% от закупки)−360
Налог УСН 15% (доходы−расходы)−530
Чистая прибыль на единицу3 001 ₽

Маржа после всего — 13.6%. Не 47% (как казалось до Ozon-удержаний) и не 28% (если считать только заявленную комиссию).

Между «у меня маржа 47%» и «у меня маржа 13.6%» — пропасть в три раза. И именно поэтому магазины «продают много, а денег нет».

Как достать реальные данные через Ozon API

Простой Python-скрипт, который получает все транзакции за период и группирует по типу операции:

import requests, os
from collections import defaultdict

headers = {
    "Client-Id": os.environ["OZON_CLIENT_ID"],
    "Api-Key": os.environ["OZON_API_KEY"],
    "Content-Type": "application/json"
}

url = "https://api-seller.ozon.ru/v3/finance/transaction/list"
payload = {
    "filter": {
        "date": {"from": "2026-04-01T00:00:00Z", "to": "2026-04-30T23:59:59Z"},
        "operation_type": [],
        "transaction_type": "all"
    },
    "page": 1,
    "page_size": 1000
}

r = requests.post(url, json=payload, headers=headers).json()

totals = defaultdict(float)
for tx in r["result"]["operations"]:
    totals[tx["operation_type"]] += float(tx["amount"])

for op_type, amount in sorted(totals.items(), key=lambda x: x[1]):
    print(f"{op_type:55} {amount:>12,.2f} ₽")

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

Ключевые operation_type, на которые смотреть

ОперацияЧто означает
OperationProductSaleЧистая выручка от продажи
OperationAgentDeliveredToCustomerДоставка покупателю
OperationItemReturnВозврат на склад
OperationMarketplaceMarketingActionCostOperationРеклама и акции
OperationMarketplaceServicePremiumCashbackIndividualPointsПремиум-кешбэк за тебя
OperationMarketplaceServiceStockLogisticsЛогистика FBO
MarketplaceRedistributionOfAcquiringOperationЭквайринг

Три типичные ловушки

1. «Я продал на 100К, а на счёт пришло 60К»

Это нормально, Ozon удерживает свои комиссии до выплаты. Реальная маржа считается как чистая прибыль / выручка, а не чистая прибыль / приход на счёт. Это ключевая ошибка новичков.

2. «Заявленная комиссия 23%, а фактическая 28%»

Разница уходит в:

Никогда не считай по named полям API. Всегда копай в transaction list.

3. «Юнит положительный, а магазин в минусе»

Скорее всего:

Что делать дальше

Если ты дочитал до этого места — у тебя есть выбор: писать этот скрипт самому, заводить процесс ежемесячного отчёта, тратить на это полдня в начале каждого месяца. Или поставить себе AI-команду, где finance-агент делает это за тебя автоматически и присылает разбор в Telegram.

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

finance-агент посчитает это за тебя

Каждое утро присылает реальную маржу по топ-5 SKU и алерт по убыточным позициям. Транзакции, налоги, эквайринг — всё учитывает.

Установить команду за 14 990 ₽