Industry guide · Accounting

Accounting Firm Workflow Software: What to Build When Karbon, Email and Spreadsheets Stop Scaling

The short answer

If your firm coordinates work across Karbon, Outlook and a wall of tracking spreadsheets and you are past roughly 12 to 15 staff or two service lines, a custom workflow layer usually pays for itself in one busy season: expect $40,000 to $90,000 for a focused first release shipping in 10 to 14 weeks, with fuller practice platforms landing between $100,000 and $250,000. Below that size, configuring Karbon properly is the cheaper honest answer.

What actually breaks in a CPA firm running on Karbon, email and spreadsheets

Picture a 22-person firm in the second week of March. Around 1,100 individual returns, 240 business returns, 38 monthly client advisory services (CAS) engagements. Work items live in Karbon. Client conversations split between Karbon triage and three partners' personal Outlook inboxes, because the partners never fully moved over. The real due date list is an Excel file called Master Tracker 2026 v7 FINAL, rebuilt from a Karbon export every Monday by the tax manager. It takes her three hours and it is stale by Wednesday.

Karbon is genuinely good at what it sells: shared inboxes, work templates, client tasks. The damage comes from everything it cannot see. E-file acknowledgments sit inside UltraTax. Signed 8879s sit in SafeSend. Engagement letters sit in Ignition. Workpapers sit in SmartVault. When a partner asks where the Hendersons stand, the honest answer requires opening four systems and one spreadsheet, and the systems disagree.

So the firm compensates with people. An admin spends half her week re-keying status between tools. Seniors keep private side lists because they stopped trusting the tracker two seasons ago. Every year adds one more spreadsheet, one more color code, one more Saturday. The question this guide answers is whether a custom build fixes that, or just becomes the fifth system nobody trusts.

The Monday status spreadsheet that is wrong by Wednesday

The export ritual exists because no single tool holds a return's status end to end. A 1040 moves through states your firm defined and no vendor did: waiting on documents, in preparation, in review, waiting on the 8879, e-filed, accepted, extended. Karbon knows some of those states. UltraTax knows others. SafeSend knows exactly one. The Excel tracker is a human-powered join across all of them, and it goes stale in about 48 hours during busy season.

Off-the-shelf software cannot fix this because the vendors do not cooperate. Karbon has a usable API, but it has no idea the IRS accepted a return, and UltraTax will not push that fact anywhere. No vendor builds deep sync into a competitor's ecosystem, so the gap is permanent by design.

A custom build attacks the join itself. The pattern Digital Heroes ships most often is a status service: it reads work item state from the Karbon API, ingests the acknowledgment exports your tax software already produces, pulls signature status, and resolves everything into one row per client engagement. The Monday ritual disappears because the tracker is now a screen instead of a file, current at 7 a.m. every day, including Saturdays in March.

Chasing missing client documents quietly consumes an admin salary

A client uploads six of fourteen documents to the portal, emails two more, and texts a photo of a 1099-INT to the partner's cell. The preparer opens the file, finds the brokerage 1099-B missing, parks the return, and the firm burns a second and third touch on a job that should have taken one. Multiply that across 1,100 returns and document chasing eats a full admin position between January and April.

Karbon client tasks help, but they are generic checklists. They do not know what this specific client provided last year, cannot recognize that the PDF uploaded on Tuesday is the missing K-1, and cannot escalate differently for the client who always delivers in the final week.

The custom version starts from prior-year source documents. Last year's return had four W-2s, two K-1s, a 1098 and a brokerage statement, so this year's request list builds itself. Reminders escalate on the firm's cadence, uploads are matched against the outstanding list, and the work item only flips to ready to prepare when the list is complete. Preparers open complete files. The chase becomes a system job instead of an admin's entire Tuesday.

Capacity planning in February is guesswork with a spreadsheet on top

By mid-February one senior is drowning at 68 hours while another sits at 41, and the scheduling spreadsheet knows neither number. Returns get assigned by memory of who handled the client last year. Budget-to-actual surfaces once, in the realization report after April.

Karbon can show work item counts and estimated minutes, but counts are the wrong unit. One 1040 is 90 minutes; another is 11 hours with a rental schedule, three brokerage accounts and a state credit mess. The complexity signal lives in prior-year actual hours inside the tax software and your time and billing history, places no practice management product can reach.

A custom capacity engine assigns each engagement a complexity score from prior-year actuals and form counts, tracks live load per preparer against it, and flags trends: this senior hits 70 hours by Friday at current intake. The tax manager rebalances on Tuesday instead of reading about the damage in May.

The CAS monthly close runs on tribal knowledge

Thirty-eight monthly clients, each with quirks: this one's Amex feed drops transactions, that one needs payroll accrued from a Gusto report, another expects the flux memo by the 10th. Those rules live in one manager's head and a scatter of Excel checklists. When she took two weeks off, three closes slipped and a client noticed before the firm did.

Karbon repeating templates can hold the task list, but a checkbox is not verification. Bank recs done gets ticked whether or not the operating account still shows 47 unreconciled transactions, because Karbon has no opinion about what is inside QuickBooks Online.

A custom close module does, through the QuickBooks Online and Xero APIs. It counts unreconciled transactions per account, detects broken bank feeds and unposted payroll, and refuses to mark a close complete while the ledger contradicts the checklist. A firm-wide dashboard shows every close by day count, so a stall is visible on day 12 instead of day 30. Tribal knowledge becomes system state, which is also what makes a CAS book sellable later.

Nobody trusts the client data in any of the five systems

A married couple with two S corps and a family trust is five Karbon contacts, three portal logins, four versions of one mailing address, and a Section 7216 consent filed under one entity but not the others. An engagement letter goes out in the name of the entity that dissolved in 2024.

Off-the-shelf contact records are flat because they have to work for every industry. Accounting reality is relational: households, entities, ownership percentages, authorized signers, and the divorced spouses who must never see each other's documents again. No general-purpose client relationship management (CRM (Customer Relationship Management)) layer models that, and none will.

In a custom build this data model is the spine, not a feature. Entities relate to households, people relate to entities with roles, and every document, consent and return hangs off the right node. Each person gets one portal login showing exactly the entities they may see. Consents and engagement letters are tracked per entity per year, with expiry dates that surface before busy season.

What custom accounting firm software costs and how long it takes

These bands come from Digital Heroes delivery experience across 2,000+ projects, not a pricing page. A focused first release runs $40,000 to $90,000 and ships in 10 to 14 weeks. That usually means the live status dashboard plus the document chase engine, integrated with the Karbon API, one tax package's exports, and QuickBooks Online. A fuller practice platform, adding a client portal, the capacity engine, the CAS close module and multi-office permissions, lands between $100,000 and $250,000 over five to eight months.

What moves the number up: each additional tax package, because Lacerte, UltraTax, Drake and CCH Axcess all export differently and none offers a friendly public API, so each is its own integration effort. A client-facing portal roughly doubles security and design work compared with internal-only tooling. Document classification, reading an upload and recognizing it as a K-1, adds real cost. And replacing Karbon outright rather than building on top of it can double the total.

One scheduling rule matters more in this industry than any other we build for: production freezes from late January through April 15. Plan to be live and stable by November, or plan for May.

Build vs buy: when staying on Karbon is the right call

Under roughly 10 to 12 staff, or with a single service line, do not build. Most firms that size with workflow pain have an unconfigured Karbon, not a missing product: templates never adapted to the firm's actual stages, triage half-adopted, client tasks unused. A few thousand dollars of setup work and partner discipline beats a custom build at that scale.

The signals that the math has flipped: someone exports Karbon to Excel every week to answer a basic status question. A person on payroll spends most of their time re-keying between systems. You run three or more service lines with genuinely different workflows. You sit at 25 or more seats, where Karbon's published $59 to $89 per user per month starts to compare with owning your own layer. Or you merged with another firm and now need one view across two stacks.

Our position after building for this industry: keep Karbon and build on top of it. Let Karbon keep email triage and task management, the things it is best at, and let the custom platform own cross-system status, document collection and the client data model. Rip-and-replace is where accounting firm software budgets go to die. The layered approach ships inside a quarter and proves its value before you commit another dollar.

How to choose a developer for accounting firm software

Four questions separate developers who have shipped for CPA firms from developers who will learn on your budget.

First, ask exactly how they will get data out of UltraTax or Lacerte. If the answer assumes a public API exists, end the call. The credible answer covers scheduled exports, report file parsing and print-to-file workflows, and is honest about which of those breaks when the tax software updates each fall.

Second, ask when they plan to release. Anyone proposing a February go-live has never worked a busy season. You want a code freeze from late January through April 15 written into the project plan before you have to ask.

Third, ask what IRS Publication 4557 requires and how the build fits your written information security plan (WISP). A developer who has done this work raises encryption of returns at rest, access logging and role separation without being prompted. One who searches for it later is a liability you will discover during a client records request.

Fourth, ask how they would model a married couple with two S corps and a trust. If the answer is a single clients table, keep looking. And whatever you sign, the contract must give you the code, the data and the cloud accounts outright. You are doing this to stop renting your firm's workflow. Do not rent it again from the people you hired to fix it.

Research & sources

The evidence behind this guide

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

  1. APQC's Open Standards Benchmarking data on the monthly financial close found median performers take about 6.4 calendar days to close the books, while top performers (top 25%) do it in 4.8 days or fewer and bottom performers (bottom 25%) take 10 or more days. Source: APQC (2018) →
  2. Gartner estimates RPA can eliminate up to 25,000 hours of avoidable rework caused by human errors in the finance function each year, equating to savings of roughly $878,000 for an organization with 40 full-time accounting staff (based on interviews with more than 150 corporate controllers and chief accounting officers). Source: Gartner (2019) →
  3. Nucleus Research's analysis of published analytics deployment case studies found business intelligence and analytics returned an average of $13.01 in benefits for every dollar spent, up from $10.66 three years earlier. Source: Nucleus Research (2014) →
  4. SaaS spend averaged $4,830 per employee (up 21.9% year over year), with large enterprises (10,000+ employees) spending roughly $284M annually and running about 660 apps, while organizations wasted an average of $21M annually on unused licenses. Source: Zylo (2025) →
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 workflow software cost for a 20-person CPA firm?
Plan on $40,000 to $90,000 for a focused first release, which in Digital Heroes delivery experience across 2,000+ projects covers a live status dashboard and a document collection engine integrated with Karbon and one tax package. A fuller platform with a client portal and capacity planning lands between $100,000 and $250,000. The biggest cost variables are how many tax packages you integrate and whether clients log in.
Should we replace Karbon or build custom software on top of it?
Build on top of it first. Karbon is strong at email triage and task management, so keep it for those and add a custom layer that owns cross-system status, document collection and client data through Karbon's API. Full replacement costs roughly double and stalls during tax season, so treat it as a later decision, not the first one.
How long does it take to build custom software for an accounting firm?
A focused first release, typically a live status dashboard plus a document request engine, ships in 10 to 14 weeks in Digital Heroes projects. A fuller practice platform takes five to eight months. Schedule around tax season: go live by November or wait until May, never in between.
Can custom software pull data from UltraTax, Lacerte or Drake?
Yes, but not through a friendly public API, because none of the major tax packages offers one. Integration works through scheduled exports, report files and print-to-file parsing, which holds up well when built carefully but is a separate project per package. Expect each additional tax package to add cost and roughly two to three weeks.
What happens to our Karbon data if we build custom software?
Nothing is lost, because the usual pattern keeps Karbon running and syncs from it rather than migrating away. Work items, contacts and notes are read through Karbon's API into the custom platform. If you later leave Karbon entirely, the custom system already holds a synchronized copy of the data that matters.
Do we own the code if an agency builds our firm's software?
You should, and it must be written into the contract: full ownership of source code, data and the cloud accounts it runs in. Digital Heroes hands over the repository and infrastructure at delivery. Walk away from any developer proposing per-user licensing on software you paid to build.
How does custom software handle IRS Publication 4557 and our WISP?
The build has to fit your written information security plan, not the other way around. In practice that means encryption of returns and client documents at rest and in transit, role-based access, full access logging and hosting you control. Ask a developer to explain Publication 4557 before you mention it; the answer tells you whether they have worked with CPA firms.
What does maintenance cost after the software is live?
Budget 10 to 20 percent of the build cost per year, so roughly $8,000 to $18,000 annually on a $90,000 first release. That covers hosting, monitoring, security patches and the small breakages that follow tax software update cycles each fall. It is usually less than the admin time the system removes in a single busy season.
Can we keep QuickBooks Online and our client portal during the build?
Yes, and you should. QuickBooks Online and Xero connect through stable public APIs, so a custom close checklist can verify ledger state directly. An existing portal can stay until the custom one is proven, then clients move in one off-season batch with a single new login.
How much does custom accounting software cost for a small business?
Most small business accounting builds land between $25,000 and $75,000 for a working first version, while a full double-entry platform with invoicing, payroll, and reporting runs $100,000 to $250,000. Across 2,000+ projects at Digital Heroes, the biggest cost driver is how many external systems the software must connect to, not the accounting logic itself. A tool that automates a single painful workflow, like reconciliation or job costing, can come in under $20,000.
When does it make sense to move off QuickBooks to custom accounting software?
Move when you are paying people to work around the tool, not when the subscription feels expensive. Common triggers are hitting the 25-user cap on QuickBooks Online Advanced, consolidating multiple entities in spreadsheets, or a billing model that forces manual journal entries every month. If your team spends several hours a week exporting to Excel just to answer basic questions, you are already paying for custom software in salaries.
Who owns the code when an agency builds my accounting software?
You should, outright, and the contract must say so with an explicit IP assignment clause rather than a usage license. Insist that the code lives in a repository you control from day one, so nothing, including the ledger schema and migration scripts, can be held back at the final invoice. Third-party libraries and any framework the agency reuses stay under their own licenses, and a clean contract lists exactly which those are.
How do I migrate years of QuickBooks data into a custom system?
Use a staged migration: export full history through the QuickBooks API or backup files, load it into the new system, then run both systems in parallel for at least one full closing cycle before cutting over. Expect cleanup work, because books older than three years almost always contain miscategorized transactions that surface during import. Digital Heroes schedules migration as its own project phase with its own sign-off, never as a launch-week task.
Why do agencies charge for a discovery phase instead of quoting for free?
Because an accurate quote requires real work: mapping your workflows, finding the edge cases, and writing a specification, which typically takes 1 to 3 weeks and costs $2,000 to $10,000 at Digital Heroes depending on system complexity. You leave discovery owning a written spec and a fixed price you can take to any vendor, so the money is not locked into one agency. Free estimates are guesses, and the guess usually becomes your budget overrun six months later.
How long until custom accounting software pays for itself?
Typical payback in Digital Heroes accounting projects is 18 to 36 months, driven by recovered labor hours and fewer billing errors rather than saved subscriptions. A business spending 30 hours a week on manual reconciliation and rebilling can justify a $75,000 build inside two years at ordinary bookkeeper rates. If your projected payback stretches past five years, extend your current tools instead.
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?