Помилка в розрахунку комісії може призвести до значних щомісячних втрат. Здається, що достатньо помножити суму замовлення на відсоток, але на практиці комісія залежить від категорії, обсягу продажів, типу продавця, наявності промоакцій, купонів, методу доставки та десятків інших факторів. Ми проектуємо систему, яка враховує всі ці нюанси та масштабується без сюрпризів. Наш досвід — понад п'ять років у розробці маркетплейсів, понад 30 впроваджених комісійних модулів для маркетплейсів з оборотами від 1 млн до $45M–65Mів. Гарантуємо точність розрахунків і прозорість для продавців. Отримайте консультацію — ми підберемо оптимальну конфігурацію під ваш бізнес.
З якими проблемами стикаються при розрахунку комісій?
Конфлікт правил. Коли правил кілька десятків, визначити пріоритет стає нетривіально. Без чіткої системи пріоритетів можливі дублюючі нарахування або, навпаки, пропуски. Наша система використовує числовий пріоритет та фільтрацію за всіма вимірами — категорія, продавець, сума.
Продуктивність. Розрахунок комісії для кожного замовлення в реальному часі при 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 рази швидше типових рішень
Наш досвід роботи з системами комісій підтверджений десятками впроваджень. Замовте консультацію — ми підберемо оптимальну конфігурацію під ваш бізнес. Зв'яжіться з нами, щоб отримати детальну оцінку термінів.







