I need to vent and get some advice from this community, because I’m hitting a wall with client expectations in 2026.
The Expectation Explosion
Wolters Kluwer’s latest survey confirms what we’re all feeling: managing client expectations jumped from #4 to #2 among top challenges for accounting firms this year. Every one of my 20+ small business clients seems to want:
- Proactive advice (“Why didn’t you warn me about that tax deadline?”)
- Faster turnaround (“Can you have this done by tomorrow?”)
- Personalized service (“You should know my business well enough to catch that”)
- But still pay 2019 rates (“Your competitor quoted me $300/month”)
Meanwhile, 83% of financial leaders report talent shortages, so there’s fewer of us to deliver MORE service. Something’s gotta give.
The Scope Creep Problem Is Real
Here’s what happened to me last month. A restaurant client on a $600/month retainer started asking “quick questions” about expanding to a second location—lease analysis, cash flow projections, break-even modeling. None of that is bookkeeping. But because I know their numbers intimately (thanks to Beancount), they assume it’s all part of the package.
By month-end, I’d spent 18 hours on their account instead of the 8 hours their retainer covers. That’s 10 hours of unbilled work at my $85/hour rate = $850 I gave away for free.
Multiply that across 3-4 clients who do this regularly, and scope creep is costing me $2,000-3,000/month in lost revenue.
Can Beancount Data Help Set Boundaries?
Here’s what I’ve been experimenting with. I track my own practice time in a separate Beancount ledger alongside client work:
2026-03-15 * "Client: Rosario's Kitchen" "Monthly reconciliation"
Expenses:Practice:ClientWork:Rosarios 8.0 HOURS
Income:Practice:BillableHours
2026-03-18 * "Client: Rosario's Kitchen" "Ad-hoc: location expansion analysis"
Expenses:Practice:ClientWork:Rosarios 4.5 HOURS
Income:Practice:UnbilledAdvisory
Then I run a BQL query at month-end:
SELECT account, sum(position) WHERE account ~ "ClientWork" GROUP BY account
This gives me a clear picture: which clients consume more hours than their retainer covers, and how much of that is scope creep vs core bookkeeping.
The Tier System I’m Testing
Based on this data, I’m rolling out a three-tier pricing structure:
| Tier | Monthly Fee | What’s Included | Response Time |
|---|---|---|---|
| Essential | $500 | Bookkeeping, reconciliation, quarterly reports | 48-hour email |
| Growth | $1,200 | Essential + monthly Fava dashboard, cash flow alerts, 2 advisory calls/month | 24-hour email |
| Strategic | $2,500+ | Growth + weekly check-ins, proactive analysis, unlimited advisory | Same-day |
The key insight: when clients can SEE the tier structure, most self-select into the appropriate level. The restaurant client who was getting Strategic-level service at Essential pricing? They chose Growth tier when I showed them the data—my Beancount time tracking proved they were consistently using 15+ hours/month.
The Uncomfortable Question
But here’s what I’m struggling with: some clients are unprofitable no matter what tier they’re on. My Beancount data shows three clients where my effective hourly rate drops below $40/hour—well below the $85/hour I need to sustain the practice.
80% of firms plan to raise fees by 5-10% in 2026. But I’m not sure a 10% increase fixes a client who’s 50% underpaying.
Questions for the community:
- How do you handle scope creep conversations with long-term clients? Do you show them the data or keep it behind the scenes?
- Has anyone built a Beancount-based practice dashboard that tracks per-client profitability in real time?
- At what point do you fire a client who’s chronically unprofitable—even if they’re pleasant and pay on time?
- For those using tiered pricing: how did existing clients react when you switched from flat-rate to tiers?