ReferenceSettings & administration

Labor rate scales

Open Settings → Labor Rates in Thermal →

What it's for

Labor rate scales is where you set pay and cost by role and location instead of typing a rate onto every technician. A scale says: this level, at this branch, costs this much an hour — base pay, fully burdened cost, overtime and double-time multipliers, and per diem. Job costing and the payroll export both price labor from here, so the numbers on this screen are the numbers that show up on job profitability.

Reach it from Settings → Organization → Labor rates in the sidebar, at /settings/labor-rates. The Settings breadcrumb at the top takes you back.

Tabs

This screen has no tabs. Everything is on one page: a short explanation of how rates resolve, the table of scales, and the dialog you add or edit them in.

Panels and controls

The page title and a one-line summary of the rule: a technician resolves to a scale by their labor level and branch, and an explicit rate on their own staff record takes priority.

Add rate

Add rate sits top right and opens the same dialog as Edit — an empty one. When your shop has no scales yet, the screen shows an empty state with a second Add rate button in it, so you can start from either.

The scales table

One row per scale, sorted by level:

ColumnShows
LevelThe role or level label you typed, e.g. Senior Tech
BranchThe branch this scale applies to, or Org-wide when it applies everywhere. A scale whose branch has since been removed reads Former branch
Base rateBase pay per hour
Burdened costFully burdened cost per hour
OT / DTThe overtime and double-time multipliers, shown as multiples
EffectiveThe date range this scale applies to. An open-ended scale reads open
ActionsEdit and Remove

Edit reopens the dialog on that row. Remove asks you to confirm first, and tells you what happens: technicians who were resolving to this level and branch fall back to the org-wide scale, or to no rate at all if there isn't one. Job costs already recorded are not touched — a removed scale never rewrites history.

How a technician's rate is worked out

Field by field, not all-or-nothing. For each of base rate and burdened cost:

  1. If that field is filled in on the technician's own staff record, that value wins.
  2. If it is blank there, it comes from the scale matching their labor level — a scale for their own branch is preferred over an org-wide one.
  3. If neither is set, that field has no rate. Job costing marks the line as missing a rate rather than quietly costing it at zero.

Overtime and double-time multipliers always come from the scale.

Only scales in force on the date being costed are considered, so a rate change applies from its effective date forward and old work keeps the rate it was costed at.

What it accepts

FieldFormatRequiredRule
LevelFree text, up to 120 charactersYesBlank is rejected with "Level is required."; over 120 characters with "Level is too long."
BranchPick a branch, or Org-wide (all branches)NoDefaults to org-wide
Base rate ($/hr)Dollars, up to two decimalsYesMust be zero or more — "Base hourly rate must be a positive number." Dollar signs and thousands commas are accepted
Burdened cost ($/hr)Dollars, up to two decimalsYesSame rule — "Burdened hourly cost must be a positive number." This is wage plus payroll taxes, benefits, and allocated overhead
OT multiplierA number, up to four decimalsNoDefaults to 1.50. Must be zero or more
DT multiplierA number, up to four decimalsNoDefaults to 2.00. Must be zero or more
Per diem ($)Dollars, up to two decimalsNoDefaults to 0.00
Effective fromDateNoDefaults to today
Effective untilDateNoBlank means open-ended. Must be on or after the effective-from date — "Effective-until must be on or after effective-from."

Money is stored to the cent and multipliers to four decimals, so a rate you type is the rate that gets used — nothing is rounded on the way in.

Nothing stops you creating two scales for the same level and branch with overlapping dates. If you do, which one applies is not defined — keep one scale in force per level and branch at a time, and close the old one out with an effective-until date before the new one starts.

How to configure it

  • Labor level on a staff record is what connects a person to a scale. Set it under Staff; a technician with no labor level never matches a scale and needs a rate on their own record instead.
  • Per-person rates on a staff record override the matching scale, field by field, as described above. Use them for the exception, not the rule.
  • Branches come from Settings → Organization → Branches. A single-branch shop only needs org-wide scales.
  • Job costing settings decide how the resulting cost is applied to work orders — see Settings → Organization → Job Costing.
  • Rates entered here feed job profitability and the payroll export. Nothing here changes what a customer is billed; that comes from your price book.

Who can see it

  • Owners see Labor rates in the Settings sidebar and can add, edit, and remove scales.
  • Office managers have access to the Settings area, so the screen and its actions are open to them if they navigate directly, even though the sidebar link is shown to owners.
  • Dispatchers and technicians cannot reach Settings at all. Every action on this screen is checked on the server, so the gate holds regardless of what the sidebar shows.

The full role matrix is on Roles & permissions.

On this page