How Shiftavo picks an hourly rate#
For: Manager | Admin You’ll need: Nothing.
When payroll, the labor-cost report, or “My earnings” needs to know what to pay a person for a shift, Shiftavo walks a three-step cascade and uses the first rate it finds. This article documents that cascade so you know exactly where to set (and where to override) someone’s pay.
The cascade#
For any worked shift, Shiftavo checks these three sources in order and uses the first one that has a rate:
MLP rate — the ‘Hourly rate’ field on the person’s MLP entry for the shift’s location and position. Set this when one person earns a different rate at one (location, position) pair — for example a server who is paid more when she covers the bartender shift at the flagship store.
Person rate — the ‘Hourly rate’ field on the person’s profile. The most common case: this is what you set when you first add someone.
Employment-type rate — the ‘Default hourly rate’ field on the employment type. Use this for “all our weekend juniors are on CHF 18.00/h” cases — set it once on the employment type and skip filling it in per person.
If none of the three is set, the shift’s pay computes as zero. Reports won’t error, they’ll just show CHF 0.00 for the row.
Note
The MLP rate is keyed by (person, location, position) — three dimensions, matched strictly. The same person can earn one rate as Server at the Zürich store and a different rate as Bartender at the same store. There’s no fallback across positions: if the shift’s exact (location, position) pair has no MLP rate set — or the shift has no position assigned at all — Shiftavo skips MLP and falls through to the person-level rate.
A zero MLP rate is treated as a deliberate override (the shift earns nothing), not as a missing value. To make Shiftavo fall through to the lower levels of the cascade, clear the MLP rate field instead of setting it to 0.
The person-level and employment-type-level rates work the opposite way: a 0 at those levels is treated the same as an empty field, and Shiftavo moves on to the next level. Only the MLP override gives you a deliberate zero-pay rule.
A worked example#
Sara is on the employment type ‘Part-time 20h’, whose ‘Default hourly rate’ is CHF 18.00. Her person ‘Hourly rate’ is CHF 22.00, and one MLP entry — Zürich × Bartender — carries an override of CHF 28.00. Every other entry has no rate.
Shift |
Rate |
Why |
|---|---|---|
Zürich, Bartender |
CHF 28.00 |
Exact MLP match. |
Zürich, Server |
CHF 22.00 |
No rate on that entry — falls through to the person rate. |
Basel, Bartender |
CHF 22.00 |
The match is a strict three-way — the Zürich override never reaches Basel. |
Clear Sara’s person rate and those last two shifts pay CHF 18.00 (employment type); clear that too and they pay CHF 0.00. The zeros differ: an MLP rate of 0 is a deliberate zero-pay rule — the shift pays CHF 0.00 — while a 0 at the person or employment-type level counts as empty and falls through.
Why this order#
Each level overrides the one below. The pattern lets you:
Set a sensible default once on the employment type (“juniors get CHF 18.00, seniors get CHF 25.00”).
Override at the person level when someone has been promoted but their employment type hasn’t changed.
Override again at the MLP / location level for one person at one site, without affecting their pay anywhere else.
Each higher level is more specific, so it wins.
Set or change a rate#
MLP rate — open the location and, in the right-hand ‘Assignments’ panel, click the person’s entry and edit ‘Hourly rate’. See Edit a single MLP entry.
Person rate — open the person at Company → People and edit the ‘Hourly rate’ field. See Edit a person.
Employment-type rate — open the employment type at Company → Employment types and edit the ‘Default hourly rate’ field. See Employment types.
See which rate was applied#
The rate doesn’t show on the calendar or shift form — it surfaces in money columns:
Payroll summary — totals per person per pay period.
Payroll detail — per-shift detail with the applied rate.
Labor cost — totals per location.
My earnings — what the person sees for their own shifts.
If a rate looks wrong on a payroll row, walk the cascade above starting at level 1.
Common pitfalls#
Forgot to set any rate. The shift pays CHF 0.00 and the row sits silently in payroll. Set a rate on either the employment type or the person.
MLP rate set on the wrong (location, position) pair. Because the MLP rate is matched strictly, an MLP override at (Zürich, Bartender) is invisible to a shift at (Zürich, Server). If you want the same rate to apply to every position the person works at a location, set the rate on the person record instead.
MLP rate set to 0 when you meant “use the person rate”. A zero MLP override is treated as a deliberate zero-pay rule, not as missing data — the shift will pay CHF 0.00 and the cascade won’t fall through. Clear the field instead.
Person or employment-type rate set to 0 expecting it to apply. At those two levels a 0 is treated as missing — Shiftavo moves on to the next level. To enforce a zero-pay rule for one person at one (location, position) pair, set the MLP rate to 0 instead.
Currency mismatch. All rates are in the company currency from the general settings. Check it if the numbers feel an order of magnitude off.
Verify it worked#
Open Reports → Payroll detail and find one of the person’s shifts. The rate on that row is the one the cascade above predicts for that person, position and location — and if it isn’t, the level you expected to win has no rate set.