Download StaffRegister

The Android app for owners and staff. Install it, sign up, and your free 7-day trial starts immediately — no card required.

Current release — version 1.2.5

Almost every phone sold since about 2019 takes the standard build. It is less than half the size, so Android's install scan finishes much sooner. The all-devices build below is a fallback for older 32-bit hardware — a browser cannot tell which your phone is, so use it only if the standard build will not install.

All-devices build · 72 MB

Installing outside the Play Store means Android will ask you to allow installs from this browser once. That prompt is expected.

System requirements

Operating system

Android 7.0 or newer

Storage

About 100 MB free

Permissions

Camera for check-in, location for geofenced branches

Version history

Version 1.2.5 (build 43)CURRENT

  • Fixed: employees paid a daily wage were counted absent on the days their branch was closed. Someone who worked every day the shop opened could show four absences for the month in the salary register, in orange, while a colleague on a monthly salary showed none for exactly the same days — and the figure was printed on the payslip and read out in the WhatsApp message. Pay was never affected: a daily wage is paid per day worked, and a closed shop is not a day anyone failed to turn up for. The month-end forecast also stops counting closed days as days that can be earned
  • Fixed: deleting an account did not release its phone number. The number stayed reserved against the account that had been deleted, so signing up again with it was refused — "already registered to another account", against an account that no longer existed. Numbers already stuck this way have been freed
  • The security block screen now offers a link to the official download instead of only closing the app. It appears for a copy that cannot verify itself — including older builds that can no longer check their own signature — and until now it left the phone with no way forward

Version 1.2.4 (build 42)

  • Fixed: some branches could not be saved. Opening a branch, changing anything and tapping Save failed with a permissions error, and the change was lost. Three of the four branches on this account were affected. Editing works normally again
  • Fixed: the app would not open without a working connection. It now opens and stays usable on a weak or missing signal — rosters, attendance history, salary and leave are all readable from the copy already on the phone. Marking attendance still needs a connection, because the face match, the location check and the time all come from the server
  • Fixed: dropdown lists showed only the option already selected. Salary type offered Daily but not Weekly or Monthly, and the same happened to the month, year and branch pickers on the reports and salary screens. Every option is offered again
  • Fixed: an expired staff PIN said the business had not paid its subscription. A PIN issued by an admin lasts 24 hours, and when one ran out the employee was told their workplace's account was inactive, which sent everyone to check the wrong thing. It now says the PIN expired and asks them to have it reset. The reset screen and the new-employee screen now both say the PIN lasts a day, and that an employee who chooses their own PIN never has to have it reset again

Version 1.2.3 (build 41)

  • Groundwork for the Google Play release. A copy installed by the Play Store is now trusted on the strength of the installer itself, rather than a signing fingerprint compiled into the app. Nothing changes for anyone who installed from this site — copies downloaded here are still checked exactly as before

Version 1.2.2 (build 40)

  • Groundwork for the Google Play release. The app now recognises copies signed by Google Play as genuine, alongside the ones downloaded from this site. Nothing changes for anyone who installed from here — this build is not published as a website download

Version 1.2.1 (build 39)

  • Fixed: a QR check-in that was refused — because you were outside the shop's location, or your face did not match — used up the QR code anyway. Every retry then said the code had already been used, which was true but had nothing to do with why the first attempt failed. A refused scan now leaves the code usable, so you can move closer and scan the same one again
  • The QR scanner now tells you why a scan was refused. It used to show "Something went wrong" for every cause — an expired code, a code from another branch, a code already used, standing outside the shop — while the exact reason was available all along
  • Fixed: settings chosen while adding a branch were discarded when it saved. Turning on "staff mark their own attendance" during creation did not stick, and the branch was saved with no attendance method recorded
  • The "How staff mark attendance" options are now shown when adding a branch, not only when editing one afterwards. Options that need the branch location are greyed out until you set one, instead of the whole section being hidden
  • Leave status labels are easier to read

Version 1.2.0 (build 38)

  • Staff can now check for an app update themselves. The Profile tab shows the version you are running and whether a newer one is out, and tapping it installs it. Until now the only notice was the one that appears by itself, and tapping "Later" left staff with no way back to that release

Version 1.1.5 (build 37)

  • Fixed: the staff attendance screen always said "Face + QR scan" even at a branch set to QR + location with no face. The branch setting was working correctly and no photo was being taken — the screen was simply describing the wrong thing. It now names the method the branch is actually using
  • A branch set to "Either" can now offer QR + location (no photo) as one choice and face + location as the other. Previously choosing "Either" forced the face onto both. Marking attendance without the QR still always checks the face — that is what identifies who marked it

Version 1.1.4 (build 36)

  • Fixed: a check meant to spot emulators could mistake a perfectly ordinary phone for one and refuse attendance on it. It was reading the name of the machine that built the phone's software, which says nothing about the phone. Genuine emulators are still refused
  • The app no longer requests an advertising identifier. It never used one — the permission arrived with an analytics library — and it is now removed, so nothing in the app can read a cross-app advertising id

Version 1.1.3 (build 35)

  • Fixed: marking attendance was refused with "Security Block — this application has been tampered with or repackaged". Nothing was wrong with the app or the phone. Our signing certificate changed on 25 August and the check that recognises a genuine copy was not updated with it, so the app stopped recognising itself. It affected every install of versions 1.1.0, 1.1.1 and 1.1.2. Please update — face and QR attendance work normally again

Version 1.1.2 (build 34)

  • Groundwork for the Google Play release. The app now recognises whether it was installed from Play or downloaded from this site, and offers the matching way to update — Play's own update for a Play install, and the download here for everyone else. If you installed from this site, nothing changes for you

Version 1.1.1 (build 33)

  • The notification delivery list can now be cleared from the menu when it gets long. It clears your own view only — nothing is deleted, and "Show cleared messages" brings everything back
  • Delivery records are now removed automatically after 90 days, so the list no longer grows without end

Version 1.1.0 (build 32)

  • New branch option: QR code + location. Staff scan the branch QR and must also be inside the shop's location — no camera and no face check. Set it per branch in Branches → edit → how staff mark attendance. It proves the phone was at the shop rather than who was holding it, so keep the face check on where that matters
  • Fixed: at a branch using QR without the face check, the employee's location was never sent, so the branch location was never actually checked. It is now
  • Attendance records marked by QR now say so. They previously showed only as "the app", which told you nothing when you were looking into a disputed day
  • Staff are now asked for location permission on the QR screen, instead of only on the face screen

Version 1.0.0 (build 31)

  • Fixed: adding a new employee could be refused with "this face already matches" somebody who works with them — a different person each time. The check that stops one person enrolling twice was comparing every face in the shop against a bar meant for a single comparison, so the larger the shop, the more often a genuine new employee was turned away
  • Malayalam is now available, alongside English, Tamil, Hindi and Kannada. Change it in Settings → App Language

Version 2.15.0 (build 30)

  • Fixed: some perfectly normal phones were refused at attendance with "Security Block — attendance cannot be marked on rooted devices". The check that looks for a tampered phone was reading an ordinary part of Android as evidence of tampering. No employee should have been blocked by it
  • Staff sign-in now says when the employee code belongs to a different branch. A device is linked to one branch, and a code from another branch was answered with "those details don't match" — which sent people to check the PIN, the one thing that was right
  • After paying, the app confirms what you bought and until when, instead of returning to the dashboard with no word. Your plan and its expiry date now also sit on the dashboard

Version 2.14.3 (build 29)

  • The plan screen now shows exactly what you will be charged, to the paisa. It rounded the price to whole rupees before adding GST, so the total it quoted could be a few paise under the amount actually taken — and on a very low price it could drop the GST altogether
  • The credit shown when upgrading mid-year is rounded the same way, so the figure on screen and the figure in the payment sheet always agree

Version 2.14.2 (build 28)

  • When a WhatsApp message cannot be delivered, the notification log now says why in plain words — for example that the message type has not been set up in WhatsApp yet — instead of showing the technical error the server received
  • The resend button no longer appears on a message that cannot succeed by being sent again. Those need fixing in WhatsApp, and offering to retry them only wasted your time

Version 2.14.1 (build 27)

  • Face check-in is faster. The blink was often missed and had to be repeated: the camera frames were being processed on the same thread that draws the screen, the detector was searching for faces far smaller than anyone holds a phone at, and the frames were larger than it needs. All three are fixed, and a blink is now recognised from fewer frames
  • The wait after the blink is shorter too. The server that matches the face was starting from cold on the first check-in of the day, which took about three and a half seconds; it is now kept warm and answers in well under a second

Version 2.14.0 (build 26)

  • A branch can now take attendance by QR alone, with no face check and no camera: staff scan the code on your phone and their day is marked. Turn it on per branch under the check-in method. Face + location, which needs no phone of yours, is unchanged and still checks the face — that combination cannot be switched off, because without your QR there would be nothing left to identify who marked the attendance
  • Fixed: saving an employee failed with a permissions error. Every edit was refused; this was introduced in the previous release and is the first thing this one puts right
  • Fixed: a new employee was not always asked to replace the opening PIN taken from their phone number, so a guessable PIN could stay in use
  • Fixed: applying for leave showed a message with a %s in it instead of the date, and the staff member's own leave list could come up empty even though the request had been filed. The list now shows every request with its status — pending, approved or rejected — and says so plainly if it cannot load
  • Fixed: editing an employee could quietly corrupt the count your plan limits are checked against

Version 2.13.0 (build 25)

  • Salary & Attendance is now a register you can read across: one line per employee with days present, days absent, late arrivals, the advance still to be deducted, and what they are due this month. Tap a line for that person's detail, where you now mark their salary paid and can send them a WhatsApp receipt afterwards
  • You can generate salary for the month in progress, not only for a month that has closed. The button names the month it will run
  • Fixed: generating salary failed for every employee and reported it only as a count, with nothing to say why. It now runs, and if an employee cannot be processed the reason is shown
  • Fixed: running salary mid-month counted every remaining day of the month as an absence, and an employee who joined mid-month was marked absent for every day before they were hired. Both appeared on the payslip and in the WhatsApp receipt
  • Fixed: an approved leave dated in the future was paid before it was taken, so one day worked could show two days' pay
  • Approving leave now asks whether it is paid or unpaid. Unpaid allows the day off without pay and leaves the employee's leave balance untouched
  • An employee's profile now shows whether they are still using the PIN you gave them or have chosen their own, and lets you reset it in one tap — the answer to an employee who has forgotten theirs. The new PIN is shown to you once
  • Fixed: editing an employee removed the setting that makes them replace the PIN you issued, so a temporary PIN stayed valid indefinitely
  • Adding an employee asks for the PIN once. It is filled in from the last five digits of their number, so there is nothing to confirm and no button to press
  • The employee profile header has been redesigned, and advances are described as given and deducted rather than owed and recovered

Version 2.12.0 (build 24)

  • A branch can now take attendance with face and location alone, without the shop QR code. This is off everywhere until you switch it on for a branch, and it can only be switched on for a branch that has its location set — the app explains what the branch gives up before you confirm, because a record taken this way rests on the employee's own phone rather than on your screen
  • A branch can now ask staff to confirm they are at the shop when they check OUT, the same way they do when they check in. Until now anyone could close their day from anywhere, and overtime is worked out from the check-out time. If the confirmation cannot be done, the day is still recorded and the hours worked are still paid — only overtime past shift end is left out, and you can restore it. Also off until you switch it on per branch
  • This update is required. Please install it to keep using the app

Version 2.11.0 (build 23)

  • Everything that talks to our servers is now noticeably faster. The app's server functions have moved to a data centre in India, next to the database they read — they were previously running in the United States, so every action crossed to America, then to Mumbai and back, several times per request. Signing in, adding an employee, adding a branch, face check-in and salary all benefit
  • This update is required. The previous version talks to the old servers, which have been retired

Version 2.10.3 (build 22)

  • Adding an employee, adding a branch and staff sign-in are all substantially faster. The server functions behind them were being started from cold on first use, which added several seconds to whatever you were doing — they are now kept warm. Saving an employee also does two of its steps at the same time instead of one after the other
  • Fixed: creating a shop showed no loading indicator. The spinner was being drawn behind the shop form rather than on top of it, so there was nothing on screen between tapping Save and the shop appearing

Version 2.10.2 (build 21)

  • Fixed: staff sign-in could fail with "we couldn't sign you in" while every code looked correct. The message named only the employee code and PIN, so anyone who had mistyped the company code was sent to check the wrong field. It now asks you to check all three codes, and says plainly that your company code is often not the same as your store code even when they look alike
  • Fixed: "Use current location" could place a branch up to a kilometre from where you were standing. If location permission was granted as "Approximate" rather than "Precise", Android rounds the position deliberately — the app now asks for Precise and explains why, instead of silently saving the rounded point as your branch
  • Login details sent over WhatsApp now include the company code and store code alongside the employee code, so a new employee can sign in by typing them when no Setup QR is to hand. The PIN is still never included
  • Face check-in now reports the result of the blink check it already performs, instead of always reporting that it passed

Version 2.10.1 (build 20)

  • The staff sign-in screen now says plainly that there are two ways to link a device — scan the Setup QR your administrator shows you, or type the three codes they give you. The heading previously mentioned only the QR, so the button for typing the codes read as though it were not meant for you
  • Tamil: the guidance shown while the camera is looking for a face is now translated
  • Fixed: in Tamil, the staff sign-in screen still showed employees the setup instructions meant for their administrator. Those were removed from the English screen some time ago and should have gone from Tamil at the same time

Version 2.10.0 (build 19)

  • The sign-in and create-account screens have been rebuilt around labelled fields, so you can see what each box is for before you type in it. GSTIN and PAN now show the format they expect instead of rejecting you after the fact, and only the fields that are actually required are marked with an asterisk
  • You can switch between English and Tamil from the sign-in screen itself. It used to live only in Settings, which sits behind sign-in — so someone who reads only Tamil had to get through an English screen to ask for Tamil
  • Tamil is now complete across the whole app, and buttons grow to fit a longer Tamil label instead of clipping it
  • Your branch's store code is now shown on the shop list, on each employee's profile beside their employee code, and in the login QR — all copyable. It is half of what an employee types to sign in, and until now it appeared only inside the edit-shop form
  • Fixed: adding an employee could say the employee could not be created, and then create them a few seconds later. Two different counts of your roster disagreed; the app now uses the same one the server does, and recovers properly if the reply is lost on a weak connection
  • Fixed: messages at the bottom of the screen appeared underneath the navigation bar on the attendance, dashboard, reports and employee screens
  • Face enrolment now shows a large confirmation after each photo and a clear finished state, and tells you what to change — move closer, hold steady, more light — while the camera is still looking rather than after it gives up
  • The prompt asking where to send referral rewards no longer appears after you create your first branch. You can still add or change it any time from the Referrals screen

Version 2.9.1 (build 18)

  • The free-trial countdown on your dashboard now opens the plan screen — tap it to see the three plans, what each covers, and to move up. Previously the only way to reach it was Settings, or waiting until the trial had already expired
  • Settings now tells you whether the app is up to date, and updates it when you tap. Before this, if you dismissed an update notice once it never came back
  • Fixed: staff screens asked for a "4-digit PIN" in several places while the app accepts 4 to 6, and the opening PIN it issues is 5 digits — employees were being told their working PIN was the wrong shape
  • Employee and branch limits are now applied when the record is created rather than checked just before, so a plan's limits hold exactly even if several people are added at the same moment

Version 2.9.0 (build 17)

  • The staff home screen now leads with today's status — marked or not marked, in colour, at a size you can read at arm's length — with the check-in button right beneath it instead of below a list of details
  • Staff sign-in no longer shows employees the administrator's setup instructions. Those belong to whoever is holding the admin phone, and they are still in the "What is this?" panel
  • An employee's leave balance now appears on their profile, so you can see what is left before you approve a request rather than after
  • Fixed: an employee's profile counted the rest of an unfinished month as absence. Someone who joined this morning showed as absent for the whole month at 0% attendance. It now counts only the days that have happened, and only from their joining date
  • Fixed: staff screens asked for a "4-digit PIN" while the app accepts 4 to 6, and the opening PIN it issues is 5 digits. Employees were being told their working PIN was the wrong shape
  • Fixed: the dashboard counted attendance records rather than people, so anyone with two records that day was counted twice in Today's Present
  • Fixed: the Late figure showed a confident 0 when no branch had shift times set. It now shows a dash, because there is nothing to measure until a shift exists
  • A device can be linked by typing the company, store and employee codes when no Setup QR is to hand
  • Tamil now has its own text sizing, so longer Tamil labels stop wrapping and pushing rows out of line

Version 2.8.0 (build 16)

  • Each branch now sets its own working days. Shops that trade seven days, or close on a day other than Sunday, were having salary divided by the wrong number of days — this corrects it from this month onward, leaving past months exactly as they were paid
  • A new Salary Due screen: swipe through your employees to see what each is owed right now — days worked, the day rate, any advance being recovered, and the take-home figure that leaves
  • Marking a salary as paid can now be undone. It asks for the admin PIN in both directions and keeps a record of who changed it and why. Previously a tap on the wrong row could not be taken back
  • Employee contacts can be copied on check-in, check-out, late and absent alerts, chosen per contact. Salary and leave are never shared
  • You can record a GPay number or UPI ID for referral rewards, and one per employee for salary
  • Creating a branch now says plainly what is switched off if you skip the shop location or the shift times, instead of leaving them quietly disabled
  • Fixed: the salary preview on an employee's profile divided a monthly wage by the calendar days in the month rather than the days they were rostered, showing a figure about 16% below the real one

Version 2.7.0 (build 15)

  • Admins can correct a day that was recorded wrong — present or absent — using the admin PIN. The original record is kept, along with who changed it and why
  • Half-day leave, and a way for staff to record leaving early in an emergency without losing the hours they did work
  • Salary is now worked out in one place, so the breakdown on screen matches what is paid. Staff with an open advance may see a lower net figure, because the repayment is no longer counted twice
  • The dashboard shows how many people are in the shop right now, separately from the day's attendance, and the activity feed covers the last 24 hours instead of emptying at midnight
  • Monthly reports no longer count a new employee absent for the days before they joined
  • New employees are given an opening PIN they already know, and are asked to change it at first login
  • Branch location checks are now enforced when marking attendance
  • Announcements and holidays can be published to staff
  • Fixed: on two screens the toolbar sat underneath the status bar, so part of the back button did not respond

Version 2.6.2 (build 14)

  • Staff now see a clear explanation when their employer's subscription has lapsed, instead of an error they cannot act on
  • Admins can enter attendance for days missed while a subscription was lapsed
  • Admins can check out an employee they marked present by hand
  • Employee and company codes are now guaranteed unique
  • A failed staff login or QR scan now says why
  • Clearer trial countdown, and stronger PIN rules

Version 2.6.1 (build 13)

  • Fixes an update check that could hold the app on the update screen

Version 2.6.0 (build 12)

Version 2.5.0 (build 11)