Attendance & Payroll
Staff attendance in half-days, the leave quotas it spends, and the pay that follows from it. Staff Timesheet captures the days; Salary Run computes the period from each staff member’s pay basis and the days marked; it posts a Salary voucher and a payslip for everyone paid; the HR & Payroll Register reads them back exactly as they were posted.
Turning it on
The switch creates the attendance and payslip tables on every device and on the server. Switching it back off is not destructive — the screens and the syncing stop, and every day already marked stays on disk. That is what the confirmation at save is telling you when it says how much attendance is already on record.
With payroll on, the pay policy appears under the same switch: Track Overtime (off by default — leave it off and attendance stays to present, leave and holiday), Standard Hours a Day (8), Overtime Rate (1 is plain time, 2 is double time) and the leave year start month (April in India). The last one re-slices every leave balance, so it is a setup decision rather than a yearly one.
Where it is in the app
POS page: Vouchers > Staff Timesheet > Attendance · Leave · Holiday · Leave Types · Salary Run, and Reports > Attendance · Leave Balance · HR & Payroll Register. Shells: Staff Timesheet and Attendance Reports under Management. Trades that mark attendance but pay elsewhere get the thinner Attendance group (restaurant, workshop).
Set up once
- The staff member is a contact of type Staff, and their pay basis lives on that record: a monthly salary, or daily / hourly with a wage rate, plus an overtime rate of their own if they have one.
- Leave Types — each type carries an annual quota in days. Six are offered the first time you open the screen: Casual 12, Sick 12, Earned 15, Maternity 182, Paternity 15, Loss of Pay 0. Change the numbers to what you actually grant.
The cycle
flowchart TD
S[Staff record: pay basis
monthly salary · daily / hourly rate · OT rate] --> A
LT[Leave Types: annual quota per type] --> L
L[Mark Leave: staff · dates · type] --> A[Mark Attendance
month grid · first half / second half
present · absent · leave · holiday
OT hours when tracked]
H[Mark Holiday: date · name] --> A
A --> T[(Attendance: one row per staff per day)]
T --> R[Salary Run for the period
payable days · OT · allowances · deductions
advance recovered · loan instalment · net]
R --> V[Salary voucher per staff
amount = gross · paid = net]
V --> X[(Voucher and payslip stored)]
X --> SR[HR & Payroll Register · Salary Register
Attendance · Leave Balance]
X --> PS[Print or WhatsApp the payslip]
ADV[Payment Out: advance to staff] -.-> R
LN[Staff loan instalment falling due] -.-> R
Screens
- Attendance — a month grid of staff × days. Every day is two halves, so a half-day is marked rather than argued about; an absent half carries a type and a reason, and a leave half carries the leave type it spends. Overtime and actual hours appear only when overtime is tracked.
- Leave — book leave for one staff member across a date range; it fills the grid and spends that type’s quota.
- Holiday — business holidays, paid for everyone.
- Leave Types — the quotas the Leave screen spends.
- Salary Run — pick the period. Each staff row shows present days, paid leave, Loss of Pay, holidays, days still unmarked, overtime, the gross it computed, the allowance and deduction lines carried forward from their last payslip, what they owe against advances, any loan instalment due, and the net. Every figure is editable before you post, and anyone already paid for that period is left unticked.
- Salary — a single salary voucher outside a run (a bonus, a final settlement).
- Site Labour & Wages on construction is a different thing: a daily muster at per-day or per-unit rates. See Site Labour & Wages.
How the pay is worked out
Payable days = present + holidays + paid leave. Loss of Pay days, and days nobody marked, are not paid.
- Monthly — the salary pro-rated: salary ÷ days in the period × payable days.
- Daily — wage rate × payable days.
- Hourly — wage rate × hours worked. A day left blank counts as a standard day, so only an unusual day needs its hours typed in.
- Overtime on top: OT hours × the staff member’s own OT rate, or the derived hourly rate × the business multiplier.
- Then the named allowance and deduction lines, and the recoveries below.
A gym trainer also gets a Commission earning line, worked out from the memberships and PT packages they brought in over the period at the rates under Settings > Gym. It is recomputed from those rows each run rather than carried over from last month’s slip, so it always matches the Trainer Earnings report. See Gym / Fitness Centre.
Advances, deductions and loan instalments
flowchart TD
A[Staff asks for an advance mid-month] --> B[Payment Out on their ledger]
B --> C[Their balance is what they owe]
C --> D[Period ends]
D --> E[Salary Run: gross from payable days + OT]
E --> F[Less advance recovered
pre-filled with the whole balance · editable]
F --> G[Less PF / ESI / TDS and other deduction lines]
G --> H[Less a loan instalment falling due]
H --> I[Net payable]
I --> J[Salary voucher: amount = gross, paid = net]
J --> K[Advance cleared · deductions held · instalment settled]
K --> A
The voucher deliberately records more than the cash: its amount is the gross — what the staff member cost you — while the payment is the net that actually left the drawer. The difference stays visible instead of disappearing. The advance recovered clears against their ledger, withheld PF/ESI/TDS lands on a Salary Deductions ledger as something you still owe, and a loan instalment is settled against the loan with no cash leg, because that money was withheld from pay rather than received.
Settings & permissions
Settings > Master > Staff Attendance & Payroll — the switch, and the pay policy under it. Permissions: attendance to mark days and read the attendance reports, salary for the run and for anything showing what everyone was paid. Staff groups under Master > More > Staff Groups (also used by staff commission).
Statutory returns (India)
With Statutory Deductions (PF / ESI / PT) switched on, a Statutory Returns screen appears under the payroll reports for an Indian business. It reads the payslips already posted for a wage month — nothing is re-calculated and nothing is stored twice — and gives the three filings:
- Provident Fund — ECR - the EPFO upload file for the month, against your establishment code. The pension (EPS) share is derived from the employer contribution rather than being a fourth number to key in.
- ESI contribution - the ESIC contribution sheet, employee and employer, for staff inside the gross ceiling.
- Professional tax - a staff-wise summary of the gross and the tax deducted.
Rates, ceilings and the employer codes (PF establishment, ESI employer code and branch, PT registration) live with the payroll settings; the returns screen only reports what those rules already produced.
Reports
Attendance (per staff, per month), Leave Balance (entitled, taken and left for each leave type — counted from attendance every time it is asked, never stored, so an attendance correction shows up immediately), HR & Payroll Register (one row per payslip with the full breakdown, and a month-by-month cost strip), Salary Register, Commission and Staff Points. Payslips print or go out on WhatsApp from the run and from the register.
Salary vouchers posted before payslips existed, and any typed in by hand, still appear: their amount stands in for both gross and net, which is what that amount meant, and the register marks them so you are never shown a breakdown that was only inferred.