Payroll is one of the few places a cleaning business loses money without anyone noticing. This guide walks through how to run cleaning company payroll properly, from the clocked hours and travel time that feed into it, to the absence rules that change the numbers every week.
Most payroll software is built for a business where everyone clocks in at nine and clocks out at five. Cleaning does not work that way. A single operative might do two hours at an office block at six in the morning, three hours at a school at three in the afternoon, and a gap in between that is not paid at all. Multiply that by a team working across a dozen sites, on different days of the week, and the hours stop looking like a tidy spreadsheet.
Split shifts are only part of it. Travel between sites is sometimes paid and sometimes not, depending on company policy. Holiday and sickness both need to be recorded separately from worked hours, and both change how much a person is owed for the period. Some jobs, a compliance clean or a one-off deep clean, may carry a different rate to a routine general clean on the same rota.
The result is that "doing payroll" for a cleaning business really means pulling together several different sources every week: the rota, whatever was actually worked on the day, absence requests, and any manual corrections, then reconciling them by hand. Get the source data right and the rest is arithmetic. Get it wrong and you are either underpaying someone, which causes a grievance, or overpaying them, which nobody flags. Fixing the rota with proper cleaning company rota software is the first step, because payroll can only ever be as accurate as the schedule it is built from.
A payroll run is only as good as the hours it starts with, and a paper timesheet or a text message saying "started at 8" is a guess, not a record. The reliable version is a clock-in and clock-out logged from the site itself, tied to the specific booking someone is on. That is what the Xota operative app does: cleaners clock in when they arrive and clock out when they leave, from their phone, and that time is what feeds through to hours and payroll rather than a self-reported timesheet filled in at the end of the week.
Because the clock-in is tied to a booking on the schedule, a late arrival or a job that overran shows up straight away rather than surfacing as a mystery three hours short at month end. Photo proof and a checklist at completion give the same visibility on quality as the clock-in gives on time, so admins are not chasing either after the fact.
Holiday is paid at the team member's normal rate against their entitlement, and sickness is recorded against the company's own sick pay policy, so the two need to be treated differently the moment they are logged rather than sorted out at the end of the pay period. In Xota, both sit on the same schedule as bookings: an operative requests time off from their phone, an admin approves it on the web or mobile, and it appears on the calendar immediately, in the same place travel time and bookings do.
That matters for payroll because the record is already complete by the time the run happens. There is no spreadsheet of who was off to reconstruct after the fact, no chasing a supervisor to confirm someone actually took the Friday off. The HR and attendance side of Xota handles entitlement, the working week and bank holidays so the days that should count as leave are the days that do, and payroll draws on that same approved record rather than a second version of the truth.
Policies vary from one cleaning company to the next. Some pay for the time spent driving between sites during the working day but not the commute from home to the first job. Others pay a flat travel allowance regardless of distance. Whichever rule a company applies, it only works if the travel time is actually recorded rather than estimated after the event.
Xota schedules travel time as its own item on the calendar, sitting between bookings with a recorded duration and distance, separate from the time spent working on a job. That gives a clean line between "worked" and "travelled" for whichever companies choose to pay travel between sites, so it can be included, or excluded, in the hours that reach the payroll run without a manual adjustment each week.
Once bookings for the period are signed off, with the photo and signature captured on completion, and any absence for the same window is approved, the hours for that pay period are complete. That is the point at which Xota calculates a payroll run in-app: it resolves the correct hourly rate for each team member, adds together worked hours from clock-ins, approved holiday and sickness, and travel time where a company pays it, and produces gross pay per person for the period, viewed directly in the app rather than in a separate spreadsheet.
Xota does not currently export payroll as a CSV or a payslip, and it does not sync directly with Xero, QuickBooks, Sage or any other accounting package. A public REST API is available for teams who want to build their own connection, and direct accounting integrations are on the roadmap. Most cleaning companies using Xota today calculate payroll in-app and hand the figures to their bookkeeper or accountant from there. Invoicing runs on the same signed-off bookings but is a separate step, handled in the Finance module rather than the payroll run itself.
If wages are the part of running a cleaning company that eats the most admin hours each week, it is worth looking at what payroll software built for cleaning companies actually needs to do differently to generic HR tools, and checking it against your team size on pricing.
Straight answers to the questions cleaning business owners ask about running payroll.
Xota calculates a payroll run in-app from clocked hours, approved absence and travel time, resolving the correct hourly rate for each team member and producing gross pay per person for the period. Nothing needs to be re-typed from a separate timesheet.
No. Xota calculates payroll in-app but does not currently export to Xero, QuickBooks, Sage or any other accounting software, and there is no CSV or payslip export. A public REST API is available for teams who want to build their own connection, and direct accounting integrations are on the roadmap.
It can. Travel time between bookings is scheduled as its own item with a recorded duration, separate from the booking itself, so companies that pay for travel between sites can include it in the hours that feed the payroll run.
Approved holiday and sickness sit on the same schedule as bookings, so by the time payroll is run the absence for the period is already recorded and approved rather than chased up afterwards. Pay for absence follows the company's own holiday entitlement and sickness policy.
Most UK cleaning companies run payroll weekly or four-weekly, matching how operatives are paid and how often bookings are signed off. Xota calculates a run for whatever period you choose, based on the hours completed in that window.
Clocked hours, approved absence and travel time, calculated into a payroll run automatically. Start your 90-day free trial of everything. No credit card, cancel any time.