Half Your CPA Bill Isn't CPA Work: How Muin Makes 990 Season Painless
About half of what your nonprofit's CPA bills every April isn't accounting — it's data assembly. Here's why your QuickBooks + Drive + Gmail stack can't fix that, and what does.
Names and scenarios in this article are illustrative, not real customer stories. They represent common patterns we hear from CPAs and non-profit finance teams.
This May 15 just passed. If you run a non-profit or you serve one as a CPA, you know what the last six weeks looked like. The frantic emails. The Drive archaeology. The “did we ever reconcile December?” Slack thread. The bill at the end of it.
The biggest waste in non-profit accounting is not fraud or mismanagement. It is the hours every April that your $200/hr accountant spends doing work that is not, by any honest description, accounting.
Linda manages 20 non-profit clients. Every January through May, her inbox fills with the same requests: “Can you send the revenue breakdown?” “Where is the board expense detail?” “We need the grant expenditure report by Friday.” She calls it 990 season. Her team calls it survival mode. Her clients call it the bill they grit their teeth and pay because the alternative is losing their tax-exempt status.
And here is the part nobody says out loud: about half of that bill is not for CPA work. It is for data assembly — for Linda’s team translating QuickBooks, Gmail, Google Drive, three spreadsheets, and a shared inbox called “Finance Stuff” into the structure the IRS form actually asks for.
The data is not missing. It is just shaped wrong. And no amount of CPA review fixes that — it just bills $200 an hour to do it in April.
The Real Shape of the 990 Bill
For each non-profit client, Linda’s 990 preparation looks something like this:
| Step | Task | Hours per client (estimated) | Where Muin changes it |
|---|---|---|---|
| 1 | Request documents | 2-5 | Eliminated — data already in system |
| 2 | Receive and organize | 3-8 | Eliminated — documents organized year-round |
| 3 | Reconcile and map to 990 line items | 5-12 | Compressed — data pre-mapped |
| 4 | Prepare the return | 10-15 | Unchanged — this is the actual professional work |
| 5 | Review and revise | 3-5 | Reduced to 2-3 — cleaner data, fewer corrections |
Steps 1-3 — pure data assembly — eat 10-25 hours per client. Step 4 — the work Linda’s team is trained and paid to do — is what fits in whatever time is left before the deadline. Multiply that by 20 clients and you understand why Linda’s team works weekends from February through May.
The Form 990 has 12 parts and roughly 16 schedules of nonprofit-specific structure. The small-business stack — QuickBooks, Google Drive, Gmail, your payroll provider — was not built to capture that structure. Two specific places where the gap is structural, not a workflow issue you can patch with discipline:
- QuickBooks classes are not fund accounting. QBO has classes and locations — workarounds for tracking program splits. It does not natively track restricted vs. unrestricted vs. endowment net assets, donor-imposed time and purpose restrictions, or release-of-restriction at the transaction level. Most non-profits hack this with classes and reconcile in April.
- QB customer is not donor. The customer list in QBO does not aggregate cumulative-by-donor against the IRS Schedule B $5,000 threshold, does not apply anonymous and in-kind exclusions, and does not see donations that came through your CRM, Stripe, or cash-in-envelope channels. Reconciling the donor list to the deposit ledger is the work that eats the April time.
Filling that gap is what Linda’s team is doing in April. The gap is the bill.
The Layer Between Your Tools and the IRS
Muin is not a replacement for QuickBooks, your payroll provider, or your donation platform. It is the layer that sits between those tools and the 990, turning small-business-shaped data into nonprofit-shaped data continuously — so the work Linda’s team bills 40 hours for in April is already done by January.
Three things in the founding-member beta — which is starting in a few weeks for the first cohort — cannot be done by the QB stack at all. They are not better versions of QB classes or smarter Schedule B reports — they are the structural difference. Below them, a set of year-round rails makes them possible. We will walk through each.
Allocate-on-Post: How Part IX Builds Itself
Part IX — the Statement of Functional Expenses — is the most painful single page of the 990 to assemble. Every expense category has to be split across program services, management and general, and fundraising. For a typical mid-sized non-profit, that is hundreds of decisions, made from memory, in April.
QuickBooks classes were not built for this. They are a profit-center tool — useful for tracking which department spent what, useless for the IRS’s tri-functional accountability lens. The April work is the bookkeeper or Executive Director (ED) reconstructing functional allocation from memory, then Linda’s team auditing the reconstruction.
Muin’s Allocate-on-Post flips the timing. The moment a bill or expense posts — from a bank-feed transaction, a captured receipt, or a vendor invoice — a split modal appears with the program / management / fundraising allocation pre-filled from saved per-tenant rules. Rent allocates by space-use ratios. Salaries allocate by program-time tracking. Software subscriptions allocate by which programs use them. The ED reviews and confirms in seconds.
The Part IX preview pane in the 990 Workspace updates in real time. By March 31, Part IX is a draft, not a blank page. Linda’s team reviews the draft instead of building it from scratch.
The Allocation Copilot
For transactions that don’t match an existing rule, an AI Allocation Copilot agent reads the captured invoice (vendor, line items, amount, GL account, cost center), pulls the tenant’s program registry and the last 90 days of allocation history for similar transactions, and proposes:
- A split (e.g. Program A 60% / Program B 25% / Mgmt 10% / Fundraising 5%)
- A one-line, audit-ready rationale (e.g. “Rent allocated by 2026-Q1 timesheet ratios; matches prior-quarter pattern within 3 percentage points.”)
- A confidence score
The ED reviews, edits if needed, and confirms. High-confidence proposals on rule-matched transactions can autopost (still logged, still reversible). Low-confidence proposals always ask the ED. The CPA stays in the review loop, never replaced.
The byproduct is the part most teams don’t expect: every confirmed allocation produces a sentence of audit-grade rationale that becomes Schedule O (Supplemental Information) narrative material. Most non-profits scramble to write Schedule O in April. With the Copilot, it writes itself, transaction by transaction. By April 1, Linda’s client has a Schedule O draft built from a year of confirmed rationales — not a blank page they’re staring at.
This is the only point in your fiscal year where AI is faster than a human at allocation, because the AI does it once per transaction and the human used to do it once per fiscal year, from memory.
Schedule B Watchlist and Auto-Acknowledgments
Schedule B — Schedule of Contributors — requires reporting any donor who gave more than $5,000 (or 2% of total contributions) cumulatively across the fiscal year. The IRS rules have nuance: anonymous gifts excluded from the named list but included in the aggregate, in-kind contributions tracked separately, foundation chains where multiple gifts traceable to one source aggregate under that source, named-vs-public reporting under the privacy rules.
In a QB + CRM stack, this list is rebuilt by hand in April. The CRM does not aggregate against the IRS rule. QuickBooks does not see the CRM. Stripe deposits show batches, not donors. Reconciling the three is the second-largest data-assembly cost on the 990 — and the one where mistakes most often produce IRS notices, because Schedule B is what the IRS uses to flag unreported related-party transactions.
Muin’s Schedule B Watchlist runs cumulative-by-donor aggregation continuously. The moment a donor crosses the $5,000 cumulative threshold, they appear on the watchlist. Anonymous donors are excluded from the line-by-line list but included in the aggregate. In-kind valuations are tracked separately per IRS rules. Foundation chains roll up correctly. The Schedule B preview is export-shaped to match the IRS form — you see what the schedule will look like, today, every day of the year.
Auto-Acknowledgment Letters
Tucked into Schedule B is the Section 170(f)(8) compliance exposure that most nonprofits handle worst. Every donation of $250 or more requires a written acknowledgment with specific IRS-mandated language (“no goods or services were provided in exchange,” or quid-pro-quo language and good-faith valuation if applicable). A donor cannot claim the deduction without it. Most nonprofits send late or wrong letters — ad-hoc templates, missing required language, no audit trail.
Muin auto-generates a §170(f)(8)-compliant acknowledgment letter for every qualifying donation, branded to the tenant, audit-logged, retained, and resendable. The letter is idempotent — generated once per contribution, retried by a worker on transient failure — so even at year-end donation surges, no letter is missed. When a donor questions a deduction in audit, the letter is one click from the donation record. No more “let me see if we still have that template…”
This is two compliance burdens that most nonprofits silently fail at — Schedule B aggregation and §170(f)(8) acknowledgments — folded into a single workflow that runs without a human touching it.
The Year-Round Rails
The two structural diffs above are not standalone features. They sit on top of a set of platform capabilities that have to run year-round for the structural diffs to mean anything. These are what makes “as of January, the data is already 990-shaped” actually true.
Fund accounting at the transaction. Restricted vs. unrestricted vs. endowment, donor-imposed time and purpose restrictions, release-of-restriction events — all tracked at the moment of contribution, not reconstructed at year-end. Feeds Part VIII (Statement of Revenue) and Part XI (Reconciliation of Net Assets).
Six-rail donation reconciliation. Card, NFC, Zelle, check, ACH, and cash — all six rails matched continuously to donors and books. This is the foundation Schedule B Watchlist runs on — without continuous donor-to-deposit matching, the cumulative-by-donor counter is just guessing.
Document intelligence. Vendor invoices, bank statements, donation receipts, grant expenditure reports — read, categorized, filed as they arrive. By April there is no shoebox of receipts and no missing December investment statement. The documents are the documents.
Grant tracking. Budget, restriction type, reporting cadence, expenditure-against-budget — tracked continuously per grant. Feeds Part III (Program Service Accomplishments) and Schedule I (Grants to U.S. Organizations).
Compliance calendar. Federal, state, and funder deadlines tracked with 90-day reminders. Federal Register and OpenStates monitored weekly for 501(c)(3) reforms, state charity registration changes, and donor acknowledgment rule updates — caught as they hit, not in next year’s CPE cycle.
Officer and board compensation tracking. Compensation data for officers, directors, and key employees flows from payroll into the structure Part VII requires.
AI 990 Prep Agent + Expense-990 Classifier. Two production agents sit on top of the rails above. The 990 Prep Agent reads the year’s transactions, funds, donors, grants, and program data; scores 990 readiness by IRS section (revenue, functional expenses, governance, compensation, schedules); and surfaces concrete gap items — “Schedule B watchlist count exceeds last year’s by 18 donors; review for related-party disclosure”; “officer compensation table missing key-employee fringe detail for two records”; “Part III program-accomplishment narrative under 200 chars on three programs.” The Expense-990 Classifier reads each expense’s vendor, line items, GL account, and prior-period analog, and proposes a Part IX functional bucket — Program Services, Management & General, or Fundraising — with a confidence score. Anything below the threshold flags for CPA review rather than dropping silently. By October the workspace shows a readiness score and a punch list, not a draft Linda’s team has to build from a blank page in February.
990 Workspace. Per-fiscal-year readiness score, with a state machine that runs draft → client review → advisor review → approved → exported. The Part IX preview pane lives here. The Schedule B watchlist count surfaces here. The CPA Partner Access pane lives here. The Prep Agent’s gap punch list and the Classifier’s flagged-for-review queue both surface here.
None of these on their own is the differentiator. They are the rails that let Allocate-on-Post and the Schedule B Watchlist actually work — which is why platforms that try to bolt 990 features onto a generic small-business stack always feel like they are missing something.
What This Looks Like for Linda’s Firm
Linda logs into the partner dashboard and sees all 20 clients at a glance. Fourteen show green — Part IX preview is current, Schedule B watchlist is monitored, all acknowledgment letters are sent. Four show yellow — minor items need attention, usually a few un-allocated transactions the Copilot wants the ED to confirm. Two show red — they joined Muin recently and their backfill is still in progress.
Before 990 season even starts, Linda knows which clients need attention. Instead of discovering in March that Client C has not reconciled since September, she knows in October and addresses it then.
When her team logs into a client’s workspace, they don’t reassemble. They review:
- Part IX: already drafted, with audit-grade rationale on every line via the Copilot’s Schedule O byproduct
- Schedule B: already aggregated against IRS rules, anonymous and in-kind correctly handled, ready to export
- §170(f)(8) letters: already sent, archived, queryable from the donation record
- Schedule A support test: continuously calculated against five years of revenue history
- Part VII compensation: pulled from payroll structure as it occurs, not reconstructed
Across 20 clients, the data-assembly time previously eating 240-400 hours per season collapses to a fraction of that. That is capacity Linda’s firm can redirect to advisory work — the actual conversation about whether the public support ratio is trending down, whether the major-gift program is overweight in one foundation, whether the executive comp is going to draw scrutiny — instead of “I still need the October bank statement.”
The non-profit client experience changes too. The annual document scramble — 20-40 hours of staff time and 20-50 follow-up emails — drops to 1-2 hours of confirming the data Muin already has. The CPA bill drops because the data work it was paying for is gone.
| Metric | Current state (estimated) | With Muin (estimated) |
|---|---|---|
| Time preparing data for CPA | 20-40 hours | 1-2 hours |
| Back-and-forth emails | 20-50 | 3-5 |
| Missing document requests | 5-15 | 0-2 |
| 990 filing timeline | 4-8 weeks | 1-2 weeks |
The Stakes
This isn’t just about saving billable hours. The 990 is a public document — board members, donors, watchdogs, journalists, and the IRS all read it. A 990 with patched-together Part IX numbers, missed Schedule B donors, or absent §170(f)(8) language tells everyone reading it the same story: the organization’s books are sloppy.
And the consequence of repeated sloppiness is not just reputational. Miss three consecutive years of filing and the IRS automatically revokes your tax-exempt status. No appeal. No exceptions. Donors can no longer deduct contributions. The IRS publishes the revoked-status list monthly: irs.gov/charities-non-profits/automatic-revocation-of-exemption.
Clean 990s reflect well on leadership. Board members who are also donors give more generously to organizations whose books they trust. Watchdog ratings move on the same signal.
The Referral Opportunity for CPAs
Beyond making her existing clients easier to serve, Muin’s partner program creates a revenue line for Linda. CPAs who refer clients to Muin receive recurring revenue share for 12 months per referred client — not a one-time bonus, ongoing compensation that recognizes the CPA’s role in the client’s success.
The incentives align naturally. When Linda recommends Muin to a non-profit client:
- The client gets better operational tools and cleaner data
- Linda’s firm gets easier 990 prep, standardized workflows, and referral revenue
- The relationship deepens because Linda is providing value beyond compliance
For CPAs looking to grow their non-profit practice, being a Muin partner is a differentiation point. “We work with Muin to ensure your data is 990-ready year-round” is a compelling pitch to non-profits tired of the annual document scramble.
Ready to Make Next 990 Season Painless?
Whether you are a CPA managing non-profit clients or a non-profit leader who just lived through another document scramble, the path to fixing it does not start next April. It starts now — eleven months before the next May 15, while what hurt this year is still fresh.
For accountants and CPAs: Explore the Muin Partner Program for multi-client management, referral revenue, and how to standardize your non-profit practice.
For non-profit leaders: Get on the founding-member beta list — starting in a few weeks for the first cohort, 50% off — and give your accountant the best gift they have ever received: data that does not need to be reassembled.
This May 15 is past. The question is whether the next one has to feel this way.
Related Reading
- How a 15-Person Non-Profit Can Run Like a 150-Person Org — The operational transformation when everything lives in one platform
- Non-Profit Compliance and Grant Management — From grant application to audit with automated tracking
- Muin for Finance: AI-Powered Financial Operations — The accounting engine behind 990-ready data
- Introducing the Muin Referral & Affiliate Program — How CPAs can earn revenue by referring non-profit clients
- Why Non-Profits Should Consider Muin — Connect your existing tools through one platform and reclaim your team’s time