Industry guide · HR

Payroll Bureau Software: Fixing the 90-Client Crunch Week

The short answer

Build when your bureau is past roughly 60 to 80 client payrolls and your team is still hand-keying timesheets, reconciling filings in spreadsheets and answering "where is my payslip" emails. In Digital Heroes delivery terms, a focused first release covering client onboarding, an import engine and a branded client portal runs $60k to $130k and ships in 12 to 16 weeks. A full bureau platform with filing workflow, pay run approvals and white-labelled portals runs $150k to $400k phased over 6 to 12 months. Keep the engine that calculates gross-to-net and files with the tax authority. Build the layer around it that your bureau actually sells.

Why payroll bureau software makes or breaks a multi-client bureau

A payroll bureau does not have a payroll problem. It has a multiplication problem. One client running 40 employees on Xero Payroll or BrightPay is a solved thing. Ninety clients, each with their own pay frequency, their own pension provider, their own timesheet format, their own approver who goes quiet until 4pm on the day before the pay date, is a completely different business. The calculation engine handles a small slice of the work. The rest is chasing, importing, checking, filing and explaining.

Most bureau owners recognise this week. It is the 26th. Your payroll manager has 31 clients on a monthly cycle landing in the same four days. Client data arrives as a CSV from a Deputy export, a photographed timesheet in a WhatsApp thread, an email that says "same as last month but Priya left on the 12th and Tom is now 40 hours", and a Google Sheet that a restaurant owner updates live while you are reading it. Your team keys those into BrightPay or IRIS Payroll Professional or Sage 50cloud Payroll, one client file at a time, each in its own instance, each requiring a separate login or a separate open-close cycle. Nobody can see across all 90 payrolls at once. The master view is a spreadsheet called PAYROLL TRACKER 2026 v4 FINAL.xlsx with conditional formatting that somebody built in 2019 and nobody dares touch.

The cost of that is concrete. In the bureaus we have scoped, a processor handling 90 payrolls spends roughly 45 minutes per client per cycle on admin before any calculation happens. That is around 68 hours a month spent moving data between systems that already hold the data, most of a full-time role, and it is the exact work that makes people quit. It is also where the errors live. One transposed hours figure on a 22-person client is a corrected filing, an apology call, and a client who now checks everything you send for the next six months. Bureaus rarely lose clients over price. They lose them over the third mistake.

Problem: every client sends data differently, and nobody will change

You have told your clients for years to use the template. Roughly a third do. The rest send what they send, because the salon owner is not going to learn your spreadsheet and the construction firm's site manager has been photographing the same paper sheet since 2011. So your team does the translation, manually, ninety times a cycle.

Off-the-shelf payroll software cannot solve this because it starts one step too late. BrightPay, IRIS Payroll Professional and Sage all assume clean input already exists inside their import format. Their CSV importers are rigid: wrong column order, a merged header row, a date written as 12/03 instead of 2026-03-12, and the file bounces. They are built for one company's payroll clerk, not for a bureau absorbing 90 different data cultures.

What a custom build does: an ingestion layer sitting in front of whatever engine you keep. Each client gets a stored mapping profile: this client's file always has hours in column D, always uses employee nickname not payroll ID, always sends Monday-to-Sunday weeks. The profile is learned once, on the first import, and reused forever. Fuzzy-matched employee resolution handles "Tom B", "Thomas Bennett" and "T.Bennett" resolving to the same payroll record with a confidence score, and anything under threshold gets queued for a human to confirm rather than silently guessed.

AI earns its keep here in one narrow way. Document extraction on photographed and PDF timesheets works well now: a vision model reads the sheet, pulls names, dates and hours into structured rows, and flags low-confidence cells for review rather than asserting certainty. Same for the "same as last month except" email. A model parses the free text into proposed deltas, leaver on the 12th, hours changed to 40, and presents them as a diff against last period for one-click confirmation. The processor stops typing and starts approving. In our delivery experience, that single change is the biggest hour reduction in the whole build.

Problem: filings and deadlines live in a spreadsheet and someone's head

Real Time Information (RTI) submissions, pension uploads to NEST or The People's Pension, year-end documents, new starter declarations, each with its own deadline and its own consequence for being late. In most bureaus the tracking for this is a tab in the master spreadsheet, updated by hand after the fact. The system of record for "did we file for client 47" is a green cell that someone remembered to colour.

Desktop payroll tools know whether a submission succeeded for the file that is currently open. They do not give you a portfolio view. There is no single screen that says: across all 90 clients, three Full Payment Submission (FPS) filings failed, one pension upload bounced on a member ID mismatch, and two clients have not approved their pay run 18 hours before the pay date. You find out by opening files one at a time, or by a client finding out first.

A custom build makes the filing obligation itself a first-class record, not a side effect. Every client has a schedule of obligations generated from their pay calendar. Each obligation has a state: due, submitted, accepted, rejected, corrected. Submission responses are captured and stored against the record with the raw response, so when the tax authority disputes something eight months later you have the receipt rather than an argument. The dashboard is ranked by risk, not alphabetically: hours-to-deadline against current state. Alerting escalates by role, from processor at T-48 to payroll manager at T-24 to director at T-6. Nothing gets discovered on the pay date.

Problem: chasing approvals is a job nobody has, done by everybody

You cannot run the payroll until the client confirms. The client confirms when they feel like it. So your team sends emails, then follow-up emails, then texts, then calls, and the compressed four-day window gets more compressed. Every bureau has one client whose approval reliably arrives at 5:40pm on the last possible day, and the whole team knows their name.

Generic tools have no concept of this. Xero Payroll and QuickBooks Payroll assume the person approving is the person running the payroll. There is no bureau-to-client approval loop, so bureaus reconstruct one out of email threads, and the audit trail for "you approved this" is a forwarded message.

What to build: a per-client approval workflow with a hard deadline derived from the pay calendar, a mobile-friendly approval view showing the pay run summary with variance flags against last period, and named approvers with delegation for holidays. Approval is a recorded event with a timestamp and a person, which ends the "we never agreed that bonus" conversation permanently. Sequenced reminders fire automatically at the intervals you set, through the channel that client actually reads, whether that is email, SMS or a WhatsApp Business message. AI drafts the chase copy in your bureau's tone, references the specific missing items and the specific deadline, and after two ignored nudges escalates to a human with context attached rather than sending a fourth identical email. In our experience, automated sequenced chasing pulls the median approval time forward by more than a day and takes the emotional labour out of the week.

Problem: the client portal you have is not really yours

Bureaus want to look like a payroll department, not a reseller. But the portal your clients log into is branded by your software vendor, has a feature set you cannot change, and quietly teaches your clients the name of the tool you use. Some of those clients will eventually work out they could buy it directly at the vendor's list price.

Vendor portals also stop at payslips. They do not hold your engagement letter, your fee schedule, your document requests, or the conversation history for that client. So the client experience fragments: payslips over there, documents in Dropbox, questions in email, invoices in Xero.

A custom portal, white-labelled to your bureau, consolidates it: employee self-service for payslips and P60s, employer view for pay run history and cost reports, a document vault with request-and-chase built in, and a message thread per client that lives against the client record so it survives staff turnover. Add role-based access so the finance director sees totals and the site manager sees only their site. This is also the natural place to put an AI assistant that answers the volume questions employees ask, why is my net pay different this month, where is my payslip from March, what is this deduction, grounded strictly in that employee's own payslip data, with anything ambiguous handed to your team. Those questions are a meaningful share of bureau inbound and none of them need a human.

Problem: you cannot see whether a client is actually profitable

Most bureaus we work with price per payslip, sometimes with a monthly minimum. Then reality happens. One 30-employee client sends clean data on the 2nd and takes 20 minutes. Another 30-employee client sends chaos, changes three things after approval and generates six phone calls, and takes four hours. You charge them the same. You have no data that says otherwise, so at renewal you raise everyone by 5 percent and lose the good ones.

No off-the-shelf payroll product measures this, because it is not a payroll question. It is an operations question about your bureau.

A custom build instruments the work itself: time-to-process per client per cycle, number of corrections after approval, chase count, inbound query volume, rerun count. Set that against fee and you get effort-adjusted margin per client, ranked. Suddenly the repricing conversation is evidence, not instinct: this client generates 11 chases a cycle and 3 post-approval corrections, here is the revised fee or here is the process change that fixes it. Forecasting on top of that history is useful too, predicting which clients will run late this cycle based on their own pattern so you can front-load the chasing before the crunch instead of during it.

What this costs and how long it takes

Digital Heroes delivery bands across 2,000-plus projects. A focused first release for a bureau, meaning the ingestion engine with per-client mapping profiles, the obligations and deadline dashboard, and the approval workflow, typically lands at $60k to $130k and ships in 12 to 16 weeks. A full platform with the white-labelled portal, document vault, employee AI assistant, billing integration and profitability analytics typically runs $150k to $400k phased over 6 to 12 months, released in stages so the bureau gets value from the ingestion layer in month three rather than month eleven.

What pushes price up in this category, specifically:

Number of upstream integrations. Each timesheet source, Deputy, Planday, TSheets, a client's homegrown Access database, is real work. Five sources is fine. Twenty-five is a project of its own. Pension provider integrations are worse than they look: NEST and The People's Pension behave differently and file-format edge cases eat weeks.

Whether you keep or replace the calculation engine. Wrapping BrightPay or IRIS and driving it through import and export is dramatically cheaper than building gross-to-net and statutory calculations yourself. Building your own engine means owning legislation changes forever, which is an annual cost, not a one-time one. We steer bureaus away from this almost always.

Multi-jurisdiction. One tax authority is a build. Three is three builds with a shared shell.

Historical migration. Bringing 90 clients' history across from desktop instances, with employee records, year-to-date figures and prior filings, is often 15 to 25 percent of first-release cost and is the thing most estimates forget.

Build or buy: take the position

Buy if you are under about 40 clients, your team is two or three people, and your clients are mostly small and similar. BrightPay Bureau or IRIS plus a decent tracker works, and a few thousand a year of licences beats $90k of build. Buy if you are growing fast enough that your process changes every quarter, because you should not automate a process you have not settled.

Build when these show up together. Your headcount grows in step with your client count, which means you have no operating leverage and you are a staffing agency with extra steps. You have hired a person whose actual job is chasing and keying. You are turning down clients because the four-day window is full. A client has left over an error that was a data-entry error, not a payroll error. Your portal has a vendor's logo on it and your clients are getting curious. And the tell that matters most: your best processor has built a shadow system of macros and personal spreadsheets that nobody else understands, because that is a specification you already paid for and cannot yet use.

The position we take: almost no bureau should build a payroll engine. Almost every bureau past 80 clients should build the layer around one. The engine is a commodity you rent. The ingestion, the obligations tracking, the approval loop and the portal are where your margin and your client relationship actually live, and no vendor will ever build those for a bureau because the vendor's customer is the employer, not you.

How to choose a developer for payroll bureau software

Ask them to model your data before they quote. A developer who has done this will draw the bureau, client, pay group, pay run, employee, pay period structure without prompting, and will ask about effective dating within the first ten minutes. Effective dating is the whole game: a pay rate change dated the 6th when the period runs 1st to 30th, a leaver processed after the run, a retrospective correction to a period already filed. If they treat employee records as rows you update rather than facts that are true for a date range, they will build you something that cannot produce a correct historical payslip, and you will find out at year end.

Ask what they will do when the tax authority's API rejects a submission at 4pm on a Friday. The answer you want covers retry logic, dead letter queues, the raw response stored against the obligation record, and a human alert. If the answer is "we'd handle the error", they have not run production payroll infrastructure.

Check the integration track record concretely, not by logo. Have they actually pushed data into a pension provider's file format, driven a desktop payroll product's import and export cycle, and dealt with a bank payment file? These are unglamorous, poorly documented, and the difference between an eight-week and a twenty-week timeline. Ask for a specific story about one that went wrong.

Ask about data handling before they ask you. Payroll data is salaries, national insurance or social security numbers, bank details, court orders, sick pay. You want field-level encryption for the sensitive columns, an access log per client record showing which of your staff opened whose data, retention rules, and a defensible answer on where the AI extraction step sends a photographed timesheet and whether that data trains anything. If the developer is casual about the last part, walk. You will be the one signing the data processing agreement with your clients, not them.

Finally, own the code. Full repository access, deployment you control, no per-seat lock. You have already been on the wrong end of a vendor relationship. Do not build a new one.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Bersin by Deloitte research found organizations that use HR technology and employee-centric design to build a flexible, empowering workplace are more than 5 times more effective at improving employee engagement and retention than their peers, and 2.5 times more likely to reach 'high-impact' status by leveraging HR for digital transformation. Source: Bersin by Deloitte (2017) →
  2. Brandon Hall Group research on onboarding reports that done well, structured onboarding drives measurable gains in new-hire productivity, employee engagement, and retention; the page notes 41% of organizations experience greater than 5% turnover among new hires. Source: Brandon Hall Group (2024) →
  3. The NRF discontinued its long-running annual shrink report, stating that a broad study of retail shrink 'is no longer sufficient for capturing the key challenges and needs of the industry' - important context that qualifies how POS/shrink benchmarks should be cited going forward. Source: Retail Dive (2024) →
  4. Digital Champions expect to achieve about 16% in cost savings and around 15% in revenue gains from digital operations over five years; the study surveyed 1,155 manufacturing executives across 26 countries. Source: PwC / Strategy& (2018) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom payroll bureau software cost for a bureau running 90 clients?
A focused first release covering data ingestion, deadline and filing tracking, and client approval workflow typically runs $60k to $130k and ships in 12 to 16 weeks. A full platform adding a white-labelled portal, document vault, AI employee assistant and profitability analytics runs $150k to $400k phased over 6 to 12 months. Those are Digital Heroes delivery bands across 2,000-plus projects. At 90 clients the ingestion layer alone usually pays back fastest because it attacks the 45 minutes per client per cycle of manual keying we see in bureau scoping.
Should we build our own payroll calculation engine or keep BrightPay or IRIS?
Keep the engine. Building gross-to-net and statutory calculations means owning every legislation change forever, which is a permanent annual cost rather than a one-time build, and it is the one part of the stack where off-the-shelf is genuinely good. Wrap the engine you already license and build the bureau layer around it: ingestion, obligations, approvals, portal. That is where your margin and your client relationship live and no payroll vendor will build it for you, because their customer is the employer, not the bureau.
Can custom software read the photographed timesheets and messy spreadsheets our clients send?
Yes, and this is currently the highest-value AI use in a bureau. A vision model extracts names, dates and hours from photographed and PDF sheets into structured rows, with low-confidence cells flagged for a human rather than silently guessed. Per-client mapping profiles handle the spreadsheet chaos: the system learns that this client always puts hours in column D and uses nicknames, then reuses that mapping every cycle. Your processor moves from typing to approving.
How long does it take to migrate 90 clients from desktop payroll instances to a new system?
Migration typically runs 15 to 25 percent of first-release cost and is the line item most estimates forget. Moving employee records, year-to-date figures and prior filings out of separate BrightPay or IRIS desktop files is slow because the data is inconsistent across instances. Plan to run parallel for at least one full cycle per client cohort rather than cutting everyone over at once, and migrate in waves grouped by pay frequency so you are never migrating during a crunch week.
At what client count does it stop making sense to run a payroll bureau on BrightPay Bureau plus a spreadsheet?
Roughly 60 to 80 client payrolls is where the spreadsheet stops holding. The tell is not client count though, it is whether headcount grows in step with clients, which means you have no operating leverage. Other signals: you have hired someone whose real job is chasing and keying, you are turning down work because the four-day window is full, and your best processor has built a shadow system of personal macros nobody else understands.
Who owns the code if we pay an agency to build our bureau platform?
You should own all of it: full repository access, deployment infrastructure you control, no per-seat licence back to the developer, and no clause that makes you dependent on them for routine changes. Get this in the contract before work starts, not at handover. You have already experienced being on the wrong side of a vendor relationship with your current payroll software portal, so do not build a second one.
What are the compliance and data protection requirements for custom payroll bureau software?
You are a data processor for your clients, so the obligations flow through to whatever you build. Practically that means field-level encryption on salary, national insurance or social security numbers and bank details, an access log showing which of your staff opened which client's records, defined retention rules, and a clear answer on where AI document extraction sends data and whether it is used for training. Filing responses from the tax authority must be stored raw against the obligation record so you can evidence what was submitted and when, months later.
How does a custom client portal compare to the portal that comes with our payroll software?
The vendor portal carries the vendor's branding, stops at payslips, and teaches your clients the name of the tool you use, which some of them will eventually buy directly at list price. A custom portal is white-labelled to your bureau and consolidates payslips, P60s, pay run history, a document vault with request-and-chase, and a per-client message thread that survives staff turnover. It is also the right place for an AI assistant to answer the high-volume employee questions about net pay changes and missing payslips, grounded only in that employee's own data.
How do we work out which of our payroll clients are actually unprofitable?
No payroll product measures this because it is a question about your bureau, not about payroll. A custom build instruments the work: time-to-process per client per cycle, corrections after approval, chase count, inbound query volume, rerun count. Set that against the fee you charge and you get effort-adjusted margin per client, ranked, which turns repricing from an across-the-board 5 percent increase into a specific evidenced conversation with the specific clients generating the effort.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
At what point does a company outgrow BambooHR?
The breaking point Digital Heroes sees most often is 100 to 250 employees, when approval chains, multi-state rules, or shift scheduling stop fitting BambooHR's fixed workflows and HR starts managing exceptions in spreadsheets. If your team exports to Excel every week to do something the platform cannot, you have already outgrown it. Per-employee pricing compounds the problem, since the bill grows with every hire while the feature gaps stay the same.
How long does it take to build a custom HR system?
A working first version takes 12 to 16 weeks in Digital Heroes projects: employee records and onboarding first, then time off and reporting. A full platform with applicant tracking, performance reviews, and payroll integration is a 6 to 9 month effort. Anyone quoting a complete HR suite in 4 weeks is describing a template, not custom software.
Is custom software more secure than off-the-shelf SaaS?
Neither is secure by default; security tracks the practices of whoever builds and operates the system, not the model. SaaS gives you the vendor's certifications and patching but puts your data in a shared multi-tenant platform on their terms, while custom gives you full control over data residency, access rules, and compliance requirements like HIPAA, with the responsibility sitting with you and your agency. Before hiring anyone for a system holding sensitive data, ask for their security checklist: encryption at rest and in transit, an OWASP Top 10 review, role-based access, and a penetration test before launch.
What tech stack should custom HR software use?
Choose boring and hireable: React or Next.js on the front end, Node.js or Django behind it, and PostgreSQL for data, since Postgres row-level security maps cleanly onto salary visibility rules. That is the Digital Heroes default for HR systems because any future team can maintain it. Be wary of agencies pushing an exotic stack; you will be hiring for it for a decade.
Who owns the code if an agency builds our HR software?
You should own it outright, with the contract assigning full intellectual property to you on final payment and the code living in a repository you control from week one. Watch for agencies that license you their platform, because that recreates the vendor lock-in you left BambooHR to escape. Digital Heroes assigns 100 percent of custom code to the client; the only carve-outs should be standard open source libraries.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?