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.

Plan & switch. Advanced plan, gated by the attendance and salary permissions — and switched on per business at Settings > Master > Staff Attendance & Payroll. It is off by default for every trade: many businesses are one person, or pay their staff outside the app.

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

A leave type has no paid / unpaid switch, on purpose. A leave day is paid while the staff member is inside the quota and becomes Loss of Pay beyond it — so a type quoted at 0 is simply never paid, which is exactly what “LOP” means. One number says both, and no contradictory pair can be configured.

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
Attendance is the input, the salary voucher is the money, and the payslip is what makes the month readable again afterwards.

Screens

How the pay is worked out

Payable days = present + holidays + paid leave. Loss of Pay days, and days nobody marked, are not paid.

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.

Editing a salary never rewrites a month already paid. Every run stores its own payslip — days, rates, breakdown and net as they stood — so raising someone’s pay in October leaves March reading exactly as March was paid, and a payslip reprints faithfully years later.

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
An advance is a loan against the salary, so it sits on the same ledger and the run clears it.

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:

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.