Multi-entity HRM and payroll with automatic accounting
A custom HRM for an organisation whose staff works across several legal entities: payroll, loans, appraisals, PF, ESI and TDS, recruitment, access control, ID cards and security-gate scanning, with every payroll entry posted to the accounting software automatically.
RESULTDaily HR and payroll admin cut from 1 hour to 5 minutes, about 143 hours saved in 6 months, across several legal entities.
- HRM and payroll
- Accounting automation
- ATS
- ID cards
- Gate scanning
- 1 h → 5 min a day
- Time saved
- ~143
- Hours saved in 6 months
- 12× faster
- Daily payroll admin
- 83
- Domain models
- 141
- Database migrations
- 119
- Test files
- Multiple
- Legal entities
One employee could be paid by one entity, work in another entity's department and borrow from a third. Payroll, statutory deductions and loans were reconciled by hand, the accounts team re-keyed every salary run, and security staff had no reliable way to check who was allowed through which gate.
- Employees mapped to multiple legal entities, divisions, departments and cost centres, with transfers
- Salary sheets, payslips, revisions, ex-gratia grants and labour wage sheets, with approval steps
- Employee loans with EMI schedules and loan requests from the employee side
- Statutory PF, ESI and TDS in the payroll run
- Applicant tracking for recruitment, and appraisals for existing staff
- Role-to-resource access settings, per-entity module switches, a data-access log and passkey sign-in
- ID cards with Aadhaar QR verification, and QR scanning at security gates on Raspberry Pi kiosks
- Payroll vouchers posted into Busy automatically through an accounting bridge
What we built
HRM and payroll
Laravel 12 core covering employees, entities, departments, salary sheets, payslips, loans and EMIs, appraisals, ex-gratia and labour wages, with approvals before money moves.
Statutory compliance
PF, ESI and TDS computed in the payroll run, with per-entity settings so each legal entity files its own returns.
Accounting automation
Payroll and payment slips become Busy vouchers through an authenticated HTTP bridge, with a masters mapping so ledgers line up per entity.
Recruitment (ATS)
Candidates tracked from application to hire, then converted into employee records without re-entry.
Access and ID cards
Roles mapped to resources, module switches per entity and per employee, impersonation for support, passkeys, and printable ID cards with verification logs.
Security gate scanning
A Laravel 13 gate app on Raspberry Pi 4 kiosks scans ID QR codes, checks gate permissions, logs every entry and raises security alerts.
- Busy accounting
- Aadhaar QR verification
- Raspberry Pi kiosks
- Passkeys (WebAuthn)
- Laravel 12
- PHP 8.4
- Laravel 13 (gate app)
- Inertia 3
- Vue 3.5
- Raspberry Pi 4
Client name withheld: the system holds employee personal data, and we do not publish it. Savings: 55 minutes saved a day × 156 working days in 6 months (6-day week) = 143 hours, about 18 eight-hour working days. 60 minutes down to 5 is 12× faster, or 92% less time.
Payroll or ledgers still re-keyed into Tally or Busy?
Tell us which entries your accounts team types twice. You get a written scope, timeline and quote within 3 business days.