DEV Community

TechSplit
TechSplit

Posted on Originally published at techsplit.net AI-assisted

How to calculate technician commission: four formulas, with code

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);
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)