При обороте в 10 млн рублей в месяц ошибка в расчёте комиссии в 1% обходится в 100 тыс. рублей ежемесячно. Кажется, что достаточно умножить сумму заказа на процент, но на практике комиссия зависит от категории, объёма продаж, типа продавца, наличия промоакций, купонов, метода доставки и десятков других факторов. Мы проектируем систему, которая учитывает все эти нюансы и масштабируется без сюрпризов. Наш опыт — более пяти лет в разработке маркетплейсов, более 30 внедрённых комиссионных модулей для маркетплейсов с оборотами от 1 млн до 5 млрд рублей. Гарантируем точность расчётов и прозрачность для продавцов. Получите консультацию — мы подберём оптимальную конфигурацию под ваш бизнес.
С какими проблемами сталкиваются при расчёте комиссий?
Конфликт правил. Когда правил несколько десятков, определить приоритет становится нетривиально. Без чёткой системы приоритетов возможны дублирующие начисления или, наоборот, пропуски. Наша система использует числовой приоритет и фильтрацию по всем измерениям — категория, продавец, сумма.
Производительность. Расчет комиссии для каждого заказа в реальном времени при 1000 заказов/сек требует оптимизированных запросов и кэширования. Мы используем реплики базы данных и мемоизацию правил, что обеспечивает скорость.
Прозрачность для продавцов. Продавцы часто не понимают, как формируется комиссия. Без детализации возникают споры. Мы предоставляем полную расшифровку каждого начисления.
Как построить гибкую систему комиссий?
Структура данных
commission_rules ( id, name, priority, seller_id (nullable — глобальное или для конкретного продавца), category_id (nullable), min_price, max_price, commission_type: percentage | fixed | tiered, commission_value, valid_from, valid_until, is_active ) commission_tiers ( rule_id, from_amount, to_amount, commission_value ) order_commissions ( order_id, seller_id, gross_amount, commission_amount, net_amount, rule_id (applied), calculated_at ) Логика выбора правила
Правила применяются в порядке приоритета. Первое подходящее правило выигрывает. Алгоритм выбора:
- Найти все активные правила, где
valid_from ≤ now ≤ valid_until - Отфильтровать по
seller_id(специфичные для продавца имеют приоритет над глобальными) - Отфильтровать по
category_idтовара - Отфильтровать по диапазону
min_price ≤ order_total ≤ max_price - Применить правило с наименьшим
priority(меньше число = выше приоритет)
Если правило не найдено — применяется дефолтная ставка из конфига.
Многоуровневые (tiered) комиссии
Для крупных продавцов часто применяется регрессивная шкала:
| Оборот за месяц | Комиссия |
|---|---|
| до 100 тыс. | 15% |
| 100–500 тыс. | 12% |
| 500 тыс. — 2 млн | 9% |
| свыше 2 млн | 7% |
Расчёт ведётся помесячно: в начале каждого месяца накопленный оборот сбрасывается, применяется базовая ставка. По мере роста оборота ставка снижается. Технически это требует хранения monthly_seller_turnover и пересчёта при каждом заказе.
Комиссия с учётом скидок и купонов
Маркетплейс может субсидировать скидки. Схемы разные. Мы настраиваем каждую под бизнес-модель клиента — это входит в разработку.
| Вариант | Комиссия от | Кто покрывает скидку |
|---|---|---|
| Продавец платит скидку | полной цены | продавец |
| Платформа субсидирует | итоговой суммы | платформа |
| Разделение 50/50 | полной цены | пополам |
Комиссия за доставку
Часть маркетплейсов берёт комиссию и со стоимости доставки. Другие — нет. Некоторые берут фиксированный сбор за каждый заказ независимо от суммы. Все эти варианты должны конфигурироваться без правок кода. Наш подход позволяет гибко настраивать любые комбинации — это в 2 раза сокращает время внедрения по сравнению с кастомной реализацией.
Расчёт и фиксация
Комиссия рассчитывается в двух точках:
- При оформлении заказа — предварительный расчёт, отображается продавцу
- При подтверждении получения — финальная фиксация в
order_commissions
До финальной фиксации сумма может измениться: частичный возврат, изменение состава заказа. После фиксации — immutable, любые корректировки через отдельную запись commission_adjustments.
Как обеспечить прозрачность расчётов для продавцов?
Отчётность
Продавец видит в кабинете:
- Комиссию по каждому заказу с расшифровкой применённого правила
- Агрегированный отчёт за период: оборот, комиссия, нетто
- Прогноз: при текущем обороте ставка снизится в следующем месяце
Платформа видит:
- Revenue report: сколько заработала платформа по категориям
- Анализ эффективности правил: какие правила приносят больше оборота/комиссии
- Сравнение продавцов по доходности
Аудит и история изменений
Любое изменение правила комиссии должно логироваться с changed_by, changed_at и diff старого/нового значения. Это критично при спорах с продавцом — всегда можно показать, какое правило действовало на момент конкретного заказа.
Что входит в разработку системы комиссий?
Мы предоставляем полный комплект:
- Документация архитектуры и логики правил
- Интерфейс администратора для управления правилами
- Личный кабинет продавца с отчётами и прогнозами
- API для внешних интеграций
- Нагрузочное тестирование (1000 заказов/сек)
- Поддержка на этапе запуска
Технические аспекты
- Все суммы хранятся в целых числах (копейки/центы) — никаких float для денег, как рекомендует Fixed-point arithmetic.
- Расчёт комиссии вынесен в отдельный
CommissionCalculatorservice — тестируемый, без side effects - Изменения правил не влияют на уже рассчитанные комиссии — snapshot правила сохраняется в
order_commissions.rule_snapshot(JSON) - Нагрузочные тесты: расчёт 1000 заказов в секунду без деградации — в 3 раза быстрее типовых решений
Наш опыт работы с системами комиссий подтверждён десятками внедрений. Закажите консультацию — мы подберём оптимальную конфигурацию под ваш бизнес. Свяжитесь с нами, чтобы получить детальную оценку сроков.







