Pay Profiles
Per-employee payroll settings — hourly rate, overtime rules, break defaults, employee code. Feeds the pay-period CSV.
Pay Profiles
A pay profile is one row per employee that tells the payroll engine how to turn their approved hours into money. Without a pay profile, an employee can still clock in and out, but their gross-pay columns in the pay-period CSV will be zero.
The page lives at Time & Payroll → Timesheets → Pay Profiles. Admins and fleet managers only.
Setting up a profile
Click New profile in the header. Fill the dialog:
Basics
| Field | What it does |
|---|---|
| Employee | The user this profile applies to. One profile per employee per tenant. |
| Pay type | Hourly, Salary, or Not on payroll. Only Hourly produces gross-pay figures in the CSV today. |
| Currency | 3-letter ISO code (EUR, USD, GBP…). Included verbatim in the CSV. |
| Hourly rate | Pay per hour in the currency above. Drives every monetary column. |
| Annual salary | Reference only — payroll always uses the hourly rate. Put the full-time salary here if it's useful for your own records. |
| Employee code | Optional external ID for your payroll tool (e.g. the Gusto employee number). Emitted as-is in the CSV. |
| Default break (minutes) | Length of the unpaid break you expect for a standard shift. |
| Auto-deduct default break | Switch. When on, every completed clock-out has this many minutes applied as break_minutes, regardless of what the worker did. When off, managers set break per entry. |
Overtime
The OT rule is weekly threshold + multiplier. Hours above the threshold in a calendar week are paid at the multiplier.
| Field | Typical value |
|---|---|
| Overtime starts after (hours / week) | 40.00 (US / EU common baseline) |
| Overtime pay multiplier | 1.5 ("time and a half") |
Double-time (optional)
Leave the threshold blank and double-time is off entirely. If set, hours beyond this weekly threshold pay at the double-time multiplier.
| Field | Example |
|---|---|
| Double-time starts after (hours / week) | 48.00 |
| Double-time pay multiplier | 2.0 |
Thresholds are weekly and reset every ISO week (Monday – Sunday). The payroll engine splits each entry into the correct bucket in order of clock-in time. Daily overtime (e.g. California's "over 8 per day") is not currently supported — open a support ticket if you need it.
Worked examples
1. Standard 40-hour week, 10 hours of OT
- Rate
€15.00, OT threshold40, OT multiplier1.5. - Employee works 50 hours in a week, all approved.
| Bucket | Hours | Pay |
|---|---|---|
| Regular | 40 | 40 × 15 = 600.00 |
| Overtime | 10 | 10 × 15 × 1.5 = 225.00 |
| Gross | 50 | 825.00 |
2. Double-time kicks in
- Rate
€20.00, OT threshold40, OT multiplier1.5, DT threshold48, DT multiplier2.0. - Employee works 52 hours.
| Bucket | Hours | Pay |
|---|---|---|
| Regular | 40 | 40 × 20 = 800.00 |
| Overtime | 8 | 8 × 20 × 1.5 = 240.00 |
| Double-time | 4 | 4 × 20 × 2.0 = 160.00 |
| Gross | 52 | 1200.00 |
3. Break auto-deduct
- Rate
€15.00, default break30, auto-deduct on. - Two 8-hour shifts →
480 + 480 = 960raw minutes logged. - Server sweeps in
30 + 30 = 60break minutes on clock-out. - Payable minutes across the shifts:
960 − 60 = 900= 15 h. CSV row showsRegular Hours = 15.00,Break Hours = 1.00.
Editing a profile
Click any row in the list to open the edit dialog. Fields are identical to the create form except Employee is locked — one profile per employee per tenant. Changes apply prospectively: already-locked pay periods don't recompute.
Deleting
The trash icon on a row removes that profile. The employee stays but future pay periods won't include them in the CSV until a new profile is created. Existing locked pay periods aren't affected — their rows were computed at lock time.
How the list table maps to the profile
| Column | Profile field |
|---|---|
| Code | employee_code |
| Pay type | pay_type |
| Rate | hourly_rate (or salary_annual / year, if hourly is blank) |
| Overtime after | overtime_threshold_weekly in hours |
| Overtime × | overtime_multiplier |
| Break | default_break_minutes, with " auto" appended when auto-deduct is on |
Permissions
- Admin — every action.
- Fleet manager — every action.
- Regular users — can fetch their own profile only via
GET /api/{tenant}/user-pay-profiles/{userId}; the UI doesn't expose that yet.
Related
- Pay Periods — where profiles feed the export.
- Review Timesheets — approvals on the entries that get weighted.
- Time Tracking (employee) — the clock-in/out page.