Policy book

The rules the app follows for lateness, payroll runs, holidays, leave and people who leave — each with a worked example and where to set it.

Updated 2026-10-08

Live: 18

Showing 27 of 27

Decided rules

Late

IDLATE-01
RuleGrace decides IF you are late. Lateness counts from shift start.Arrive inside the shift grace and the day is on time, zero late minutes. Arrive after it and the whole grace is lost: late minutes count from the shift start, not from the end of grace. Late deduction bands use the same clock.
Example9:00 shift, 15 min grace. 9:10 → on time, 0 min. 9:20 → late, 20 min (not 5).
Where in the appShifts → grace period. The old Payroll Policy grace field is retired and not read.
StatusLiveDecided 2026-09295807ea 4e9440e5
IDLATE-03
RuleSetting a late day to PRESENT by hand does not forgive the lateA late day that HR changes to PRESENT keeps its late cut. To forgive a late, HR uses the late waiver, so the forgiveness is recorded with a name and a reason.
ExampleLate 287.50 on 13 Sep. HR edits the row to PRESENT → still 287.50 off. HR waives it → 0, and the waiver shows who did it.
Where in the appAttendance → edit row (status); late waiver.
StatusLiveDecided 2026-10-08af938df1 09c45ae8

Payroll run

IDPAY-01
RuleA payroll policy must cover every month you runEach policy has an effective window. A month with no policy covering it cannot be run.
ExamplePolicy ends 30 Sep. The October run stops with "No active payroll policy found for this payroll period." until the window is extended or an October policy is made.
Where in the appPayroll → Payroll Policy → effective from / to.
StatusLiveDecided 2026-10-08
IDPAY-02
RuleAn APPROVED run is lockedProcessing a run approves it. An APPROVED run cannot be reprocessed or recalculated, and an import cannot change it. To change it, HR un-approves it (back to Draft), then presses Process again, which approves it again.
ExampleAugust run approved. Someone fixes an attendance row in September. The August figures stay as approved until HR sets August back to Draft and processes it again.
Where in the appPayroll → Payroll Runs → Edit → status Draft, then Process. The Reprocess button is off.
StatusLiveDecided 2026-10-08af938df1 09c45ae8
IDPAY-03
RuleNo tax rule for the month = 0 tax, with a warningA run whose month has no tax rule deducts no tax and now shows a warning instead of staying silent.
ExampleBangladesh rules end June 2026. A July 2026 run deducts 0 tax and warns "No active Bangladesh income tax rule covers 2026-07, so no income tax was deducted…".
Where in the appPayroll → Tax rules; the run shows the warning.
StatusLiveDecided 2026-10-08e2e4eff4
IDPAY-04
RuleA day with no shift anywhere is not owedWith no shift assignment, the company default shift is used. With no default either, the day is not owed: no absence, no cut, and the payroll preview warns about it.
ExampleEmployee has no shift, company has no default shift, misses Tuesday → no deduction for Tuesday.
Where in the appShifts → company default shift; Shift assignments.
StatusLiveDecided 2026-10-050b08c8aa b2d14b61

Calendar

IDCAL-01
RuleA weekend given working hours is a working dayA weekend day opened with a working-hours day override (DRIFT or MANUAL) counts as a working day. For a make-up Saturday, the right setup is a Holiday row of type "Weekend, office open" (WORKING_DAY).
ExampleSaturday 5 Sep opened as make-up day, employee absent → one absent day cut (575 for a 575 day pay).
Where in the appHolidays → type "Weekend, office open"; Attendance → day overrides.
StatusLiveDecided 2026-10-085490ddce
IDCAL-02
RuleHoliday "Extra pay" is on by defaultA new holiday has "Extra pay" ticked. "Weekend, office open" has it off. Working on a holiday with Extra pay on adds a Holiday Work Pay line, unless the payroll policy's Off-day work pay is "No extra pay".
ExampleEid holiday, employee works → Holiday Work Pay line. Make-up Saturday → normal day, no extra line.
Where in the appHolidays → form → Extra pay; Payroll Policy → Off-day work pay.
StatusLiveDecided 2026-10-06ecb95b0c 4ff51a41

Attendance

IDATT-01
RuleHR edits are marked; device punches leave them aloneWhen an admin edits check-in or check-out, the row is marked overridden. A later device punch or recompute does not overwrite HR's times.
ExampleHR sets check-out 18:00. The device sends 17:40 later → row keeps 18:00.
Where in the appAttendance → edit row.
StatusLiveDecided 2026-10-08ace198f4 b5739a47
IDATT-02
RuleThe server works out the status unless HR picks oneChange only the times and the status is worked out again (PRESENT, LATE, HALF_DAY). Pick a status by hand and it wins.
ExampleHALF_DAY row, check-out moved to 18:00 → becomes PRESENT or LATE by itself.
Where in the appAttendance → edit row.
StatusLiveDecided 2026-10-08958a183c 61d706f8
IDATT-03
RuleNightly absence job: every active company, stops at the last dayEach night every active company gets ABSENT rows for owed days with no attendance. It stops at a leaver's last working day.
ExampleEmployee leaves 18 Aug → no ABSENT rows from 19 Aug.
Where in the appRuns by itself every night; nothing to set.
StatusLiveDecided 2026-10-08667810b5
IDATT-04
RuleStaff who never check in are paid every working dayAn employee set to "Needs to check in" = No is never marked absent: the nightly absence job skips them and payroll counts every working day as worked. Only what HR enters by hand cuts their pay: an Absent or Half day row, and approved unpaid leave. No late cut. Absence rows the job wrote before the switch are ignored. Overtime and holiday pay are unchanged.
ExampleBasic 19,500, no attendance rows in September → paid 19,500 (before: 13 auto-absent days cut it to 10,614.50). HR enters one Absent day → one day is cut.
Where in the appEmployees → edit → Needs to check in. Import Center → Employees → "Needs To Check In" column (blank = Yes).
StatusLiveDecided 2026-10-08

Leave

IDLV-01
RuleA leave that covers no working day is refusedA leave whose dates contain 0 working days (only weekend or holidays) cannot be created or approved. Cancelling an old one still works.
ExampleLeave for Friday–Saturday only → refused.
Where in the appLeave → apply / approve.
StatusLiveDecided 2026-10-0873e64573
IDLV-02
RuleMid-year joiners get a pro-rated quotaA joiner's yearly quota is cut to the months left in the year, on the server and on the "Auto-assign defaults" button. Months are counted in the company timezone, not UTC.
ExampleJoined 9 Jul, yearly Casual 10 and Sick 12 → Casual 5, Sick 6. HR can still edit by hand.
Where in the appLeave balances → Auto-assign defaults.
StatusLiveDecided 2026-10-080964f9dc 07fe41e7

Leavers

IDEXIT-01
RuleUnused SICK leave is never paid out when someone leavesAt final settlement, unused earned / annual / casual leave is paid out. Unused sick leave is not. The rule is the per-type switch in EXIT-02, which is off for sick leave.
ExampleLeaver has 4 sick and 3 casual days left → paid for the 3 casual days only.
Where in the appFinal settlement.
StatusLiveDecided 2026-10-082c120144
IDEXIT-02
RulePer leave type: "Paid out when an employee leaves"Each leave type has a switch that decides whether its unused days are paid at exit. Final settlement pays only types that are paid leave AND have the switch on. New types start with it on; existing types named like "sick" were switched off, and an imported "sick" type comes in off.
ExampleSick: off. Annual: on. Casual: on. A type called "Medical Leave" is paid out until HR switches it off.
Where in the appLeave types → form → "Paid out when an employee leaves" (Yes / No); the list shows "Paid on leaving".
StatusLiveDecided 2026-10-084f39ba36
IDEXIT-03
RuleA leaver's final month is paid onceA payroll run and the final settlement cannot both pay the final month. The run skips or refuses the leaver. If an APPROVED run already covers that month, HR cancels it first.
ExampleLeft 18 Aug. August run approved and settlement also paid 1–18 Aug → that double payment is now refused.
Where in the appPayroll runs; Final settlement.
StatusLiveDecided 2026-10-08d1c8016d
IDEXIT-04
RuleUnpaid loans block delete; settlement recovers themAn employee with a PENDING or OVERDUE loan instalment cannot be deleted. The final settlement recovers PENDING and OVERDUE instalments, and checks loans again at approve — save the settlement to refresh the loan figure.
ExampleLoan 35,000 unpaid → delete refused, the message names the loan and amount.
Where in the appEmployees → delete; Final settlement → save / approve.
StatusLiveDecided 2026-10-08365e300c a7d81db7 8a283009

Things you will forget

F-10A make-up Saturday is a Holiday row, not a shift trick

Enter it as Holidays → "Weekend, office open". A working-hours day override also counts now (CAL-01), but the Holiday row is the setup HR should use.

How a month is paid

  1. 1

    A payroll policy covers the month

    Its effective window includes the whole month. If not, the run stops.

    Payroll → Payroll Policy

  2. 2

    A tax rule covers the month

    Otherwise tax is 0 and the run warns.

    Payroll → Tax rules

  3. 3

    Calendar is right

    Holidays entered, make-up days as "Weekend, office open", Extra pay ticked as intended.

    Holidays

  4. 4

    Attendance is closed

    Missing check-outs fixed, HR edits done, leaves approved or refused — nothing pending in the month.

    Attendance; Leave requests

  5. 5

    Waivers entered

    Forgive a late only with the late waiver, so it is recorded with a name and a reason.

    Attendance → late waiver

  6. 6

    Leavers go through final settlement

    Their final month is paid by the settlement, not the run. Save the settlement to refresh loans.

    Final settlement

  7. 7

    Process payroll and read the warnings

    Processing approves the run. No tax rule, no shift, no policy — each warning is a setup gap, not noise.

    Payroll → Payroll Runs

  8. 8

    Pay what the approved run shows

    Process only when the month is final. To change an approved run, set it back to Draft and process it again.

    Payroll → Payroll Runs