Commissions as a domain, not a spreadsheet.
Rule engine with preview mode, multi-tier quotas with graduated accelerators, territory splits, automatic clawback on credit notes. Configured as code — not as an Excel formula.
Calculated on the base your business actually uses
- Revenue. Percentage of invoiced amount. The simple case; appropriate when margin is even across products.
- Gross margin. Percentage of (price – cost). Prevents reps from selling high volume of low-margin product. Requires the costing engine to have calculated COGS per line at invoice time.
- Volume. Flat per-unit fee. Appropriate for commodity products where price varies little.
- Pay-on-collection. Commission is calculated when the invoice posts but paid only when payment is recorded. Protects against invoices that become bad debt — common in LATAM.
Graduated tiers, not all-or-nothing
The model is multi-tier with graduated accelerators and decelerators. A typical quota configures four attainment bands with different multipliers. The rep sees their projection on their dashboard; the manager sees team aggregation.
- Tier 1: below-quota decelerator. 0–80% attainment applies a multiplier under 1 (e.g., 0.75×). The rep still earns but at reduced pace — clear signal without pulling commission entirely.
- Tier 2: base rate. 80–100% attainment applies 1.0×. The standard operating band.
- Tier 3: first accelerator. 100–120% applies a higher multiplier (e.g., 1.25×). Rewards effort above the line.
- Tier 4: second accelerator. 120%+ applies a top multiplier (e.g., 1.5×). For overperformers.
- Tiers are configurable. The number of bands, the attainment percentages and the multipliers are defined per plan. The above is the suggested default, not the hardcode.
The quota metric can be revenue, volume, gross margin or new customers — matched to the plan type.
A nightly Hangfire job stores results in CommissionQuotaHistory for trend analysis.
When two reps touch the same customer
- Territory rules evaluated in order. Most-specific first. A customer assigned to a specific rep wins over the regional rule.
- Structured splits. A sale can split between primary rep, secondary rep and manager at configured percentages. No side spreadsheets of "who gets what."
- Assignment at invoice posting. Territory is computed at post time; commission is assigned against that snapshot. Later territory changes don't rewrite history.
- Overrides logged. The
Sales.OverrideCommissionSplitpermission allows manual adjustment, but the change lands on the compliance dashboard. Explicit dispute audit trail.
Monthly cycle with protection
- Configurable hold period. Commission accrues but does not pay until the hold elapses (typically 30–60 days) — protects against returns.
- Structured review. Finance reviews the run, approves or adjusts, and exports. Never pay without approval.
- Automatic clawback. A return credit note automatically reverses the related commission. If the rep already drew it, the balance goes negative and nets against the next cycle.
- Per-rep statement. Report showing deals, quota attainment, gross commission, clawback, net commission. One page — zero disputes.
- CSV export to payroll. The approved cycle exports in a configurable format — integrates with external payroll without custom code.
The part nobody else does
CommissionRules is an elevated entity in the control plane — versioned, with a test mode. When you
change a rule, you can run the engine against last period's real data without posting anything. The report shows
exactly what changed: who earns more, who earns less, what the change costs.
- Preview mode. Runs the rule in simulation against real data. Doesn't hit GL or the rep dashboard.
- Rule versioning. Every version is immutable. Once published, historical calculations use the rule in effect at post time.
- Waterfall report. Per-deal contribution to quota attainment. Critical for dispute resolution — shows exactly which sale moved the rep into the next tier.
What this looks like outside cifraHQ
| cifraHQ Enterprise | Spreadsheet | |
|---|---|---|
| Rule engine | Versioned with preview mode | Formulas copied every month |
| Accelerators | Multi-tier per plan, configurable | Nested IFs prone to error |
| Territory splits | Prioritized rules, logged | Manual table, easy to forget |
| Clawback | Automatic on credit notes | Manual post-factum adjustment |
| Audit evidence | Immutable via AuditEvents | XLSX file anyone can edit |
Commissions demo with your real plan
Bring the last cycle you ran in spreadsheet; we recreate it with the engine in one session.