Almost every field-service business that pays technicians on commission or tips is running one of four formulas, whether or not anyone wrote it down that way. If you build tools for these businesses, or you're checking a payout by hand, it helps to know all four. Each one below has a worked example and a small JavaScript function you can run. The numbers come from TechSplit's technician commission guide, and the code reproduces them.
The four formulas
| Method | Formula | Example | Result |
|---|---|---|---|
| Percentage | job total x rate | $220.00 x 40% | $88.00 |
| Flat rate | jobs x fixed amount | 3 jobs x $75.00 | $225.00 |
| Tiered | period revenue x the rate for the tier the job count reaches | $1,535.00 x 35% (5 jobs) | $537.25 |
| Flat + percentage | (jobs x base) + (rate x job total) | (4 x $20.00) + (10% x $900.00) | $170.00 |
Tips go on top in every case, either passed through in full or pooled.
The code
const cents = (n) => Math.round(n * 100) / 100;
// 1. Percentage: job total x rate
const percentage = (jobTotal, rate) => cents(jobTotal * rate);
// 2. Flat rate: number of jobs x fixed amount
const flatRate = (jobs, perJob) => cents(jobs * perJob);
// 3. Tiered, whole-period: the tier the job count reaches sets the rate for ALL the period's revenue
const tiered = (jobCount, revenue, tiers) => {
const tier = tiers.find((t) => jobCount >= t.from && jobCount <= t.to);
return cents(revenue * tier.rate);
};
// 4. Flat + percentage
const flatPlusPercentage = (jobs, base, jobTotal, rate) =>
cents(jobs * base + rate * jobTotal);
// Tips go on top
const withTip = (commission, tip) => cents(commission + tip);
The same examples as runnable checks, with a tip added to the first:
const tiers = [
{ from: 0, to: 10, rate: 0.35 },
{ from: 11, to: 20, rate: 0.40 },
{ from: 21, to: Infinity, rate: 0.45 },
];
percentage(220, 0.40); // 88
withTip(percentage(220, 0.40), 20); // 108
flatRate(3, 75); // 225
tiered(5, 1535, tiers); // 537.25
flatPlusPercentage(4, 20, 900, 0.10); // 170
Two conventions that cause disputes
Whole-period vs bracket tiers. The tiered function above uses the whole-period convention: once a technician reaches a tier, that rate applies to every job in the period. The other convention is bracket-style, where each band's rate applies only to the jobs inside that band, like tax brackets. Neither is wrong. Disputes start when the crew assumes one and the owner pays the other, so write down which one applies.
Gross vs net. Gross commission is a percentage of what the job billed. Net commission is a percentage after agreed deductions, such as materials. Here is a $220.00 job that used $40.00 of materials, at 40%:
percentage(220, 0.40); // gross: 88
percentage(220 - 40, 0.40); // net: 72
Gross is easier to check by hand. Net protects margin on high-cost jobs, but it only works if everyone agrees in advance on what comes off.
If you'd rather not build it
TechSplit has a free commission and tip calculator that runs in the browser with no sign-up. It does percentage commission plus tips, and nothing else. Flat-rate, tiered and pooled-tip pay are covered by the $49 payout spreadsheet, which works in Google Sheets and Excel.
This is a shorter, code-focused companion to TechSplit's guide, which has the full explanation and a tip-pooling note.
Top comments (0)