Калькулятор комиссий продаж с утверждением менеджера, который работает
Постройте калькулятор комиссий продаж с утверждением менеджера: задавайте правила по продуктам и ролям, рассчитывайте выплаты по периоду, подтверждайте результаты и экспортируйте в payroll.

Какая проблема решается (и почему таблицы ломаются)
Калькулятор комиссий продаж кажется простым, пока не возникнет первое исключение. Кто‑то продаёт два продукта с разными ставками, менеджер утверждает одноразовую премию, а финансам нужны зафиксированные цифры перед запуском payroll. В таблице это быстро перерастёт в лишние вкладки, скрытые формулы и знакомый вопрос: «Какая версия верная?»
Таблицы не справляются, потому что правила комиссий — это не только математика. Это политика. Как только вы определяете правила по продукту и роли, логика разветвляется: для SDR и AE могут быть разные ставки по Product A, услуги могут оплачиваться по факту получения денег, а возобновления — исключать некоторые территории. Маленькое изменение раскручивается по десяткам ячеек, и сложно доказать, что именно и когда было изменено.
Худшее время обнаружить это — прямо перед payroll. Числа меняются в последний момент (сделка переносится, прилетает возврат, утверждается исключение), и вы правите формулы без понятной истории. Так начинаются споры и «финальные» экспорты отправляются снова и снова.
Отсутствует этап утверждения. Это значит, что выплаты за период должны быть проверены и утверждены до выхода из инструмента. Обычно sales подтверждает исполнение и исключения, а финансы — правила и суммы, соответствующие тому, что реально можно выплатить.
Надёжный workflow даёт четыре вещи: точные выплаты с чёткими границами, единый источник правды по сделкам и правилам, простой шаг утверждения, который фиксирует числа, и аудит‑трейл, который показывает, кто и когда что утвердил.
Входные данные, выходные данные и кто участвует
Калькулятор комиссий остаётся доверенным, только если все согласны с двумя вещами: что входит в расчёт и что выходит. Большинство споров начинается, когда входные данные неконкретны или кто‑то меняет правило без следа.
Входы обычно поступают от sales ops или финансов, плюс источник сделок (CRM или экспорт таблицы). Ключ — согласованность: одинаковые поля в каждом периоде, чтобы расчёты не зависели от чьей‑то интерпретации.
Входы, которые важны больше всего: сделки (сумма, дата закрытия/зарабатывания, стадия, владелец), продукты/планы (что продано и специальные метки), люди и роли (включая смены статуса в периоде), квоты/ускорители и временные правила (период выплаты, дедлайны, окна clawback).
Выходы должны быть просты для проверки, утверждения и передачи в payroll. Думайте в двух слоях: строки выплат (что каждый получает и почему) и сводки (итоги для менеджеров и финансов).
Чистый пакет выходных данных включает:
- строки выплат по каждому сотруднику с кратким кодом причины
- итоговые суммы по сотруднику, команде и продукту
- список исключений (отсутствие маппинга продукта, разделение кредита, отрицательные корректировки)
- статус утверждения и временная метка по периоду
Шлюз утверждения защищает числа. До утверждения разрешайте правки маппингов и входных данных (метки продукта, смены ролей, сплиты сделок) и требуйте комментарии по исключениям. После утверждения блокируйте выплаты и требуйте формальную запись корректировки вместо тихих правок.
Трассируемость — не обсуждается. Каждое изменение должно фиксировать, кто изменил, когда и старое и новое значение.
Правила комиссий по продукту и роли: как их описать
Калькулятор комиссий работает, только если все читают правила одинаково и получают одинаковый результат. Начните с описания правил простым языком, затем переведите их в структурированные поля. Если правило требует встречи для объяснения, оно потом станет источником споров.
Сначала определите роли в соответствии с тем, что люди реально делают в сделке. Один продавец может привлекать и закрывать, аккаунт‑менеджер — продлять или расширять, sales engineer — поддерживать демо, менеджер — делать оверрайды или держать небольшой сплит для наставничества. Держите список коротким и согласованным.
Затем группируйте продукты так, как вы их продаёте. Если за расширение с высокой маржой платят иначе, чем за основной план — разделяйте. Если ценообразование отличается по регионам и это влияет на комиссию, отражайте это в группировке. Цель — меньше одноразовых правил без потери точности.
Потом выберите типы ставок, соответствующие вашей компенсации: процент от выручки, фиксированные платежи за услуги, ступенчатые ставки для больших сделок и правила сплита для совместных кредитов.
Решения, которые чаще всего имеют значение:
- Кто может зарабатывать на сделке (и может ли одна сделка платить нескольким ролям)
- Как продукты маппятся в группы (SKU, семейство продуктов, региональные варианты)
- Тип ставки для роли и группы продукта (процент, фиксированная, ступенчатая, сплит)
- Что такое «элиджибл выручка» (после скидки? после налога?)
- Как обрабатывать возвраты и частичные оплаты (реверс, clawback или задержка)
Пример: 8% платите продавцу за Core Subscription, 3% — аккаунт‑менеджеру за продления, и $200 фиксированной выплаты sales engineer за услуги внедрения. Если клиент платит в два этапа, выберите политику (выплачивать по мере поступления денег или только при полной оплате) и применяйте её последовательно.
Выберите период выплаты и правила cut‑off
Быстрее всего создать споры, если вы рассчитываете комиссии по одному графику, а платите по другому. Перед тем как строить калькулятор, зафиксируйте два параметра: период выплаты (за что платите) и правило cut‑off (что попадает в этот период).
Выберите модель периода, которая соответствует бизнесу. Ежемесячный проще всего понимать и аудитить. Квартальный уменьшает админ‑работу, но задерживает обратную связь и может скрыть проблемы до их дорогого исправления. Пользовательские диапазоны подходят для пилотов, спифов или сезонных команд.
Далее определите earned date: одно событие, которое решает, когда сделка становится комиссионной. Частые варианты: closed‑won, дата отгрузки или дата оплаты по счёту. Выберите одно основное правило, а исключения оформляйте как явные задокументированные случаи.
Пишите правила cut‑off так, чтобы их было трудно неправильно понять. Например:
- Период выплаты: календарный месяц
- Cut‑off: заработано до 23:59 последнего дня месяца
- Заморозка данных: правки запрещены через 2 рабочих дня
- Отсутствующие данные: удерживаются до следующего периода
- Спорные позиции: помечаются и исключаются до разрешения
Планируйте проратацию заранее. Если человек приходит в середине месяца, меняет роль или территорию, решите, делить ли по дням в роли, по effective date в сделке или по тому, кто владел аккаунтом в момент earning. Что бы ни выбрали — делайте это последовательно и видно в деталях выплат.
Наконец, решите, как показываются корректировки. Небольшие исправления обычно лучше отразить как строку корректировки в следующем периоде. Крупные ошибки могут потребовать рестейтмента, но это должно быть редким и чётко помеченным.
Простая модель данных, которая держит правила в порядке
Калькулятор комиссий остаётся простым при условии, что модель данных скучная и предсказуемая. Разделите факты (что произошло) и способы оплаты (правила), а результат (выплаты) храните так, чтобы его можно было проверить позже.
Начните с ядра «что произошло» таблиц:
- Users и Roles: кто продавал и в какой роли был в периоде
- Products: что вы продаёте (или группы продуктов, если платите по категориям)
- Deals: запись на уровне клиента (дата закрытия, владелец, стадия, валюта)
- Deal Lines: позиции сделки (продукт, количество, сумма), по которым считаются комиссии
- Payouts: рассчитанные результаты по пользователю и периоду, плюс статус (Draft, Approved, Exported)
Затем добавьте слой «как платим» с Rules. Каждое правило должно ясно отвечать:
- Кому применяется (роль и опционально конкретный пользователь)
- К чему применяется (продукт, группа продуктов или любые продукты)
- Как считать (процент, фиксированная сумма, ступенчатая ставка)
Чтобы правила не превратились в хаос, сделайте приоритет явным. Храните числовое поле priority и применяйте правило с наивысшим приоритетом. Например, правило по продукту бьёт «для всех продуктов», а исключение для пользователя — обходит общее правило для роли.
Правила меняются со временем — версионируйте их. Используйте даты начала/окончания действия и фиксируйте, кто обновил правило и когда. Когда кто‑то спрашивает «почему март был другим?», вы сможете указать правило, действовавшее тогда.
Наконец, добавьте таблицу Exceptions для ручных оверрайдов. Храните строку сделки, сумму или ставку оверрайда, кто ввёл и обязательную причину. Так единоразовые исправления видны, а не спрятаны в ячейке таблицы.
Как считать выплаты: пошаговый процесс
Хороший калькулятор комиссий предсказуем: одни и те же входные данные дают одни и те же выплаты. Проще всего добиться этого, если каждый прогон выплат воспринимать как снимок, который можно воспроизвести.
Начните с выбора окна выплат (например, 1–31 марта) и блокировки набора сделок. На практике это значит: каждая подходящая сделка, счёт или строка фиксируется в прогоны, даже если CRM изменится завтра.
Практичный поток, который остаётся понятным при росте правил:
- Заморозьте период и подтяните только элементы в области действия (closed‑won, дата оплаты или ваше событие по политике).
- Для каждой строки сделки определите продукт и кто элиджибл (AE, SDR, менеджер, партнёр), исходя из роли в момент продажи.
- Выберите одно правило, которое применяется (побеждает наивысший приоритет) и вычислите выплату по строке.
- Сверните итоги по человеку и команде, и пометьте подозрительные результаты (отрицательные выплаты, отсутствующий продукт, необычно высокая комиссия или продавец с нулём строк).
- Если что‑то меняется после cut‑off, добавьте запись корректировки в следующий прогон вместо переписывания истории.
Пример: у сделки две позиции — Software и Onboarding. AE элиджибл по обеим. Onboarding платит фиксированную премию, а софт — процент. Каждая строка рассчитывается отдельно и затем суммируется для AE.
Выходом должен быть draft‑отчёт по выплатам, готовый к проверке и утверждению, где каждое число можно проследить до конкретной строки сделки и правила.
Утверждение менеджером: прозрачные и аудируемые проверки
Калькулятор комиссий — это лишь половина работы. Вторая — чистый шаг утверждения, чтобы выплаты были доверенными, воспроизводимыми и легко объяснимыми позже.
Обращайтесь с каждым прогоном комиссий как с документом, который проходит через понятные статусы, и делайте статус видимым повсюду. Нельзя экспортировать до утверждения. Набор статусов небольшого набора хорошо работает: Draft (работа), Submitted (на проверке), Approved (подписано), Rejected (нужны изменения) и Exported (отправлено в payroll).
Определите владельцев заранее. Обычно sales ops создаёт и отправляет, sales manager утверждает сделки и сплиты, а финансы утверждает финальные цифры перед экспортом. Если нужен один утверждающий, выберите человека, который может сказать «да» и одновременно решать споры.
Что должен видеть рецензент
Экран проверки должен быстро отвечать на вопросы. Разместите итоги сверху, затем позвольте углубиться:
- Итоги по периоду по каждому продавцу и команде
- Расшифровка на уровне сделки с показом применённого правила (ставка, лимит, сплит)
- Исключения (непривязанный продукт, отсутствующая роль, отрицательные корректировки)
- Изменения с прошлого прогона (новые сделки, отредактированные суммы, реверсы)
Если прогон отклонён, требуйте комментарий с объяснением. При отклонении разблокируйте только необходимое для правки (маппинг сделок или выбор правила), а всё остальное держите в режиме только‑для‑чтения, чтобы область правок была ограничена.
Сделайте утверждения аудируемыми
Утверждения должны оставлять надёжный след: кто утвердил, когда и что именно (период, итоги и набор сделок). Если сделка изменяется после утверждения, прогон либо переводится в Draft, либо явно помечается «нуждается в повторном утверждении».
Пример сценария: небольшая команда с ежемесячной выплатой
Небольшая команда хочет предсказуемый калькулятор комиссий. У них два продавца (Алекс и Прия) и один менеджер (Дана). Продают два продукта с разными ставками: Product Alpha платит 10%, Product Beta — 6%.
Одна сделка включает сплит: продавец владеет отношениями, а sales engineer помогает закрыть. Правило простое: 70% комиссии идёт продавцу и 30% — sales engineer.
Что происходит в апреле:
- Сделка 1: Алекс продаёт Product Alpha на $20,000. Прия поддерживает как sales engineer (70/30).
- Сделка 2: Прия продаёт Product Beta на $15,000. Без сплита.
- Возврат: 18 апреля клиент из Сделки 1 возвращает $5,000.
Черновой расчёт за апрель (до применения возврата): по Сделке 1 комиссия $20,000 x 10% = $2,000. Алекс получает $1,400, Прия — $600. По Сделке 2 комиссия $15,000 x 6% = $900, полностью Прии.
Возврат создаёт корректировку. Возврат $5,000 по Product Alpha значит корректировка $5,000 x 10% = $500. Если политика — применять корректировки в следующем периоде, апрель остаётся закрытым, а май начинается с -$500, распределённых 70/30 (−$350 для Алекса, −$150 для Прии). Это избегает повторного прогона payroll.
Поток в конце месяца:
- Draft: система рассчитывает выплаты за апрель и отмечает ожидаемую корректировку по возврату.
- Review: Дана проверяет сделки, сплиты и исключения.
- Approve: Дана подписывается, фиксируя период.
- Export: генерируется файл, готовый для payroll, с итогами и строками корректировок.
Частые ошибки, которые порождают споры (и как их избегать)
Большинство споров — не про математику. Они возникают, когда у двух людей разные определения одной и той же сделки.
Обычный триггер — смешивание booked revenue (подписано) и paid revenue (получено) без явной маркировки. Если один экран показывает booked, а экспорт — paid, продавцы почувствуют себя обманутыми. Выберите одно как дефолт и делайте другое явным полем с понятным названием.
Ещё одна проблема — тихие правки после утверждения. Если менеджер одобрил период, а кто‑то позже меняет дату закрытия, продукт или сумму, выплаты меняются без объяснения. Блокируйте утверждённые записи и обрабатывайте изменения как корректировки с датой.
Правила вызывают споры, когда они перекрываются. Если «Product A платит 8%» и «Enterprise‑сделки платят 10%» применимы одновременно, нужен явный приоритет (или правило суммирования), чтобы одна и та же сделка не платила по‑разному в зависимости от того, кто запустил отчёт.
Проблемы, которые чаще всего всплывают при выплате:
- Неопределённая база выручки (booked vs paid) в разных отчётах и экспортированных файлах
- Правки после утверждения вместо записей корректировок
- Перекрывающиеся правила без приоритета
- Отсутствие обработки крайних кейсов (возвраты, чарджбэки, отмены, конвертация валют)
- Экспорты, которые не соответствуют требованиям payroll (ID сотрудников, метод выплаты, юридическое лицо)
Пример: продавец продаёт в EUR, payroll платит в USD, а отмена происходит в следующем месяце. Если вы храните исходный FX‑курс с записью сделки и регистрируете отмену как отрицательную корректировку в следующем периоде, команда увидит, почему число изменилось.
Быстрый чеклист перед экспортом в payroll
Последний шаг — где большинство головных болей по комиссиям начинается. Перед отправкой в payroll сделайте быструю проверку, чтобы платить правильным людям за правильные сделки в правильный период.
Сначала подтвердите окно выплат. Убедитесь, что даты начала и конца периода соответствуют ожиданиям компании и что правило cut‑off ясно. «Closed‑won до 23:59 последнего дня месяца» — это не то же самое, что «счёт оплачен в течение месяца».
Короткий чеклист перед экспортом:
- Проверьте даты периода и определение cut‑off, включая часовой пояс и любые льготные периоды.
- Выберите наобум 3–5 сделок: продукт, роль, ставка и выплата должны совпадать с тем, что вы объясните на доске.
- Просмотрите аномалии: отрицательные выплаты, слишком большие выплаты и сделки без продукта или владельца.
- Подтвердите утверждения: правильный менеджер подписал и по исключениям есть заметки.
- Убедитесь, что поля экспорта заполнены: ID сотрудника, сумма выплаты, метка периода и понятное примечание (пример: «Jan 2026 commissions»).
Если нашли выброс, относитесь к нему как к короткому расследованию: откройте запись сделки, подтвердите правило, которое применилось, и проверьте входные данные (сумма, продукт, роль, стадия, дата). Статус «Hold for review» помогает держать спорные позиции вне экспорта, пока их не исправят и не утвердят.
Следующие шаги: превращаем workflow в простой внутренний инструмент
Начните с малого, чтобы выпустить что‑то, чем люди действительно будут пользоваться. Хорошая минимальная версия — одна группа продуктов, две роли (продавец и менеджер) и один тип периода (месяц). Этого достаточно, чтобы проверить математику, правила cut‑off и шаг утверждения, не утопая в крайних кейсах.
Далее решите, откуда берутся сырые данные и как вы будете им доверять. Многие команды импортируют из CRM или биллинга, затем заполняют пробелы таблицей. Что бы вы ни выбрали, встройте в процесс валидацию. Например, блокируйте отправку периода, если хоть одна сделка не имеет владельца, метки продукта или даты закрытия.
Лёгкий дашборд для менеджера облегчает принятие. Сфокусируйтесь на решениях:
- Ожидающие утверждения по периодам (количество и общая сумма)
- Итоги по продавцу и группам продуктов
- Короткий список «требует внимания» (отсутствующие поля, оверрайды, исключения)
Если хотите избежать тяжёлого программирования, AppMaster (appmaster.io) может быть практичным вариантом для создания такого внутреннего инструмента: смоделируйте таблицы, реализуйте прогон выплат и поток утверждений, и генерируйте экспорт после подписания. Держите продукт простым вначале, затем расширяйте аккуратно по мере запросов команды на новые группы продуктов, особые кейсы или типы периодов.
Вопросы и ответы
Начните с одного основного правила, которое определяет, когда сделка становится комиссионной (например, дата closed‑won или дата оплаты по счёту). Делайте это правило единым для отчётов и экспортов, а исключения фиксируйте как явные корректировки с заметкой, чтобы не переписывать историю.
Замораживайте период перед экспортом. Простая схема — короткое окно исправлений (например, 1–2 рабочих дня) для заполнения обязательных полей, затем блокировка входных данных и обязательная запись любых последующих изменений как датированных корректировок в следующем периоде.
Держите правила читаемыми и структурированными: роль + продукт (или группа продуктов) + метод расчёта (процент, фиксированная сумма, ступенчатая ставка). Если правило нельзя объяснить одним предложением, его стоит разбить на более простые правила.
Задайте явный порядок приоритета, чтобы для каждой строки сделки победило только одно правило. Частые по‑умолчанию: переопределения для конкретного пользователя превосходят правила для роли, правила по продукту превосходят «все продукты», а более свежие даты действия — старые.
Вычисляйте на уровне строк сделки, а затем агрегируйте по человеку. Так не будет путаницы, когда в одной сделке есть позиции с разными ставками (например, процент на софт и фиксированная премия за услуги), и аудит становится проще.
Выберите одну политику и обозначьте её везде. Оплата по забронированной выручке проще и быстрее, оплата по собранным средствам снижает риск при возвратах и неоплатах; независимо от выбора, отмены и возвраты обрабатывайте явными корректировками.
Рассматривайте возвраты как отрицательные корректировки, а не как редактирование уже утверждённых выплат. Чистый подход — оставить утверждённый месяц закрытым и применить обратную проводку в следующем периоде с ссылкой на исходную строку сделки.
Используйте небольшой набор статусов и принуждайте их: Draft для расчёта, Submitted для проверки, Approved для фиксации чисел и Exported для передачи в payroll. Не давайте возможность экспортировать из Draft или Submitted и фиксируйте, кто и когда утвердил.
Показывайте вначале итоги, затем давайте возможность углубиться до строки сделки: правило, ставка, любые сплиты и лимиты. Нужно также окно исключений (непривязанный продукт, отсутствующий владелец, отрицательные корректировки) и прозрачный журнал изменений с тем, что изменилось с прошлого прогона.
Да, если вы держите объём небольшой: один тип периода (месяц), несколько групп продуктов и короткий список ролей. AppMaster (appmaster.io) — пример, где команды моделируют таблицы, реализуют прогон выплат и поток утверждения, и генерируют экспорт в payroll без тяжёлого программирования.


