Module · Roster & timesheets
Where to find it in the app
- Use it: Time & pay → Roster & timesheets
- Turn it on/off: your business name (top-left) → Settings → Modules → Time & pay → Roster & timesheets
Plan: Solo and Business · Module group: Your team · Navigation:
Time & pay → Roster & timesheets
1. Overview
Purpose. Build the weekly staff roster, let staff clock in/out, and turn the result into timesheets you can approve and export for payroll. It understands regular shift patterns, days off, business closures and casual shifts, and it respects approved leave.
The time clock is shift-aware: clock-ins are checked against the rostered shift, so you can capture lateness, missing clock-ins and blocked attempts, and the app can auto-close a clock-out someone forgot. The clock is a separate on/off switch from this module (see §6a), you can run the roster without the clock, and you do not turn the clock off by turning the Roster module off.
2. When to use it
- To schedule who works when, by shift type.
- To capture worked hours and prepare payroll.
3. Required permissions
- View the roster (
roster.view). - Build / edit the roster (
roster.manage). - View timesheets (
timesheets.view). - Edit / approve timesheets (
timesheets.manage).
4. Navigation path
Time & pay → Roster & timesheets
5. What you'll see
- A weekly grid of staff × days, with This week and week navigation.
- Shift blocks showing the shift type; regular patterns appear automatically, with day-off overrides and business closures marked.
- Controls to add a casual shift (including a typed name for a one-off).
- A timesheets view to review worked hours, approve the week, adjust any single day (or a whole week in one press), and Export payroll CSV.
- An attendance read in Timesheets: on-time %, lateness, missing clock-ins and blocked clock-in attempts for the week, plus a Time in lieu (TOIL) running balance per person. Auto-closed clock-outs are flagged for you to confirm.


6. Turning it on
Settings → Modules → Your team → Roster & timesheets. Set your staff up in
Team → Staff list; their regular patterns and any closures flow into the grid.
6a. The time clock is a separate switch
The clock in/out feature has its own on/off switch, separate from this module: Settings → the "Team" tab → the "Time clock" card → "Use the time clock".
- Turn the clock off there if you don't track hours this way, the roster still works. Turning the Roster module off is not how you turn off clocking, and is a common mix-up.
- Solo (one-person) accounts hide the clock automatically.
- Just below the toggle are the clock-in rules, see §7b.
7. Step-by-step tasks
7a. Build the roster
- Open
Time & pay → Roster & timesheetsand pick the week. - Add or edit shifts per person, setting the shift type (e.g. Floor,
Kitchen). Shift types are listed in
Settings → the "Team" tab. They say what a shift is for, and give nobody any access. - Regular patterns pre-fill; use a day-off override where someone isn't working, and add casual shifts as needed.
- Business closures (e.g. a public holiday or training day) block the day. A public holiday you open on stays a public holiday for pay without blocking anything: see section 7c-iiic.
A shift, or a row of regular hours, whose finish is the same as its start, whose times do not read, or whose unpaid break is as long as the shift, is refused with the reason. For somebody paid from the roster, a finish the same as the start would otherwise count as a 24 hour shift.
A closure is whole days, for the whole business. It also tells the roster you are shut. To hold back one room, one thing you offer, or part of a day while the team keeps working, block it out on the Calendar instead. See Calendar.
Changing somebody's standard week changes the roster ahead of it. Regular hours
flow into the roster as many weeks ahead as you choose at the top of the
Regular hours tab. When you edit somebody's standard week, the shifts already
sitting on those upcoming weeks are re-made to match, and the save tells you how
many moved. Three things are deliberately left alone:
- Today and anything past. It may already be worked, and paid.
- Any shift you have edited by hand. Once you change one day's hours, move it, or hand it to somebody else, it is yours, and no change to the standard week will overwrite it.
- Casual shifts and days off. They were never made from a standard week.
If a week you already published changes, publish it again. The save says when that has happened, and the roster keeps saying "Changes have been made. Re-publish to let them know" until you do. Re-publishing reaches only the people whose own shifts moved, so a change to one person's standard week does not email the whole team. See §7a-iv.
With auto-fill set to Off (manual), nothing is added or removed: the roster is yours to build, so saving a standard week leaves the upcoming weeks exactly as they are.
Who appears on the grid. Everyone with regular hours appears every week. Casuals and temps appear in weeks they have a shift, regular hours, a date they have marked available or unavailable, approved leave or an on-call marker, and are otherwise folded away, with a line above the grid saying how many and a Show everyone link that remembers your choice. A business with nobody on regular hours never folds anyone: the fold is for tucking a bench of casuals behind a core team, and with no core team it would hide the people you are there to roster. Whoever builds the roster can also choose Always show everyone, which applies to the whole business, and change it back from the same place.
Availability warnings. The grid knows each person's stated weekly
availability plus any date-specific casual exceptions (a casual marking a
particular day off or open), and it flags a shift you drop on a time someone
said they can't work, so you can rethink it or go ahead. Casuals set their
date-specific availability with a per-business notice period you configure at
Settings → Team.
When a casual marks a day unavailable. They do it from their My work page, with an optional note, and it needs no approval. You are told straight away: an email to whoever builds the roster ("Anna is unavailable Wednesday 21 October"), and a line in the bell that opens the right week. On the roster that day carries a red Unavailable block, and their row is drawn for that week even if nothing is rostered. Click the block, or an On leave or Needs cover tag, and a small panel says who, which day, the reason they gave, and where to act. If a shift is already on the day the block turns solid and says Shift conflict. Under the week arrows a one-line Who's away strip counts this week and the days ahead, and its button opens a Who's away panel: unavailable days, approved leave and shifts needing cover from today, one collapsed line per person, a window of the next 2 or 4 weeks or everything, and a name search. Click a date there to jump to its week. Each day header also shows how many people are away that day. The Calendar's staff views show the person as away with "Unavailable". A casual marks their own days, and when one tells you in person instead, you can mark it for them (§7a-v). Approved leave still comes through Requests.
Nothing the roster fills in by itself lands on an unavailable day. The weeks it fills from regular hours, Publish, Copy last week and Clone all leave that day empty, and say how many shifts they left off. A shift you add by hand is your call: the panel warns you that they are unavailable, and lets you go ahead.
7a-i. Somebody calls in unwell, goes home early, or takes leave on the day
You don't need them to fill anything in. Open their shift on the roster and press Record leave. Pick the leave type, choose Whole day or Part of the day, then press Record leave again.
Which leave. Your personal / carer's leave is chosen first, because it is the usual reason. The list holds every leave type that person can take, each marked Paid or Unpaid for them, so a casual sees only the types open to casuals. Choose time in lieu for somebody you are letting go early against hours they are owed: the panel shows what is in their bank and refuses to spend more than that. Annual leave agreed on the day, compassionate leave or unpaid leave work the same way.
Whole day, for somebody who is not coming in. One action does the whole phone call:
- the leave is recorded on their behalf, of the type you picked, paid or unpaid by their employment type, marked as entered by you,
- their shift is cleared for that day, they drop off the kiosk's clock list, and their day closes to new bookings,
- any customer bookings with them that day are listed right there, each with a Reassign button offering only colleagues who genuinely have that time free. Moving several across different times or days? The link underneath opens their calendar day, where Move day refits the whole list for you,
- and they get one calm email saying it's recorded and there's nothing they need to do.
Part of the day, for somebody who came in and is going home, or who comes in late. Set From and To. While their shift is under way the panel opens on Part of the day, from the time now to the end of their shift, so for somebody going home there is nothing to change. The hours must sit inside their shift and stop short of all of it; all of it is the whole day.
- The leave is recorded for those hours only, and the shift stays on the roster, because they worked the rest of it. The roster shows the leave's hours beside the shift, and so does their own My work.
- Those hours close to new bookings, and only the bookings inside them are listed for Reassign.
- If they are still clocked in, the panel says so, with a Clock out at button that closes their punch at the time they left. It needs the manage timesheets permission; without it, the panel says who can.
- Time in lieu spends what the day's pay counts as leave. Rostered 9 to 5 with a half hour lunch, somebody let go at 12:30 never took the lunch, so the afternoon is 4 hours of leave and 4 hours come out of their bank, not 4.5.
- They get the same one email, giving the hours.
Paid leave then flows through to pay on its own: the Timesheets grid shows the day as LV with the hours it covers, the weekly total says "incl leave", and the payroll export carries it as its own earnings line under its own type (for example "Personal / carer's leave, 8.00") so your bookkeeper keys it at the right rate. A day can hold two kinds, an appointment on annual leave in the morning and home unwell in the afternoon, and each is paid and filed under its own type. Part of a day is paid beside the hours they worked: see Approved leave on the timesheet.
What is already on file. If they had already requested that whole day off as the same type, the button approves their request instead of double-recording it, and a day already covered by approved leave of the same type is left alone. Leave of another type over the day, or over those hours, is refused, saying where to change it: somebody on annual leave who falls ill takes personal leave instead (Fair Work Act s 89), which means cancelling that day of annual leave on the Leave page first. Anything else on file for them that day, such as leave for an appointment or a request still waiting, is listed afterwards with a link to the Leave page. Where payroll also signs off leave, those hours close to bookings once payroll has signed. A shift that runs past midnight can only be recorded as a whole day.
A finalised pay week. If that day's pay week is already finalised, the panel says so: the leave is not in that week's pay until you unfinalise the week on Timesheets and finalise it again.
It needs both the approve leave and manage roster permissions, so owners and managers have it out of the box. Part of the day works whether or not your staff can request part-day leave themselves. Nobody records leave for themselves, the same as nobody approves their own: a manager asks for theirs on the Leave page and another manager approves it. The owner is the exception, because there is nobody above them: their own leave is theirs to record, with no email and no sign-off.
7a-ii. Publish the week, and add a note to the team
When the week is ready, press Publish & notify team. A short panel opens before anything is sent, telling you how many people are on the roster this week; each of them gets an email with their own shifts, and nobody sees anybody else's. On the roster this week lists them all, ticked. Open it to clear the tick of anyone you would rather tell yourself: the button then counts who it reaches, such as Publish & email 7 people, and anyone left out stays on the list the next time you publish. Somebody with no email address on their team card has no tick, and the row says so. It goes to the address they sign in with (their contact email if they have no login), and to their personal email as well when that is ticked on their card: see the Administrator guide, section 4.
Add a note to the team. Tick the box and write anything you would normally put in a separate email: "Hey team, here's the roster for the week, the coffee delivery moves to Tuesday…" It goes at the top of their email, above their shifts, exactly as you typed it. A preview underneath shows how they will read it before you send.
- Nobody sees the note in isolation. It also appears on the roster for that week and on each person's My work, so somebody who reads the app instead of their inbox still gets it. Anybody with no email address on their team card will only ever see it there.
- People with no shifts that week hear nothing unless you pick them. When you add a note, No shifts this week lists the team members who are not on this week. Tick anyone, or Select all, which is what you want when the note is about a meeting rather than the shifts. They get the note on its own, with no shift list. Nobody there is ticked until you tick them.
- The two emails read differently, and the preview shows both. The people on the week get "Your roster for 17 to 23 Aug", your note, and then their shifts. The people who are not on it get "Frank's note to the team, 17 to 23 Aug", headed A note from Frank, and their first line says plainly that they have no shifts this week before handing over to your note, so nobody is left hunting for shifts that are not there.
- Reuse last week's words with one press when the note is a standing message. It is offered as a button rather than filled in for you, so a week-old note can never go out by accident.
- Re-publishing re-sends, and replaces the note with whatever is in the box. Publish with the box unticked and the previous note is cleared.
- The note holds up to 2,000 characters. If you go over, the app says by how much and refuses to send rather than quietly cutting the end off.
7a-iii. On call: not rostered, but ring me
Somebody who is not working a day but is happy to be phoned if you get stuck goes on the roster as on call. It is not a shift: it is never hours worked, never reaches a timesheet, and never touches their pay.
To put somebody on call, press the + in their empty day, switch the top of the panel from Working shift to On call, and press Put on call. That is it. Nothing has to be set up first: it works for anybody on your team list, including people with no login at all.
- All day unless you say otherwise. Tick "Only for part of the day" and set a From and To if they are only around in the morning.
- It shows on the roster as a dashed On call marker in that day, so you can see at a glance who to ring on Saturday. Hover it and press ✕ to take it off.
- Nothing is added to the hours, theirs or the day's total.
- They are told when you publish, exactly like a shift: they appear on the re-publish list as "Sat 29 Aug added, On call". Their email marks the day "Sat, 29 Aug · ON CALL" next to the hours (or "All day"), with a highlighted box above the list that says "On call means you are not rostered on for that day, but we may ring you if we get stuck", so nobody reads it as a shift with the times missing. Their My work says the same thing.
- Somebody folded away as "not on this week" comes back the moment you put them on call, because they are now part of the week.
- Anyone who can build the roster can do it, so an owner, a manager, a supervisor, or whoever you have given the roster permission to.
On call is not the same as availability. Availability is a standing statement your team make about themselves in My work: which days they can work at all, and between what hours. The roster warns you when you drop a shift on a day somebody said no to, and it never blocks you. On call is you saying, for one day, that this person is your backup.
7a-iv. Changing a week the team already has
Publishing is the only thing that sends anything. Change a shift on a week you have already published and nobody is emailed on the spot. The roster says so, in orange, next to the button:
Changes have been made. Re-publish to let them know.
Press Re-publish and the panel lists only the people whose own shifts have changed, by name, with what changed beside each one, and a tick you can clear:
2 people have had a change since you published on 22 Aug. Only they hear from you. The other 7 people on the week are left alone.
☑ Murray Wells, Sat 29 Aug added, 8:30am to 1:00pm ☑ Sarah Kidd, Wed 26 Aug now 8:30am to 1:00pm
Nothing goes out until you press the button, and the button says exactly who it reaches: Publish & email 2 people.
Everything counts as a change, not just adding a shift: new times, a new day, a different shift type, handing a shift to somebody else (both people are listed), removing one, marking somebody off the day, and the bulk fills. Change something and change it back, and nobody appears on the list at all, because nothing about their week is different.
Clear a tick and that person is left out on purpose. Their row says so, and they stay on the list next time, because a change nobody has heard about is not finished. Use it when you have already rung them.
A note goes to whoever is being emailed, and the box says who. With one person on the list it reads "Add a note for Murray", and underneath, "Only Murray Wells will read this". So "Sorry Murray, I forgot you couldn't make it that day, so I have changed it" reaches Murray and nobody else. With everyone on the list it is the note to the team, as in §7a-ii.
Somebody with no login is listed but has no tick, because there is nowhere to send them anything. Their row says "No login yet, so you will need to tell them yourself."
They get a change in the app as well as by email: on the bell and on their phone if they have notifications turned on. That is the one that always arrives, which matters for casuals with no email address on their card.
Send someone their week again
Everybody else on the week is listed under Send their week again, unticked. Tick anyone to send them their week as it stands, the same email as when the week was first published, and nobody else hears a thing. Use it when somebody lost the email, or when a personal email was added to their card after the week went out. Select all sends the whole week to everyone on it again.
When nobody's shifts have changed, the panel says so and opens this list, and the button reads Send to Sarah (or Send to 3 people). Sending a week again is not a new publish: the roster keeps the date it was published, and anybody whose change you have not sent yet stays on the list.
From a name on the roster. Press a person's name on the roster and choose Email Sarah their week, or Send Sam a note for somebody with no shifts that week. The panel opens with only that person picked, their row marked.
When it last went. Each person on the panel shows when they were last sent this week's roster, such as Sent Tue 20 Oct, 11:24am, so when somebody says they did not get it you can see whether it went. An email that could not be delivered says Not delivered in red. Sending it again goes to every email address on their team card, including a personal email when that is ticked.
Every publish, and every week sent again, is in the activity log under Settings → Activity, with who was emailed.
Nothing is sent for a week you have not published yet. While you are still building a roster, moving shifts around tells nobody. The first press of Publish is what starts the conversation, and it reaches everybody who is on.
7a-v. Mark somebody unavailable for them
When a casual tells you in person which days they can't work, you can put it on the roster yourself, the same way you put someone on call.
- Press the + in their day and switch the top of the panel to Unavailable.
- The day you clicked is filled in. For a run of days, such as a holiday, tick More than one day and pick the Until date. Add a note if it helps.
- If they are already rostered or on call on any of those days, the panel lists them, with Take them off ticked. Leave it ticked to clear those days, or untick it to keep the shifts while you find cover.
- Press Mark unavailable.
What happens then:
- The day shows the same red Unavailable block as one they marked themselves. Click it and the panel says who added it, with Remove if it went on by mistake.
- They see it in their My work under When I can work, marked as added by you, and can change or remove it there. Nothing is sent to them.
- Nothing the roster fills in by itself will roster them on it.
- A day they marked themselves stays theirs. Marking it again leaves their note alone, and only they can remove it.
It is for the people who set their own availability, the same people who see
When I can work in My work: usually casuals. Which employment types count is
the Set hours setting on your employment types, on the Leave tab of
Time & pay → Time off & shifts. For somebody on set hours, give them the day off
with the × on their shift instead. One entry covers up to 62 days, from today
on.
7a-vi. Several people with the roster open
The roster keeps itself up to date while it is open. A shift added, changed or removed by anybody shows on every open roster within a second or two, with no reload: another manager working on the same week, a swap or open shift being approved, leave taking somebody off their shifts, somebody being offboarded. A removed shift goes from every screen, including the roster of the person who was on it.
- On a published week, other managers looking at it see "Changes have been made. Re-publish to let them know." as soon as somebody changes it.
- A roster left in the background, or on a phone that went to sleep, catches up when you bring it back to the front. Reloading the page always shows the roster exactly as it is.
- Staff who see only their own shifts see their own changes the same way.
7b. Clock in / out (staff)
Where staff clock in:
- From "My work" in the top nav (their own page, clock in/out + this week's hours + their roster), or
- From a paired tablet kiosk set up as a Staff kiosk. Setting one up is a QR you scan with the tablet's camera, see Kiosk (a tablet on the counter).
Worked time builds their timesheet, and who's currently clocked in shows on the dashboard (On shift).
Checking your own week. This week on My work lists each day so far with your punches and, under them, what you were rostered, such as Rostered 7:30am to 4:00pm. A rostered day with no punch reads Not clocked, so a forgotten clock-in is seen by the person who knows what happened; tap a punch to flag it to your manager. A day the business was closed, or you were on leave all day, is left out. Somebody who would rather confirm their rostered week than clock in is set up as Set hours (see 7b-iii).
Leaving before the shift ends. Pressing Clock out more than a few minutes before the end of today's rostered hours asks first: Leaving before 5:00pm? Pick a leave type (personal / carer's leave is chosen first), add a note for the manager if you like (required when your business asks for a reason on leave), and press Clock out and ask for leave. One press clocks them out and asks for leave from the minute they clocked out to the end of their shift; Just clock out does only the first. "A few minutes" is a quarter of an hour, or your round to roster grace when that is longer.
- It is an ordinary leave request: a manager approves it on the Leave page or in Approvals, the approvers are emailed (at most once an hour each) that they clocked out early and asked for it, and it is on the Activity Log with the time they left. Nothing is paid as leave until it is approved; once it is, it pays beside the hours they worked.
- Clocked out somewhere else first, at the kiosk say? Their Today card on My work says when they left and offers Ask for 12:34pm to 5:00pm as leave until something covers the rest of the shift.
- The hours are worked out from the clock and the roster, never typed, and stop short of any leave they already have that afternoon.
- Two shifts in one day (5:00am to 8:00am, then 9:00am to 5:00pm) are judged one at a time. Clocking out at the end of the first, or between the two, is finishing a shift and asks nothing. Leaving partway through a shift asks for the rest of the day, the later shift included. Next shift on My work moves on once a shift today has finished.
- Time in lieu shows what is in their bank and refuses more than that. A type your business holds to its notice rule is not offered, because it could not be asked for today; personal, carer's, compassionate and family and domestic violence leave never need notice.
- The owner records their own: the same panel reads Record the rest of your shift as leave, and it is approved as they clock out.
A second tap asks first. Clocking out within two minutes of clocking in asks "Clock out already?", on the tablet and on a phone, so a name tapped twice does not leave an empty entry beside the shift.
A screen that is out of date never punches the wrong way. The button sends what it said. Somebody who clocked in at the tablet and then presses Clock in on a phone left open from earlier is told they are already clocked in, and nothing changes; the same for Clock out on a shift that was already closed. This holds for a person's own phone and for the names on a tablet (a PIN shows no state, so a PIN still clocks in or out by itself).
Clock-in rules (Settings → the "Team" tab → Time clock, under Clock-in rules),
these only bite where you use the Roster module:
- Only clock in with a rostered shift, no shift now → clock-in is blocked,
the person is told why, and the attempt is logged for you (see attendance in
§7d). Owners/managers can always clock in,
just flagged if there's no shift.
- Called somebody in who isn't on the roster? Add a shift for them on the roster first. It counts for clocking in the moment it is saved; you don't need to publish. On a tablet that lists only today's rostered staff they appear when the Clock is opened again, or under Someone else…. If you often call people in at short notice, turn this rule off instead: anyone can then clock in, and a day worked with no shift is marked Not rostered on the Timesheets grid for you to approve (see §7d). Hours can also be added afterwards from their row in Timesheets.
- Clock-in opens N min before the shift starts.
- Late after N min grace, past that, the clock-in is recorded as late.
- Max shift length, used as a backstop for forgotten clock-outs.
- Email the timesheet approvers when someone clocks in with no shift. With Only clock in with a rostered shift on, they hear about each attempt that was stopped, and the person is told their manager knows. With it off, they hear about each person let in with no shift: once a day per person, never for a return from a break, and never for an owner or manager. Off by default.
On-site (GPS) check, optional. You can require staff to be at the workplace
to clock in: turn on Location check on clock-in (Settings → Team, shown
when the Roster module is on), pin your workplace and set a radius.
- Pin the workplace, not wherever you are. Setting this up at home pins your house, and every clock-in at the shop then fails the check. Use my business address pins it from the address you have already saved, so you can do this from anywhere. Update pin to here uses the device you are holding, which is the right button when you are standing on site.
- A clock-in from outside the radius is flagged on the timesheet, or blocked if you make the check required, and the person is told how far off-site they are.
- A clock-out is never blocked, however strictly the check is set. It is flagged instead. Refusing it would leave the shift open until the auto clock-out closed it hours later, which puts MORE hours on the timesheet, not fewer.
- Where the flag shows: open the person's row in Timesheets and it is written under the punch, with the distance ("Clocked in 1.2 km from the workplace"). Blocked attempts are counted separately, on the attendance panel.
- A vague location is not treated as evidence. Phones indoors often only know the suburb, so a fix that cannot separate "at work" from "not at work" is left unflagged rather than held against somebody. It never blocks a clock-in either.
- The kiosk is exempt, a paired tablet is already on site.
Kiosk identity, name vs PIN. On a shared kiosk, choose how a person proves
who they are at Settings → Kiosk → "How staff clock in" (full guide:
Kiosk (a tablet on the counter)):
- Tap your name, simplest, but a colleague could tap your name.
- Personal PIN, each person types their own PIN, so no one can clock a workmate in or out. Use this to stop "buddy-punching". PINs are set per-person on the same Kiosk tab (managers only), stored encrypted and never shown.
7b-ii. Breaks, and how one reaches the timesheet
Staff can record their own breaks. Turn on Staff record their breaks in the timesheet settings (or under Settings, then Kiosk: it is the same switch). Then the tablet, by name or by PIN, and their phone's My work both offer Start unpaid break under Clock out, and End break while they are on one (see Kiosk, Breaks on the tablet). The break's minutes come off that shift's pay and its times are kept on the record (Break 12:30 pm to 1:00 pm). Clocking out while still on a break ends the break first. Otherwise a break gets onto a timesheet one of three ways, and it is worth knowing which one your business is using, because it decides what people are paid.
- Someone punches out and back in. The gap between the two punches is simply not worked time, so it is unpaid automatically with nothing to type. Coming back is treated as coming back: it is not recorded as a late arrival, your team is not told anyone was late, and it counts as one shift rather than two on the attendance figures.
- You type it on the timesheet. Each clocked row has a break box in minutes on the Timesheets tab. Whatever you type is taken off the paid time for that row, and the change is recorded in your activity log with the old and new value. Do not use both at once. If somebody already punched out and back in, the gap is out of their pay, so typing those minutes in the box as well takes them off twice. The box is for the days nobody punched anything. An empty box means no break was typed, so the automatic rule below can apply (the box then reads auto); 0 means pay the shift in full, and always wins.
- An automatic rule. On the Timesheets tab, open the settings control and turn on Unpaid breaks: "deduct N minutes from any shift longer than H hours". By default that rule applies only to rostered hours, not to clocked ones. A separate tick, Also apply to clocked time, extends it to the clock.
Before you turn on the automatic rule, read this. It deducts a break whether or not the break happened. If a busy Saturday means nobody got their 30 minutes, that rule still takes 30 minutes off their pay. An amount you typed for a row always wins over the rule, including a deliberate zero, so you can correct any day the rule got wrong.
Paid rest breaks are not this. Several awards give a short paid rest break as well as the unpaid meal break, and paid ones must not be deducted at all. The tablet's break button, the break box and the automatic rule are for unpaid breaks only, so leave paid rest breaks out of all three: tell your team not to press Start unpaid break for a paid rest break.
Nobody outside the payroll seat sees a break figure. The break box is on the Timesheets tab, which needs the timesheets permission. A casual who clocks in at the tablet and has no login never sees what was deducted, so if you type breaks in by hand it is worth telling people that is how it works.
7b-iii. Set hours: confirming your own week
Somebody marked Set hours, doesn't clock in (their profile under Team) does not clock in. Their hours come from the roster, and with Staff confirm their timesheet on (the timesheet settings) and a role that may confirm its own hours, they confirm the week on My work → My timesheet:
- Each rostered day shows its hours. A day still to come reads Rostered 7h 30m; one that has happened reads Worked 7h 30m.
- Change a day that was different: its times, or part of it as overtime, leave or time in lieu, as your settings allow. Done keeps the change, and Reset puts the day back to the roster.
- Submit week sends the week to their manager to approve, exactly as shown: every day not changed goes as rostered. Nothing is sent before then, and there is nothing to tick on days that were as rostered.
- Changes stay on the page until they are sent. Going to another week asks first, and the browser warns before a reload or a closed tab.
- Once sent, the card reads Submitted, awaiting approval. Change a day after that and it reads Changes not sent until Re-submit week. A week the manager sends back reads Changes requested, with their note.
- A week nobody sends is paid as rostered. Pay is never held back for want of a confirmation.
- Approved leave shows on its day as the leave type, paid as leave, with its hours, and the total reads plus 7h 30m approved leave. It is paid as its own leave line beside the hours they confirm, so approving the week never drops it.
- Two parts of one day may not overlap (each minute is counted once), and a day cannot add up to more than your Max shift length. Both are refused with the day named.
A role without permission to confirm its own hours sees Your manager confirms your hours for you instead, and the manager enters any change in Timesheets.
7d. Attendance & auto clock-out
- The Timesheets tab summarises the week's punctuality, on-time %, who was late (and by how long), missing clock-ins (a rostered shift with no clock-in), blocked attempts and, in a week when anybody is rostered, Not rostered (days worked with no shift). Punctuality counts one shift per shift: someone who punched out for lunch is one arrival, not two, so taking a break never flatters or damages their record.
- Somebody forgot to clock in altogether. They are listed under Missing clock-ins this week, below the grid, with the day and their rostered times. Approved leave over the shift and staff on set hours are never listed. Most often they forgot; check whether they swapped shifts or were absent. If they worked, press Add the shift: it opens with their rostered start and finish filled in, ready to change, and Add puts the shift on their timesheet as a manager entry, with your name against it. A locked week cannot be added to.
- Somebody came in on a day they were not rostered. The day reads Not rostered on the grid, in amber while it waits for approval, and is listed under Worked with no shift this week, below the grid, with the times they clocked. Check the hours opens that day to pay it as clocked, or another figure. In Approvals the week is never among the clean ones approved together; it reads Worked a day not on the roster. This only shows in a week when anybody is rostered, so a business that does not use the roster is not told about every day. To be emailed as it happens, tick Email the timesheet approvers when someone clocks in with no shift under the clock-in rules.
- Somebody forgot to clock in and it says they were late. Two ways to settle
it, and they mean different things.
- The time on the record is wrong. Correct it: open the person's row, press the clock icon beside the entry and type the time they really started. The lateness is worked out again from the shift they were rostered for, so the badge, their late count and the week's on-time % all correct themselves. The punch they made is still kept, and so is your name against the change.
- The time is right, but it should not count. Someone learning the system, or a start you agreed to, is not an attendance problem. Press Don't count it beside the lateness. The punch and the minutes stay exactly as they were recorded, the row keeps showing them marked not counted, and only the figures change. Count it puts it back. ⚠️ Never fix a figure by editing a time that was right. The hours on a timesheet are a legal record of what somebody worked and have to stay true, which is exactly why the second option exists.
- Forgot to clock out? Once someone is still clocked in the auto
clock-out grace past their rostered finish, the app closes the punch at
their rostered finish, or at clock-in plus the max shift length if they
had no shift. The check runs once an hour, so a punch can stay open up to an
hour after the grace runs out. It's marked auto clock-out · check, left
unapproved for you to confirm, and not paid until somebody approves it,
whether or not your business requires approval for other punches. The
Timesheets tab says how many are waiting, the person's own week shows it as
not counted until checked, and Finalise & export refuses that week until
each one is answered: correct the finish time if it is wrong and press
Approve, or type that day's hours. The grace is set at
Settings → the "Team" tab → Time clock → "Forgot to clock out?".- Set the grace to how long past a shift end your team might genuinely still be working, up to 8 hours. Anyone still on the floor inside the grace is left alone and their real hours are kept; the default 20 minutes is what signs a busy closer out at their rostered end.
- Somebody stayed back and was clocked out at their rostered finish. The app cannot tell a forgotten clock-out from somebody still working, so a late function past the grace ends their punch at the rostered finish. When they next tap their name that day, on the tablet or their phone, they are asked "Still working?", and Clock out now records when they really finished. It still waits for you: the entry keeps auto clock-out · check and says both times, "Clocked out automatically at 3:30 pm, then they clocked out at 5:38 pm." If they did not, open their row, press the clock icon beside that entry, set the time they really finished and press Approve, or click the day and type the hours.
- ⚠️ The two rules meet. Whichever comes first closes the entry, so a grace longer than the gap between the shift and your max shift length hands the job to the max-shift rule instead: the entry is then closed at clock-in plus the max shift rather than at the rostered end, which records 16 hours for somebody who worked 8. For a standard 8-hour shift on the default 16-hour max that crossover is at 8 hours, which is why the grace stops there. If you need more headroom, raise the max shift length as well.
7c. Approve & export timesheets
- Open the timesheets view.
- Review hours; adjust any day that needs it (below).
- Approve week when correct.
- Export the approved hours for payroll, as a CSV, or as a Printable summary: one page per person to read from while you enter hours into Xero, QuickBooks or MYOB.
With two-step approvals on, Approve and Approve all on this grid are the manager's check: the hours read Sent for payroll sign-off and are paid once a Payroll Officer signs them off in Approvals. ⚠️ Typing a day's hours, or Rostered / Clocked on a row, sets that day's pay directly and does not go through the payroll sign-off.
A typed figure of more than 24 hours for a day, or 168 for a week, is refused: it is a slipped decimal point (75 for 7.5), not a decision.
7c-i. Rostered vs clocked, and the ⚠ flags
Each person's row shows what they were rostered, what they clocked, and what the week will pay. A day where the clock disagrees with the roster carries a small ⚠. Click that day to answer it. The box says what the day pays now (or Awaiting approval) and the times it was clocked, then offers, one click each:
- Rostered pays the rostered hours for that day (the extra time was not work, or the early finish is forgiven).
- Clocked pays what the clock recorded (the extra time was real, approved work; a late start is docked). When round to roster moved the figure, this button reads Before rounding and pays the punch exactly.
- Or type any figure in Other, as hours and minutes (5h 30m or 5:30) or hours (5.5). The box shows what it comes to before you save, and refuses anything that is not a time.
One day opens at a time: pressing another day opens that one instead, and Cancel, Esc or a click anywhere else closes it without changing anything. Answering a day clears its flag and approves that day's punches. The other days still wait for approval, and pay nothing until approved, so the row then reads, for example, Paying 5h 0m, 3 punches still awaiting approval. The two buttons on the row (Rostered / Clocked) do the same thing for every day of the week at once, and the week's total is always the sum of its days. Reset puts the week back to the default (the clock, for people who clock).
7c-ia. Approved leave on the timesheet
Approved paid leave from the Leave page is paid on the timesheet as its own leave line, beside the hours worked. On the grid the day shows LV with its hours, the row's total says incl 7h 30m leave, and the day columns at the foot of the grid count it, so they add up to the total beneath.
- Nothing you do to the worked hours removes it. Typing a day's hours, Rostered or Clocked on a row, Override hours on a set-hours row, and approving a timesheet the person confirmed all settle the hours WORKED. The approved leave stays on its own line. Override hours is the hours worked that week; do not add the leave into it.
- How many hours a leave day pays. The hours that day was rostered for, net of the unpaid break. With nothing rostered that day, their regular hours for that weekday. With neither (a week booked off before its roster was made, for somebody with no regular hours on file), Monday to Friday at your hours per leave day (Leave settings, 7.6 unless you change it): the same figure the leave balance is charged. Hover the day to see which.
- A day somebody clocked in, or a day the person adjusted on their own timesheet, is paid as that record instead, never twice.
- Leave for part of a day (gone home unwell at 12:30, an appointment at 2pm) is a working day with leave in it. The day shows the hours worked with LV and the leave's hours under them. The leave pays the rostered hours it took, less any time the clock shows them working inside it, so somebody who stayed on after all is never paid twice. While they are still clocked in, none of the leave after they clocked in is paid: close the punch at the time they left. Typing the day's hours, or Rostered or Clocked, settles the hours worked, and the leave stays beside them.
- The unpaid break on such a day counts as falling in the middle of the shift. Somebody rostered 9am to 5pm with a 30 minute lunch who goes home at 12:30pm never took the lunch: they are paid 3.5 hours worked and 4 hours of leave, the 7.5 hours of their day. Going home at 2pm, after the lunch, the break comes off the hours worked instead.
- Two kinds of leave on one day (an hour of annual leave first thing, home unwell after lunch) are paid and filed kind by kind: each under its own type in the payroll file, and an unpaid hour beside a paid afternoon pays the afternoon only. Hover the day to see each.
- Unpaid leave, and leave for an employment type that does not get paid leave (casual, unless you change it), pays nothing.
- Leave still waiting for a decision pays nothing yet. Finalise refuses a period with paid leave in it still waiting, and names it, so it is approved or declined first rather than frozen out of somebody's pay. Approving leave in a week already finalised says so: unfinalise the week and finalise it again to pay it.
- Approving leave for part of a shift never offers to clear the shift. Release shifts, the roster's own fills and the roster email all leave a shift alone when the leave takes only part of it, because they work the rest.
Somebody who has left. Their regular hours pay up to their last working day (the date you gave when offboarding them, or the day their access was removed) and not after. Any shift explicitly on the roster still pays, so check their last week before you finalise it.
7c-ii. Round to roster (stop tidying 2-minute differences)
Round punches to the nearest 5, 10 or 15 minutes. Under Round to roster in the timesheet settings. Each clock-in and clock-out moves to the nearest mark, up as often as down, so it evens out over time and never only shortens a shift; the Fair Work Ombudsman has said rounding hours down is not acceptable, so that is the only kind offered. Round to roster is applied first: a punch inside the grace counts as the rostered time and is not rounded again. Off by default. The expanded row shows the punch as clocked beside the time it was paid as.
Hours as 7h 30m or 7.50. The switch under the grid sets how you read it; the payroll file is always in decimals.
If your team clocks a few minutes either side of their shift and you just pay the rostered time, turn on Settings → Round to roster (on the timesheets view). A punch within the grace (10 minutes unless you change it) of its rostered start or finish counts as the rostered time automatically: nothing to click, no flag, and 3 minutes early or late never changes anyone's pay in either direction.
Differences bigger than the grace are real, so they carry the ⚠ flag for you to accept, decline or adjust as above.
A shift with only one end within the grace. Your choice, under Round to roster in the settings, with the sum worked out at your own grace beside each option. Rostered 7:00am to 1:00pm and clocked 7:06am to 1:15pm, at a grace of 10:
- Pay the whole shift as clocked. Both ends within the grace pay the roster; anything else pays exactly as clocked: 7:06am to 1:15pm, 6h 9m. The hours on the timesheet always match the clock times printed under them.
- Round each end on its own (how every business starts). The start within the grace pays from 7:00am and the finish pays the clock: 7:00am to 1:15pm, 6h 15m, which is more than both the roster and the clock.
Either way the day is flagged, and Rostered or Before rounding settles it. Changing this moves the pay of every week not yet finalised. A finalised week keeps the hours it was finalised with, is shown that way with a line saying which choice it was finalised under, and sends to Xero payroll as finalised. The attendance record is untouched either way: the punch is stored exactly as it happened, and late arrivals still show as late. Rounding changes what is paid, never what is recorded.
A shift punched in two goes is rounded once. If somebody clocks out and back in during a shift (a break, or tapping twice by mistake), only their first clock-in and their last clock-out are compared with the roster. The clock-out for the break and the return from it are paid as clocked, so no minutes are counted twice, and nothing before the rounded start or after the rounded finish is paid.
Pay from the rostered start. The next switch down in the same settings. With it on, a clock-in before the rostered start is paid from the start, however early it was, and the day is not flagged for it: rostered at 10:00, clocked in at 9:40, paid from 10:00. Only the start moves. A late arrival is still judged by the grace, and a late finish is still paid. It works whether or not round to roster is on.
- When you asked someone to start early, pay it: click that day and choose Before rounding, which pays the clock exactly. Time somebody actually works must be paid, so this switch suits a business where arriving early is the person's own choice.
- The early punch is still recorded, and the expanded row still shows what was clocked beside what is paid.
You can always see and pay the real minutes. Open a person's row and each punch is listed with the times exactly as clocked next to the hours it pays, so a 9:00am to 5:06pm day shows those times beside its 8h 0m. The hours it pays carry a before rounding 8h 6m chip beside them whenever rounding moved the figure, and a plain line under the punch spells it out: "Paid as 9:00 am to 5:00 pm, rounded to the roster." So the printed times always explain the hours beside them.
Clicking that day offers Before rounding 8h 6m as a one-click choice if you would rather pay the extra six minutes. Rounding is a default, never a lock.
Which figure is the one you pay? The rounded one. Reading a row left to right: the punch times are what the tablet recorded and never change, the line underneath says what those ends pay as, and the bold hours are what goes to payroll. Any of it can be overridden until the week is locked, and locking is what freezes it.
Breaks show when they were taken. The same line names each punched break, for example "Breaks 1:45 pm to 2:15 pm and 3:30 pm to 3:40 pm.", next to the total that comes off the paid hours. A break's time of day never affects pay: thirty minutes taken at 1:45 pays exactly the same as thirty minutes taken at 1:00, so a break running late needs no adjustment. If somebody types a different break total over the top of what was punched, the line says so, because both facts are true and the times must not be read as the reason for a number a person changed.
Approve the matching ones automatically. With round to roster on, a second switch appears under it: Approve these automatically. A finished punch that is inside the grace at both ends needs no sign-off, because it already pays the rostered time, so approving it decides nothing. With Pay from the rostered start on, an early start counts as inside, however early. It is off until you turn it on, and it is never retroactive.
Six things it will not wave through, all of which still wait for you:
- a punch outside the grace at either end, because the pay differs from the roster
- a shift somebody clocked out of and back into, because the shift is rounded as a whole and one punch of it does not pay the roster on its own
- a shift still running
- a forgotten clock-out that the app closed for you, since nobody punched that finish
- a punch with no rostered shift to compare against, which also reads Not rostered on its day
- a long shift with no break recorded, where the business tracks breaks
An entry the system passed through is marked matched the roster rather than approved by a person, and it stays editable until you lock the week. The lock is the real freeze; an automatic approval is only the app declining to interrupt you. A punch you approve yourself behaves exactly as it always has.
Your payroll system gets the paid hours. The CSV, the printable summary, the Xero timesheet push and a locked pay period all read the same figures as the screen, so what you approve is what payroll receives. A week you have already locked keeps the hours it was locked with: changing this setting afterwards cannot move a finalised week, and if the live hours and the frozen ones drift apart the screen says so and asks you to unlock and re-lock.
What the export is (and isn't). This is an hours export for manual entry or CSV import. HappierBiz never runs pay or lodges STP; your payroll software stays the source of truth for pay. One exception saves the retyping, below.
7c-iii. Weekday, Saturday and Sunday hours
Most awards pay a weekend hour more than a weekday one, so Pay prep & export splits the hours into Weekday, Saturday and Sunday columns beside Overtime, Public holiday and each kind of paid leave. Every column is separate hours, so a row adds across to its total, and you never have to work out from the roster which hours fell on a weekend.
The columns appear only when somebody actually worked that day, so a business that never opens on a Sunday never sees a Sunday column. The day a person worked decides which column their hours land in, whether or not they were rostered on.
To see the times behind a figure, press Open in Timesheets. It opens the same pay period in the Timesheets tab, where each person has a column per day. Under each day's hours is when they actually clocked in and out, written as 9:00a to 1:00p, so a 5.20 against a 5 hour shift shows you it was 8:01am to 1:15pm and you can decide about the extra twelve minutes yourself.
A * after the times means the day had more than one punch, so the span covers a
break; open the person's name for the punch by punch detail. Clock times under
the grid hides them again if you would rather read hours alone.
These times are what was punched, untouched by rounding and by any pay decision. The figure above them is what will be paid. Where they differ, the difference is the rounding or a correction, and both are on the person's own row.
The same split is in the payroll CSV and the printable summary, and weekend hours go to Xero on their own earnings rate once you have matched one on the Xero payroll card (section 7c-v). Set what Saturday, Sunday and public holiday hours are worth under Penalty rates: on the Timesheets tab, tick Award split in Finalise & export and the three boxes appear, each saved when you leave it. Those figures price the wage estimate here only: Xero, or any payroll system, pays from its own rates, so keep the two the same. For a payroll file, name the pay code each day type files under beside the other codes in Finalise & export. When your hours go straight into Xero, that box points to the Xero payroll card instead, because that is where the rates Xero uses are matched.
If a row shows ? instead of hours. A week is frozen when you finalise it,
and a day corrected after that (a punch approved a moment later, a Saturday
picked up off the roster) is not in the frozen figures. Rather than show a split
it cannot stand behind, the pay run shows ? for that person and names them
underneath. Unfinalise the period in the Timesheets tab and finalise it again;
the hours are rebuilt from the punches and the columns fill in.
Public holiday hours. Hours worked on a public holiday go to payroll as public holiday hours, whether or not anybody was rostered that day, and whether you closed for the holiday or opened on it. A public holiday nobody worked is different: see section 7c-iiic.
Overtime and the weekend split. Overtime is counted on the week (hours past your weekly threshold), not on any one day, so the weekday, Saturday and Sunday columns show the hours before it, in the same proportion as the days worked. If your award pays weekend overtime at its own rate, check which day the overtime fell on before you pay it.
One place the app has to estimate. Adjusting a whole week to a single figure ("this week is 19.5 hours") says nothing about which day the extra or missing hours fall on, so the weekday and weekend columns share the change in the same proportion as the days you worked. If it matters which day, adjust the day itself rather than the week. A timesheet sent to Xero shares the days out the same way, one week at a time, so each week reaches Xero with the total you finalised for it.
7c-iiic. Public holidays: who is paid, and days you open
Permanent staff are paid for a public holiday they don't work. Under the National Employment Standards, a full-time or part-time employee who would normally have worked that day is paid their usual hours for it at their ordinary rate. The app does this by itself, whatever any setting says:
- Their usual hours come from the shift they were rostered for that day, or their regular hours for that weekday. Rostering somebody off a public holiday they normally work does not take its pay away.
- The pay is ordinary time. On the Timesheets grid the day shows PH with the hours, and the row says public holiday not worked. In the payroll file the hours are in the ordinary (weekday) hours, and Xero receives them on the Ordinary earnings rate for that date, never the public holiday rate. They never count towards overtime.
- Somebody who isn't rostered that weekday and has regular hours on file for other days isn't paid for it: it isn't one of their days.
- Somebody away on paid leave over a public holiday is paid the holiday instead, and their leave balance isn't charged for that day. Somebody on unpaid leave over it isn't paid for it.
- Casuals aren't paid for a public holiday they don't work, unless you switch on Pay casuals for public holidays in the timesheet Settings.
When the app can't tell. If a permanent employee has no shift that day and no regular hours on file at all, the app can't know whether the holiday was one of their days, so it pays nothing for it and says so: the day shows an amber PH ? and a Public holiday not paid yet line above the grid names them. Set their regular hours on the Regular hours tab (or, if they are casual, set their employment type in Team) and the day pays. Somebody marked as rostered here but not paid here (section 7c-iiia) is never paid a public holiday here or named.
Which days are public holidays. The ones on your list in Closures & holidays: your state's, added when you pick your state and topped up each year, plus any you add yourself. Your state's list follows the government's, including the extra Monday when Anzac Day falls on a weekend where your state gives one. Two kinds aren't on it:
- Part-day public holidays: Christmas Eve and New Year's Eve from 7pm in South Australia and the Northern Territory, and Christmas Eve from 6pm in Queensland. Enter hours worked in those evenings as public holiday hours in your payroll system.
- Regional ones, such as a show day or a local Cup day. Add it under Add a closure with It's a public holiday here ticked, and it is paid exactly like your state's. Who added one, and when, is in the Activity Log.
A public holiday you open on. In Closures & holidays, press Change on the holiday and choose:
- We open on this day. The business isn't shut: bookings and the roster work as normal. It's still a public holiday, so hours worked that day go to payroll as public holiday hours, and a permanent employee rostered off a day they normally work is still paid for it.
- Not a public holiday here. For a date on your state's list that doesn't apply to you. The day is an ordinary working day.
Either choice is remembered, and the yearly top-up of your state's public holidays won't put the day back. Both are listed under Public holidays you open on, where Close this day or Restore undoes them. Who changed one, and when, is in the Activity Log.
7c-iiia. Somebody who is rostered here but not paid here
An owner who takes drawings rather than wages, a volunteer, somebody on an unpaid
trial: all really on the roster, really clocked in, never on a payslip. Open them
in Team, tick Not paid through this system, and save.
They keep everything to do with working: the roster, the time clock, approvals, and their hours are still finalised and kept with everyone's, so a volunteer who later goes on the books has their history. They are left out of the pay run's figures, the payroll file, the printable summary and Xero, including the Xero matching list, so nobody is left with a "not matched" warning they can never clear.
The pay run names them under the hours table, so the omission is something you can see rather than a person who quietly stopped appearing. In Timesheets their row is tagged Not paid here, the week's wage cost leaves them out, and the finalise dialog and the payroll file made from that tab leave them out and say so. Untick it and they are back in the next pay run, with no other change.
7c-iiib. Reimbursements in the pay run
Pay prep & export also lists Reimbursements owed to staff: every approved expense claim still owed, whatever day it was spent, and what was paid back during the period. Add each person's amount to their pay as a reimbursement line, then press Record as paid in this pay run so the claims read paid back and each person is told. See Expenses, Paying claims back with wages.
7c-iv. Send timesheets straight to Xero payroll (optional)
Xero Payroll has no timesheet file to import, so instead HappierBiz sends the
hours in over the Xero connection as timesheets, one per person for the pay
period. Everything for it lives in one card, Xero payroll, on
Time & pay → Pay prep & export.
Set up, once (about five minutes). The easiest way is Setup, step by step
on Settings → Connections (also the Finish your Xero payroll setup step on
your dashboard checklist): one screen that goes from connecting to the first pay
run in order, says what each step does, and ticks it off the moment it is saved.
You can leave and come back; what is done stays done. The same steps can be done
by hand on the pages below. Settings → Connections also shows, beside the Xero
connection, which steps are still to do.
While Xero is connected but step 1 is not done, the Finalise & export dialog
in Roster says so, because that is the screen you see every pay cycle.
- Set your payroll system to Xero (the Payroll selector on this page; the card also offers it when Xero is already connected).
- In the Xero payroll card press Connect Xero and allow it in Xero (the
same button sits under
Settings → Connections, where the connection can also be disconnected). Your Xero login needs payroll admin access, and the organisation needs Xero Payroll set up with a pay calendar and your employees. If you connected Xero before this existed, the card asks you to connect once more to add payroll access; your settings and synced documents are kept. - Setup stays open until it is complete. It lists everyone on your team who is active and paid through this system, with a login or without one, whether or not they have hours in the period on screen, so matching never waits on a finalised week. Match each person to their Xero employee (matched for you by email address, or by an exact name when there is only one; check before you save) and your pay categories to Xero earnings rates. Ordinary hours is the only one you must set. Weekend and public holiday hours left on Same as Ordinary go to Xero as Ordinary hours and are paid at the Ordinary rate: Xero pays each hour at the earnings rate it is filed under and does not add weekend or public holiday rates by itself. If your team is paid more on those days, pick the earnings rate for each. Press Save matches. Someone left as Not matched holds nothing up unless they have hours in the period being sent. Anyone marked Not paid through this system on their Team record is left out of the list and of what is sent.
- Choose how it runs. All three are off until you choose them:
- Send to Xero when I finalise a pay period. Finalise & export in Roster sends the timesheets in the same step, so a pay cycle is one action.
- Approve in Xero as they are sent. They land approved and flow straight into your Xero pay run. ⚠️ Xero does not let an approved timesheet be changed, so only turn this on once you trust the hours you finalise.
- Send approved paid leave too. Approved paid leave is filed in Xero as leave applications with the hours approved here, so nobody is paid short for a day they were approved away. Match your leave types to Xero's when you turn it on. It needs one extra Xero permission; an older connection is asked to connect again. Leave for part of a day goes too, with its own hours. Xero first books any leave it is sent as the person's ordinary day, and the send then sets the hours approved here. If Xero will not take a part day's hours, the send withdraws it and lists it to add by hand, so it is never paid as a full day.
Each pay run: finalise (lock) the period in Roster. With the first switch on, that is the whole job. Otherwise the Finalise & export dialog reminds you that the hours stay here until you press Send N timesheets to Xero on the pay run page; then Approve all in Xero when you are happy, or approve them in Xero.
The pay period lines up with Xero by itself. The selector picks the length your people's Xero pay calendars use, and for a fortnightly calendar the page also moves to the fortnight Xero expects: every second two-week window straddles two Xero pay periods, and Xero refuses a timesheet that does. Once you pick a week or a period yourself the page stops moving it, and if the window still does not fit, the card says which two Xero periods it sits across.
This period in Xero. The card shows each person's hours beside what Xero holds for the period, read from Xero itself: Not in Xero yet, Draft in Xero, Approved in Xero or Paid through Xero, with Xero's hours. An approved timesheet whose hours differ from yours is flagged in amber, because the person will be paid Xero's figure.
What to expect:
- Locked weeks only. If a week isn't finalised the whole run is refused, and if one person's hours changed since locking, only they are held back, by name. Somebody whose week was entered only as a total, with no days behind it, is held back too, because a Xero timesheet is day by day: unfinalise the week, set their hours day by day, finalise again and send.
- Nothing is duplicated. Re-sending updates the same draft. A timesheet already approved or paid in Xero is left alone, and so is leave already in Xero for the same person, type and dates.
- Leave is never booked twice. If Xero holds anything else over the same days (the leave was changed here after it was sent, or somebody typed leave into Xero by hand), it is not sent. The card lists it under Leave to check in Xero with what Xero has, so you can change it there (Payroll, then Leave). Leave sent from here that is no longer here, because it was cancelled or moved to other days, is listed there too, because Xero would still pay it.
- Xero prices the hours. Only hours travel. Xero pays them from the pay rates on each employee's pay template, so set the rates there. Fill missing pay rates from Xero copies Xero's ordinary rate to anyone with no rate here, for the wage estimate on this page only; a rate already typed here is never changed.
- Paid leave is not on the timesheet, by design: Xero pays leave from leave applications, so putting it on a timesheet too would pay it twice. With the leave switch off, the card lists Leave still to enter in Xero after each send, naming who, the type of leave, the days and the hours. Enter it in Xero (Payroll, then Leave) or they are paid for the days they worked and nothing for the days you approved them to be away. Leave Xero already holds for those days is not listed again, and leave Xero holds differently over them is listed under Leave to check in Xero.
- Every send is in the Activity log, including one where nobody went across (with who was held back and why) and one Xero refused, with the reason.
- The period must match their Xero pay calendar. The pay period selector picks the length your people's Xero calendars use; if a person's calendar differs, the line says so and names the fix. Weekly, fortnightly and four-weekly calendars are supported; monthly is not.
- Overtime goes under Ordinary. A Xero timesheet from here carries ordinary, weekend and public holiday lines, not an overtime line, so overtime hours are filed under the ordinary earnings rate. The result after each send names how many hours of each person's timesheet are overtime: change them in the Xero pay run, or they are paid as ordinary time.
- Weekend and public holiday hours need their own rate (section 7c-v). Saturday, Sunday or public holiday hours with no Xero earnings rate matched go under Ordinary, and Xero pays them at the Ordinary rate. The result after each send names those hours for each person. Match a rate for the day under Setup and send again, which updates the drafts, or change them in the Xero pay run. Picking Ordinary itself for a day is a choice, and the note stops. If your Penalty rates set Saturday or Sunday above 1 and that day has no Xero earnings rate matched, Payroll setup at a glance on the Timesheets tab flags Weekend rates in Xero until it is matched.
- Salaried staff. In Xero an approved timesheet replaces the employee's normal pay template hours rather than adding to them. Fine for anyone paid by the hour; check with your bookkeeper before sending timesheets for salaried staff.
- "Xero no longer has this organisation connected to HappierBiz." The connection was removed in Xero, or Xero's demo company was reset. Connect Xero again under Settings, Connections.
- Connected a different Xero organisation. Matches saved for the old one show as Not matched, with a line saying how many. Match them again and press Save matches. Until then a send refuses an earnings rate the organisation does not have, and leave of a type it does not have is listed to enter by hand. Xero's demo company is a new organisation each time it resets, every 28 days.
- Needs Xero Payroll, which is a paid add-on in Australia.
Two-step sign-off (optional). If your business has turned on two-step approvals, a submitted timesheet takes two approvals: the submitter's direct manager confirms the hours first (this writes nothing to pay), then a Payroll Officer does the final sign-off, and only then do the hours flow into the export. A timesheet part-way through shows a "Payroll sign-off" tag. Turn it on and read the full flow in Approvals & payroll sign-off. With it off (the default), approving a timesheet is a single decision, exactly as described above.
Pay casuals for public holidays. A toggle in the timesheet settings. Off, casuals aren't paid for a public holiday they don't work, which is what the National Employment Standards require. On, they are paid their usual hours for it, the same way permanent staff always are (section 7c-iiic). Changing it needs permission to manage timesheets, and is recorded in the Activity Log.
7c-v. Pay weekend and public holiday rates through Xero
Xero pays each hour at the earnings rate it arrives under, and adds no weekend or public holiday rate by itself. So weekend hours are paid at your weekend rates only when Xero has a rate for each day and HappierBiz knows which one it is. Once, in this order.
In Xero
- Go to Payroll, Payroll settings, Pay Items, Earnings, and add an earnings rate called Saturday: earnings type Ordinary Time Earnings, rate Multiple of employee's ordinary earnings rate with the multiple you pay on a Saturday, units Hours, and the account, tax and super settings the same as your Ordinary Hours. Your bookkeeper can confirm the settings.
- Add Sunday the same way, and Public holiday if you pay one.
A multiple of the ordinary rate works each person's weekend rate out from their own ordinary rate, so nothing is typed per person, and the new rates do not need adding to anyone's pay template: Xero pays the hours sent on them at the multiple of that person's ordinary rate.
In HappierBiz 3. Reload Pay prep & export. The Xero payroll card lists the earnings rates in your Xero when the page opens, so a rate made a moment ago appears after a reload. No Saturday choice in the list means Xero has no such rate yet. 4. Under Setup, Pay categories in Xero, pick the new rate for Saturday, Sunday and Public holiday, then press Save matches. 5. For a period already sent, press Send again. Its drafts are updated in place, with the weekend hours on their own lines. A timesheet already approved in Xero is left alone and the result says so; change those hours in the Xero pay run instead.
How Xero tells the hours apart. Each person's timesheet arrives as one line per Xero earnings rate, with the hours for each day: weekday hours on Ordinary Hours, Saturday hours on your Saturday rate, Sunday hours on your Sunday rate. HappierBiz sorts the hours by date, the same weekday, Saturday and Sunday split the pay run shows, so nothing is tagged by hand. In Xero, Payroll, Timesheets shows the lines, and each payslip pays them at their own rates.
Penalty rates in HappierBiz (section 7c-iii) price the wage estimate here only. Keep them the same as the multiples in Xero, so the estimate matches what Xero pays. While a day you pay above 1 has no Xero rate matched, Payroll setup at a glance on the Timesheets tab flags Weekend rates in Xero.
7e-iv. Tell it when your pay periods start
Two settings decide which dates a pay period covers, both in the Timesheets tab under Settings:
- Week starts on. The first day of your pay and roster week. Any day of the week, so a business that runs Wednesday to Tuesday sets Wednesday here.
- Pay periods start on. A date one of your pay periods began. Pick any one and every period lines up with it from then on, so a fortnight is always the same two weeks. It moves with the Period setting beside it (weekly, fortnight, four weeks).
The box shows the period you would be in right now before you save, so you can check it against the one you are actually paying. If the date you pick is not on your week start it is kept as the start of that week, and it tells you so.
Leave it empty and the pay run works the period out from whichever week you are looking at, which is what it did before this setting existed.
With a date set:
- The Pay run opens on the last pay period that finished, which is the one you are about to pay, and the arrows move a whole period at a time.
- Finalise & export in the Timesheets tab covers the period the week you are looking at belongs to, and names its dates on the card.
- Both screens read the one answer, so they can never show different fortnights.
If you use Xero, you should not need to set this at all. The last step of Set up Xero (Accounting & reports) reads the pay calendar your matched team is on and, if you have not set a pay period yet, sets yours to follow it and says so. If you had already set one that does not line up, it offers Follow Xero's calendar instead of changing it for you. It will not set anything while your people are on calendars of different lengths or different weeks, or while Xero's periods start on a different weekday from your week; it says which, and what to change. The pay run also offers Match Xero whenever a period does not line up, and that saves the start date as well as moving the window.
7f. Finalise a pay period
Once a week's hours are right, you can finalise it. Finalising freezes that week's payable snapshot, so a later change to a setting or the roster can't quietly move numbers you've already signed off, and it blocks edits to that week's overrides, breaks, approvals and TOIL. The week shows who finalised it and when.
You can do it from either end of the pay cycle, and both take the whole period at once:
- From Pay run (Time & pay → Pay prep & export). If any week in the period is not finalised, the page says so and offers Finalise these N weeks. It lists every week with its people and hours first, so you can see exactly what is about to be frozen. When it is done the hours, the CSV and the Xero send all become available on that same page.
- From the Timesheets tab, Finalise & export does the same and downloads the payroll file for the span in the same step.
You never have to finalise week by week, and you never have to move between the two screens to do it.
- If a week still has hours waiting for approval, finalising stops and tells you which weeks to approve first, so you never freeze someone's hours at zero. Approve them in the Timesheets tab or the Approvals inbox, then finalise.
- The same for paid leave still waiting for a decision in the period (somebody who went home unwell and asked for the rest of their shift): finalising stops and names it, because leave is paid once approved and freezing the week would leave it out of their pay. Approve or decline it on the Leave page or in Approvals, then finalise. Unpaid leave never holds a week.
- If payroll needs to correct a finalised week, unfinalise it in the Timesheets tab, fix it, and finalise again. A week already finalised is never frozen again by finalising a period it is part of; unfinalise is the only way to re-work its figures.
- If one week will not finalise, no payroll file is made. The weeks before it stay finalised, the dialog says which week and why, and finalising again picks up the rest. A file missing a week is never downloaded.
- A week whose hours could not be read in full (a connection drop) is refused rather than frozen at what could be read.
- Exporting records an exported-at stamp on each week, so a re-export is visible and you can see the week was already sent to payroll.
- Finalising, re-opening and exporting all need Edit / approve timesheets, and each is written to the business Activity Log.
7f-ii. Set up the MYOB export so it imports cleanly
MYOB only accepts a timesheet row if its pay code (the Activity ID) and the employee code already exist in your MYOB company file, spelled the same, in capitals, up to eight characters. HappierBiz can't know your MYOB codes, so it gives you a quick one-time setup and sensible defaults.
- Choose MYOB in the Payroll dropdown on the Finalise & export card, then open MYOB pay codes.
- Each pay type (ordinary, overtime, public holiday) and each leave type you use
shows an editable code, pre-filled with a tidy default (for example Annual
leave becomes
ANNUAL). Change any to match the exact pay code you have in MYOB, then Save codes. Copy list for MYOB copies the whole list so you can set the same codes up on the MYOB side. - Employee codes. The panel lists everyone in the file with the code they'll export as, and flags anyone matched only on their surname (which can go wrong) or sharing a code with someone else. For a reliable match, put each person's MYOB Card ID in their Team profile (Team, open the person, the employee ID field); the export uses that when it's set.
- In MYOB, turn on timesheets, make sure each pay code above exists and is linked to each employee, then import via File, Import Data, Timesheets and map the columns. MYOB imports the rows that match and lists any it can't, so you can fix a code and re-import.
Note: only MYOB AccountRight (desktop or browser) can import timesheets; MYOB Business online can't, so there you key the hours in by hand from the file.
7e. Time in lieu (TOIL)
TOIL is a per-person balance of time owed for extra hours worked: positive = banked (you owe them time), negative = used. The running balance sits in the balances panel on the Leave page (Time off & shifts → Leave), and each staff member now sees their own balance in My Work.
Banking time (four ways):
- Log it by hand, in the balances panel, pick a person, enter the hours and a note. This is the quick "you worked back two hours on Tuesday" case.
- Bank a timesheet variance, on a clocking person's timesheet row, the Bank to TOIL button banks the difference between clocked and rostered hours.
- Staff bank it on their own timesheet, when a set-hours person confirms their week, they can tag part of a day Bank to TOIL; it lands when you approve the week.
- Auto-accrual (optional), turn on "Auto-bank over-roster hours" in the timesheet settings and, whenever you approve a timesheet, any hours above the roster that weren't tagged as overtime bank to TOIL automatically. Your approval is the gate, nothing accrues without it.
Using time (taking a TOIL day off). Staff take TOIL as time off by requesting leave of the "Time off in lieu" type (or whichever leave type you choose in the TOIL settings). Approving that request draws the balance down by the hours off, blocks the roster and bookings for those days like any leave, and emails the staff member. Cancelling it hands the hours back. Staff can't request more TOIL than they have, the app stops the request with the exact figures, and approving is refused too if the balance has dropped below it since.
Part of a day off in lieu (let go at 2pm against hours owed): a manager records it from the shift with Record leave (§7a-i), or the person asks for it on clocking out early from My work (§7b). It spends what the day's pay counts as leave: the rostered hours it takes, less the unpaid break when the break falls inside them, so the bank and the pay are one figure.
Guardrails. Set an optional cap so a balance can't grow past, say, 40 hours, and the app won't let TOIL be overdrawn (used below zero). Every change is logged in the business Activity Log.
When somebody leaves. Time in lieu is kept here, not in Xero, so a leaver's banked hours show on their offboarding panel in Team ("6.5 hours of time in lieu are still banked here"). Add them to the final pay: most awards require banked time in lieu to be paid out when employment ends.
8. Examples
- Beginner (café): roster Floor and Kitchen for the week; staff clock in; approve and export Friday.
- Real-world (gym): trainers' regular patterns auto-fill; add a casual to cover a sick call; a public-holiday closure blocks the day.
- Advanced (several areas): roster across Floor/Parties/Setup shift types, fix a miskeyed clock-out on the day it happened, then export approved hours.
9. Reports & exports
- Timesheets per week, approvable.
- Payroll CSV export of approved hours (hours only, for manual entry or CSV import into your payroll software; no pay runs or STP from here). With the Xero connection, the Pay prep & export page can instead send the period to Xero payroll as draft timesheets.
- Printable summary, one page per employee, to read off while entering hours into Xero, QuickBooks or MYOB. Hours worked on a public holiday are tagged separately; a public holiday not worked is in the ordinary hours.
- On shift (clocked-in now) shows on the dashboard.
10. Common mistakes
- Exporting before approving, approve the week first so payroll gets final numbers.
- Forgetting closures, mark business closures so days aren't rostered or counted.
- Using a closure to hold back one room, that shuts the whole business for the day and tells the roster you are closed. Block it out on the Calendar instead, which stops the bookings and leaves the team working.
- Editing a pattern vs a single day, use a day-off override for one-offs; change the pattern for ongoing changes.
- Assuming a standard-week change only affects future weeks you have not looked at yet. It reaches every upcoming week that was auto-filled, which is the point. If you want one week different, change the shifts on that week instead: a shift you edit by hand is never touched again by the standard week.
- Expecting a note to reach the whole team on its own, the roster email goes to the people who are ON the week. If the note is about a meeting or a change everybody needs, tick the second box so the people with no shifts get it too.
- Ignoring leave clashes, approved leave blocks bookings, but check the roster reflects who's actually off.
- Turning the Roster module off to stop clocking, that's the wrong switch.
The clock has its own toggle at
Settings → the "Team" tab → Time clock. Turn that off; leave the Roster module as you need it. - Leaving an auto clock-out unanswered, auto-closed entries are an estimate and are not paid until approved. Correct the finish time if needed, then approve, before you finalise.
- Adding approved leave into Override hours, the leave is already paid on its own line, so it would be paid twice. Override hours is the hours worked.
11. Troubleshooting
| Problem | Fix |
|---|---|
| A staff member isn't on the grid | Add them in Team → Staff list and set their pattern. |
| A set-hours person can't find an Accept button on My timesheet | There isn't one. Every day starts as rostered: they change only the days that were different, then press Submit week (see 7b-iii). |
| Hours look wrong | Expand the person's row to see each punch beside the hours it pays, then click the day that is wrong and choose Rostered, Clocked, or type a figure (5.5 or 5:30). |
| A number I typed did not stick | The box selects its contents when it opens, so what you type replaces the old figure. Press Enter or Save; a value that is not a time is refused rather than saved as nothing. |
| A day shows ⚠ | The clock and the roster disagree there and nobody has decided yet. Click the day and pick one; the flag clears. |
| Someone's minutes are missing | If Round to roster is on, small differences pay the rostered time, and with Pay from the rostered start on an early start pays from the start. Hover the day to see what was clocked, and click it to pay the clocked figure instead. |
| Can't approve/export | You need Edit / approve timesheets. |
| Finalise says to decide the leave first | Paid leave in the period is still waiting for a decision. Approve or decline it on the Leave page or in Approvals, then finalise: finalising first would leave it out of their pay. |
| Record leave says "You can't record leave for yourself" | Nobody records or approves their own leave. Ask for it on the Leave page and another manager approves it. The owner can record their own. |
| Record leave refuses time in lieu | They have fewer hours banked than it would spend. Log the hours they are owed in the balances panel first, or pick another leave type. |
| Leave for part of a day did not reach Xero | Send approved paid leave too is off, its leave type isn't matched to Xero's, or Xero would not take its hours (the send then withdraws it). It is listed under Leave still to enter in Xero with its type, date and hours. Add it in Xero with those hours, or turn the switch on and match the type. |
| A closed day still shows shifts | Mark it as a business closure. |
| Where do I turn the clock off? | Settings → the "Team" tab → Time clock → "Use the time clock". It's separate from this module, and it works whether or not Roster is on. |
| A staff member can't clock in | They likely have no rostered shift now and "Only clock in with a rostered shift" is on, roster them (it counts at once, no need to publish), or relax the rule at Settings → the "Team" tab → Time clock. The blocked attempt is listed in Timesheets. |
| Someone clocked in as someone else (kiosk) | Switch the kiosk to Personal PIN at Settings → Kiosk → How staff clock in. |
| Nobody can clock in and it says "Turn on location" | The on-site check is set to required and the phone is not sharing a location. The person allows location for the site in their browser settings, or you switch the check to flag-only at Settings → the "Team" tab. Staff standing at work whose phone only knows the suburb are let through, so this is a location that is off, not one that is vague. |
| The on-site check flags nobody | Open Settings → the "Team" tab → Location check on clock-in and look at the pin. A check with no workplace pinned does not run, and the tick clears itself when you save to say so. Check the pin is the workplace and not your house. |
| A shift shows "auto clock-out · check" | They were still clocked in the grace past their rostered finish, so it was closed at the rostered finish, or at the max shift length with no roster. It is not paid until approved: correct the finish time if it is wrong, then Approve. |
| Somebody stayed back and their hours stop at their rostered finish | The auto clock-out closed them at the finish while they were still working. If they tap their name when they finish, Clock out now records the real time for you to approve; otherwise correct the finish on that entry and approve it. Raise the Auto clock-out grace to how late people genuinely stay. |
| An empty entry beside a shift, in and out in the same minute | A name tapped twice. It pays nothing. The clock now asks before a clock-out within two minutes of clocking in. |
| Finalise says a week has entries waiting on approval, and my business doesn't require approval | A forgotten clock-out was closed automatically and is waiting for you. Open the week; the banner names it. Approve it (or type that day's hours) and finalise again. |
| Approved leave is missing from the payroll file | Check the leave is approved and paid on the Leave page, and that the week was finalised after it was approved (a finalised week keeps the figures it was frozen with: unfinalise and finalise again). The grid shows it as LV on the day. |
| A leave day pays 7h 36m and they normally do 8 | Nothing was rostered that day and they have no regular hours on file, so it pays your hours per leave day (Leave settings). Roster the day or add their regular hours to pay their own hours. |
| "You're already clocked in" when pressing Clock in | Their screen was out of date: they clocked in somewhere else (the tablet, another phone). Nothing was changed; the screen refreshes to show the shift. |
| How does someone record a break? | With Staff record their breaks on, Start unpaid break and End break, on the tablet (by name or PIN) or their phone. Otherwise they punch out and back in, and the gap is unpaid with nothing to type, or you type the minutes in the break box on the row, or set the automatic rule. See §7b-ii. |
| Someone shows twice on one day | Two punches on one shift, which is what an unpaid break looks like. Their paid time already excludes the gap, and attendance counts it as one shift. |
| A break shows on the timesheet but pay didn't change | The automatic rule applies to rostered hours only unless Also apply to clocked time is ticked. Tick it, or type the minutes on the row. With it ticked, it applies to a shift whose break box is empty (auto), never over a typed figure, including 0. |
| Someone got paid for a break they didn't take | Type 0 in that row's break box. A figure you set by hand always beats the automatic rule. |
| I added a shift after publishing. Does the whole team get emailed again? | No. Press Re-publish and the panel lists only the people whose own shifts changed, with a tick you can clear. Everybody else is left alone. See §7a-iv. |
| I changed a shift and nobody was told | Nothing is sent until you press Re-publish. The roster says "Changes have been made. Re-publish to let them know." until you do. |
| Someone still sees a shift I removed | It goes from every open roster within a second or two, theirs included. A screen that was asleep or offline catches up when it is brought back to the front, and a reload always shows the roster as it is now. See §7a-vi. |
| Somebody I unticked is still on the list | On purpose. A change nobody has heard about is not finished, so they stay there until they are emailed. |
| Somebody is around but not working, how do I record that? | Press + on their empty day and switch to On call. It is never paid and they are told when you publish. See §7a-iii. |
| A casual told me they can't work a day, but they don't use the app | Press + on that day and switch to Unavailable. It goes on the roster and in their My work, and nothing fills it in by itself. See §7a-v. |
| An on-call day is showing hours | It cannot. On call is not a shift: it is stored separately from the roster and no part of pay, timesheets or the payroll export can see it. |
| Somebody says they never hear about roster changes | Check their own switches in Settings → Notifications: the in-app message always arrives, but email and phone notifications are each person's own choice. |
12. Error messages
Roster edits and approvals confirm inline (e.g. "Week approved"). The payroll export is disabled until there are approved groups to export.
Related: Approvals & payroll sign-off · Leave · Shift requests · Calendar · Kiosk (a tablet on the counter)