2025年3月11日·1分で読めます

マネージャー承認付きで確実に動く営業コミッション計算機

製品・役割ごとにルールを設定し、期間ごとの支払を計算、承認して給与用にエクスポートする、マネージャー承認付きの営業コミッション計算ツールの作り方。

マネージャー承認付きで確実に動く営業コミッション計算機

これが解決する問題(なぜスプレッドシートが壊れるのか)

営業コミッション計算は一見単純に思えますが、最初の例外が出ると途端に複雑になります。ある人が異なる率の2製品を売り、マネージャーが一度限りのボーナスを承認し、ファイナンスは給与実行前に数値の確定を求める――スプレッドシートではすぐに余分なタブや隠れた数式が増え、「どのバージョンが正しいのか?」という馴染みのある問いが出てきます。

スプレッドシートが失敗するのは、コミッションルールが単なる算数ではなくポリシーだからです。製品や役割ごとにルールを定義すると、ロジックはすぐに分岐します。製品AはSDRとAEで別の率を支払い、サービスは入金時に支払われるかもしれず、更新は特定の地域を除外するかもしれません。小さな変更が何十ものセルに波及し、何がいつ変わったのかを証明するのは難しくなります。

最悪なのは給与直前にこれに気づくことです。数字が遅れて変わり(案件が期間を移動する、返金が発生する、例外が承認される)、最後の瞬間に履歴のないまま数式を編集する羽目になる。そこから争いが始まり、「最終」エクスポートが何度も再送される理由です。

欠けているのは「サインオフ」です。これは、その期間の支払いがコミッションツール内でレビューされ承認されることを意味します。通常はセールスが実績と例外を確認し、ファイナンスがルールと合計が実際に支払えるものと一致することを確認します。

堅実なワークフローは次の4つを提供します:明確な締め切りで正確な支払、案件とルールの単一の真実、数値を凍結する簡単な承認ステップ、誰がいつ何を承認したかを示す監査トレイルです。

入力、出力、プロセスに関わる人々

コミッション計算が信頼され続けるには、皆が2つの点で合意している必要があります:何が入力されるか、そして何が出てくるか。ほとんどの争いは、入力が曖昧なとき、あるいは誰かがルールを変更して痕跡を残さなかったときに始まります。

入力は通常セールスオプスやファイナンス、そして案件ソース(CRM やスプレッドシートのエクスポート)から来ます。重要なのは一貫性:同じフィールドを毎期間提供することで、計算が誰かの解釈に依存しないようにします。

最も重要な入力は、案件(金額、成立/収益確定日、ステージ、担当者)、製品/プラン(何が売れたかと特別フラグ)、人と役割(期間中の変更を含む)、クオータ/アクセラレータ、そして時間ルール(支払期間、カットオフ、クローバック期間)です。

出力はレビューしやすく、承認しやすく、給与に渡しやすいものであるべきです。2つのレイヤーで考えてください:行ごとの明細(各人が何をどの理由で受け取るか)と集計(マネージャーやファイナンス向けの合計)です。

クリーンな出力パッケージには以下が含まれます:

  • レップごとの支払行と短い理由コード
  • レップ、チーム、製品別の合計サマリ
  • 例外リスト(製品マッピング欠落、分配クレジット、マイナス調整など)
  • 期間ごとの承認ステータスとタイムスタンプ

承認ゲートは数値を守る場所です。承認前はマッピングや入力(製品タグ、役割変更、案件分割)の編集を許可し、例外にはコメントを必須にします。承認後は支払をロックし、無言の編集の代わりに正式な調整記録を必須にします。

トレーサビリティは妥協できません。すべての変更は誰がいつ何を変更したのか、旧値と新値を記録するべきです。

製品と役割ごとのコミッションルール:どう定義するか

コミッション計算が機能するには、誰もがルールを読んで同じ答えを得られる必要があります。まず平易な言葉でルールを書き、それを構造化フィールドに変換してください。説明に会議が必要なルールは、後で争いを引き起こします。

まず、実際の取引で人々が何をするかに基づいて役割を定義します。レップはソースとクロージングを兼ねるかもしれないし、アカウントマネージャーは更新や拡張を担当し、セールスエンジニアはデモをサポートし、マネージャーはオーバーライドやコーチング用の小さな分配を保持するかもしれません。リストは短く一貫性を保ってください。

次に、製品を販売方法に合わせてグループ化します。高マージンのアドオンとコアプランで支払いが異なるなら分けてください。地域で価格が変わりコミッションに影響するなら、それをグループ化に反映させます。目的は、精度を損なわずにワンオフルールを減らすことです。

その後、報酬タイプを選びます:売上の割合、固定サービス料、大口向けの段階的レート、共有クレジットの分配ルールなど、あなたの報酬プランに合うものを選んでください。

多くの場合重要になる決定は次の通りです:

  • 誰が案件で稼げるか(単一案件が複数の役割に支払うかどうか)
  • 製品をどうグループ化するか(SKU、製品ファミリー、地域差分)
  • 役割と製品グループごとの率タイプ(%、固定、段階、分配)
  • 「適格収益」をどう定義するか(割引後か?税抜きか?)
  • 返金や分割支払いをどう扱うか(逆戻し、クローバック、遅延支払い)

例:Core Subscription はレップに 8%、更新にはアカウントマネージャーに 3%、Implementation Services にはセールスエンジニアに $200 の固定支払い。顧客が二回に分けて支払う場合、ポリシーを統一して(入金ごとに支払うか、完全に支払われたときのみか)一貫して適用します。

支払期間とカットオフルールを選ぶ

支払をあるタイムラインで計算し、別のタイムラインで支払うと、争いが生まれます。計算を組む前に2つを固定してください:支払対象期間(何に対して支払うか)とカットオフルール(その期間に何が含まれるか)です。

事業に合う期間モデルを選んでください。月次は理解しやすく監査もしやすいです。四半期は管理工数を減らしますがフィードバックが遅れ、問題が高コストになることがあります。パイロットやスポッフ、季節チームにはカスタムレンジが有効です。

次に、earned date(収益確定日)を定義します:取引がコミッション対象になることを決める一つのイベントです。一般的には closed-won 日、出荷日、請求書支払日などが選ばれます。主要ルールを一つ決め、例外は明示的に文書化して扱います。

カットオフルールは誤解が生じないように書いてください。例えば:

  • 支払期間:暦月
  • カットオフ:月末日 23:59 までに収益確定
  • データ凍結:2 営業日後は編集不可
  • 欠損データ:次期間へ保留
  • 争議アイテム:解決まで除外

早めに按分(proration)を計画してください。誰かが月中に入社したり役割が変わったり領域が移動した場合、日数で分割するか、案件の有効日で分割するか、収益確定時の所有者で判断するかを決めます。何を選んでも、一貫して支払明細に表示してください。

最後に、修正の表示方法を決めます。小さな修正は通常、次期間の調整行として扱うのが良いです。大きな誤りは再表明(restatement)を要するかもしれませんが、それは稀で明確にラベル付けするべきです。

ルールを保守しやすくするシンプルなデータモデル

コミッションツールを素早く構築
取引、ルール、支払をモデリングして、マネージャー承認を一箇所で追加します。
作成を開始

コミッション計算が簡単に運用できるのは、データモデルが地味で予測可能なときだけです。何が発生したか(営業活動)とどう払うか(ルール)を分け、結果(支払)を保存して後で監査できるようにします。

まずコアの「何が起きたか」テーブルから始めます:

  • UsersRoles:誰が売ったか、期間中にどの役割だったか
  • Products:販売品(またはカテゴリごとに支払う場合は製品グループ)
  • Deals:顧客レベルのレコード(成立日、担当者、ステージ、通貨)
  • Deal Lines:行アイテム(製品、数量、金額)—コミッションはここで計算される
  • Payouts:ユーザー・期間ごとの計算結果とステータス(Draft, Approved, Exported)

次に支払い方法のレイヤーとして Rules を追加します。各ルールは次の点に明確に答えるべきです:

  • 誰に適用されるか(役割、オプションで特定ユーザー)
  • 何に適用されるか(製品、製品グループ、または全製品)
  • どう計算するか(%、固定、段階)

ルールが混乱しないように、優先度を明示してください。数値の priority を保存し、優先度の高い一致を先に適用します。たとえば、製品固有ルールは「全製品」ルールに勝ち、ユーザー固有の例外は一般的な役割ルールに勝ちます。

ルールは時間とともに変わるのでバージョン管理してください。開始/終了日を使い、誰がいつルールを更新したかをキャプチャします。「なぜ3月が違ったのか」と聞かれたら、その期間に有効だったルールを示せるようにします。

最後に、手動オーバーライド用の Exceptions テーブルを追加します。案件行、オーバーライド額または率、入力者、必須の理由を保存します。こうするとワンオフ修正がスプレッドシートのセルに隠れるのではなく可視化されます。

支払を計算する方法:ステップバイステップのフロー

良いコミッション計算は予測可能で、同じ入力が同じ支払結果を生みます。最も簡単な方法は、各支払ランを後で再生できるスナップショットとして扱うことです。

まず支払ウィンドウを選び(例:3/1–3/31)案件セットをロックします。実務では、資格のあるすべての案件、請求書、行アイテムをランに取り込み、たとえ CRM が翌日変わってもラン内のデータは固定化します。

実用的でルールを増やしても読みやすいフロー:

  • 期間を凍結し、範囲内のアイテム(closed-won 日、支払日、またはポリシーで定めたイベント)だけを取り込む。
  • 各案件行について、製品と当時の役割に基づき誰が適格か(AE、SDR、マネージャー、パートナーレップ)を特定する。
  • 適用される単一のルールを選択する(優先度が高いものが勝つ)そして行の支払を計算する。
  • 人・チームごとに合計をロールアップし、異常値(マイナス支払、製品未登録、高額なコミッション、行がゼロのレップ)にフラグを立てる。
  • カットオフ後に何かが変わった場合は、履歴を書き換えずに次のランに調整エントリを追加する。

例:ある案件に Software と Onboarding の 2 行があり、AE が両方に適格で、Onboarding は固定ボーナス、Software は割合で支払われる場合、各行を独立して計算し、AE に合算します。

出力はレビューと承認準備ができたドラフト支払レポートで、すべての数値が特定の行アイテムとルールにトレースできるべきです。

マネージャー承認:明確で監査可能な承認フロー

Web とモバイルのアクセスを提供
マネージャーがどこでも確認・承認できるよう、Webとネイティブモバイル画面を構築します。
アプリを構築

コミッション計算は仕事の半分に過ぎません。もう半分は、支払が信頼でき、再現可能で、後で説明しやすくなるクリーンな承認ステップです。

各コミッションランを文書のように扱い、明確なステータスを通過させ、そのステータスをどこでも見えるようにします。さらに承認前のエクスポートを不可能にします。簡単なセットはうまく機能します:Draft(作業中)、Submitted(レビュー準備)、Approved(サインオフ)、Rejected(修正が必要)、Exported(給与へ送付)。

所有権は事前に決めておきます。多くの場合、セールスオプスが作成して提出し、セールスマネージャーが取引と分配を承認し、ファイナンスが最終数値を承認してエクスポート前に確認します。ひとりの承認者にするなら、争いに対応できる「イエス」を言える人物を選んでください。

レビュワーが見るべきもの

レビュー画面は素早く疑問に答えるべきです。合計を上部に置き、ドリルダウンを可能にします:

  • レップ・チーム別の期間合計
  • 適用されたルール(率、上限、分配)を示す案件レベルの内訳
  • 例外(製品未マッピング、役割未登録、マイナス調整)
  • 前回ランからの変更点(新規案件、編集された金額、逆仕訳)

もしランが拒否されたら、その理由をコメントで必須にしてください。拒否されたら編集が必要な箇所だけ(製品マッピングやルール選択など)をアンロックし、それ以外は読み取り専用にしてスコープを管理します。

承認を監査可能にする

承認は信頼できるトレイルを残すべきです:誰が承認したか、いつ、どの期間と合計、含まれた案件セットを記録します。承認後に案件が変わった場合、そのランは Draft に戻るか、もしくは「再承認が必要」と明確にフラグを立てるべきです。

例:小さなチームで月次支払を行うシナリオ

コミッションスプレッドシートを安全に置き換える
承認済み期間と調整行を使って、安全にスプレッドシートを置き換えます。
アプリを作成

小さなチームは予測可能に感じられるコミッション計算を望みます。彼らには2名のレップ(Alex と Priya)と1名のマネージャー(Dana)がいて、異なる率の2製品を売ります:Product Alpha は 10%、Product Beta は 6% を支払います。

ある案件には分割があり、レップが関係を所有し、セールスエンジニアがクロージングを手伝います。ルールは単純:コミッションの 70% をレップ、30% をセールスエンジニアに渡します。

4月に起きること:

  • Deal 1:Alex が Product Alpha を $20,000 で販売。Priya がセールスエンジニアとしてサポート(70/30 分配)。
  • Deal 2:Priya が Product Beta を $15,000 で販売。分割なし。
  • 返金:4月18日に Deal 1 の顧客が $5,000 を返金。

4月のドラフト計算(返金適用前):Deal 1 のコミッションは $20,000 x 10% = $2,000。Alex は $1,400、Priya は $600。Deal 2 のコミッションは $15,000 x 6% = $900、Priya に全額支払い。

返金は調整を生みます。返金は Product Alpha の $5,000 なので、調整は $5,000 x 10% = $500。ポリシーが調整を次回支払に適用するなら、4月は確定されたままで、5月に -$500 を 70/30 で分配(Alex -$350、Priya -$150)します。これにより給与の再実行を避けられます。

月末のフロー:

  • Draft:システムは 4 月の支払を計算し、保留中の返金調整をフラグする。
  • Review:Dana が取引、分配、例外を確認する。
  • Approve:Dana がサインオフして期間をロックする。
  • Export:給与用に合計と調整行を含むファイルが生成される。

争いを招く一般的なミス(とその回避法)

ほとんどのコミッションの争いは算数の問題ではありません。2 人が同じ取引を別の定義で見ているときに始まります。

よくある引き金は、簿記上の収益(契約済み)と回収ベース(入金済み)を混同し、どこにも明確にラベル付けしていないことです。ある画面が簿記を表示し、エクスポートが回収ベースを示すと、レップは驚くでしょう。どちらかをデフォルトにして、もう一方は明示的なフィールドとして名前を付けてください。

もう一つ頻繁に起きる問題は、サインオフ後のサイレントな編集です。マネージャーが期間を承認した後に誰かがクローズ日、製品、金額を変更すると、理由が不明のまま支払が変わることがあります。承認済みレコードをロックし、変更は日時付きの調整として扱ってください。

ルールは重複すると争いを招きます。例:「Product A は 8%」と「Enterprise 案件は 10%」の両方が当てはまる場合、明確な優先順位(あるいは積み重ねルール)が必要です。さもないと、同じ案件がレポートを走らせる人によって異なる支払を生みます。

支払時によく出る問題:

  • レポートやエクスポートで収益基準(簿記か回収か)が未定義
  • 承認後の編集を調整で処理せず直接編集すること
  • 優先順位のない重複ルール
  • 端ケースの扱いがない(返品、チャージバック、キャンセル、通貨換算)
  • 給与に合わないエクスポート(社員ID、支払方法、法的主体など)

例:レップが EUR で販売し、給与は USD で支払われ、翌月にキャンセルが起きた場合、案件に元の為替レートを保存し、キャンセルを次期間のマイナス調整とすれば、なぜ数値が動いたのかが明確になります。

給与にエクスポートする前の簡単チェックリスト

給与用エクスポートを生成
承認後に一貫したレポートを生成し、最後の瞬間の数式編集をなくします。
エクスポートを作成

最後のステップが最も多くの問題を生みます。給与に送る前に、正しい人に正しい取引分を正しい期間で支払うかを短く確認してください。

まず、支払ウィンドウを確認します。期間の開始日と終了日が会社の期待と一致し、カットオフルールが明確であることを確認します。「月末の 11:59pm までに closed-won」は「その月に請求書が支払われた」とは異なります。

エクスポート前の短いチェックリスト:

  • 期間日とカットオフ定義(タイムゾーンと猶予期間を含む)を検証
  • 3~5 件の案件を抜き取り確認:製品、役割、率、支払がホワイトボードで説明できるか
  • 異常値のレビュー:マイナス支払、高額支払、製品や担当者が欠けている案件
  • 承認の確認:適切なマネージャーがサインオフしていること、例外に短い注記があること
  • エクスポートフィールドの確認:従業員 ID、支払金額、期間ラベル、明確なメモ(例:「Jan 2026 commissions」)

もし外れ値が見つかったら、簡単な調査として扱ってください。案件レコードを引き出し、適用されたルールを確認し、入力(金額、製品、役割、ステージ、日付)を検証します。疑わしい項目をエクスポートから外す「Hold for review」ステータスがあれば、修正と承認まで除外できます。

次のステップ:ワークフローをシンプルな内部ツールにする

小さく始めて、実際に使われるものを出荷してください。良い最小版は1つの製品グループ、2つの役割(レップとマネージャー)、1つの期間タイプ(月次)です。これで数学、カットオフルール、承認ステップを実証でき、端ケースに埋もれずに進められます。

次に、生データがどこから来るかとどう信頼するかを決めます。多くのチームは CRM や課金システムからインポートし、足りない部分をスプレッドシートで補います。何を選んでも、プロセスに検証を組み込みます。例えば、オーナー、製品タグ、クローズ日が欠けている案件があると期間の提出をブロックするなどです。

軽量なマネージャーダッシュボードは導入を容易にします。意思決定に集中させてください:

  • 期間ごとの保留中承認(件数と合計)
  • レップ・製品グループ別合計
  • 「要対応」リスト(必須フィールド欠損、オーバーライド、例外)

重いコーディングを避けたいなら、AppMaster (appmaster.io) は内部ツールを作る実用的な方法になり得ます:テーブルをモデリングし、支払ランと承認フローを実装し、サインオフ後にエクスポートを生成します。最初はシンプルに保ち、チームが要望するにつれて製品グループや特殊ケース、期間タイプを慎重に拡張してください。

よくある質問

コミッションに使う「earned date」は何が最適ですか?

まず、取引がコミッション対象になる時点を決める単一の主要ルール(例:closed-won 日や請求書の支払日)から始めてください。レポートやエクスポートで一貫して使い、例外は注記付きの明示的な調整として扱い、過去を書き換えないようにします。

給与直前に数字が変わるのをどう止めますか?

エクスポート前に期間をロックします。短い猶予期間(例:1~2 営業日)で欠損フィールドを修正できるようにしてから入力を凍結し、それ以降の変更は次の期間の日時付き調整行として記録するのが簡単です。

製品と役割ごとにコミッションルールをどう定義すべきですか?

読みやすく構造化されたルールにします:役割 + 製品(または製品グループ)+ 計算方法(%、固定、段階)です。人が一文で説明できないルールは、分割して小さなルールにする必要があります。

2つのコミッションルールが同じ取引に当てはまるときはどうなりますか?

各取引行には必ず一つのルールが勝つように、明確な優先順位を使ってください。一般的なデフォルトは:ユーザー固有の上書きが役割ルールより優先、製品固有ルールが「すべての製品」ルールより優先、より新しい有効日が古いものより優先、です。

コミッションは取引全体で計算するべきですか、それとも取引行単位で計算するべきですか?

行単位で計算し、個人にロールアップしてください。これにより、ソフトウェアは%、サービスは固定ボーナスなど、同一取引内の異なるレートが混在する場合でも混乱を防げますし、監査もしやすくなります。

Booked revenue と paid revenue:どちらをコミッションに使うべきですか?

方針を決めて全方位でラベル付けしてください。簿記上の収益(Booked)で払うのは簡単で迅速、回収ベース(Paid)で払うと返金・未回収リスクを減らせます。どちらを選んでも、反転は明確な調整行で扱ってください。

返金、キャンセル、チャージバックはどう扱うべきですか?

返金は過去の承認済み支払を書き換えるのではなく、マイナスの調整として扱ってください。一般的なデフォルトは承認済み月を閉じ、次の支払期間に反転を入れる方法です。元の取引行への参照を残しておきます。

良いマネージャー承認ワークフローはどんなものですか?

小さなステータスセットを使って強制してください:Draft(計算中)、Submitted(レビュー準備)、Approved(数値をロック)、Exported(給与へ送付)。Draft や Submitted からはエクスポートできないようにし、誰がいつ承認したかを記録します。

マネージャーやファイナンスはレビュー時に何を見たいですか?

まず合計を示し、ドリルダウンで取引行と適用されたルール(率、上限、分配)を見られるようにします。例外ビュー(製品マッピングがない、担当者がない、マイナス調整など)と、前回のランから何が変わったかのログも必要です。

重いコーディングなしでこのツールを作れますか?

範囲を小さく保てば可能です:1つの期間タイプ(月次)、いくつかの製品グループ、短い役割リスト。AppMaster (appmaster.io) を使えば、テーブルをモデリングし、支払ランと承認フローを実装し、給与エクスポートを生成することで、重いコーディングなしに内部ツールを作れます。

始めやすい
何かを作成する 素晴らしい

無料プランで AppMaster を試してみてください。
準備が整ったら、適切なサブスクリプションを選択できます。

始める