Monthly Retainers Dominate Bookkeeping Pricing in 2026—But How Do You Price Predictably When Client Complexity Varies Wildly?
I’m in the middle of overhauling my pricing model after a tough conversation with a prospective client last week. The client asked, “What’s your monthly rate?” and I hesitated—because while I’ve moved to retainers like everyone else, I still don’t feel like I’ve cracked the complexity problem.
The Industry Shift to Retainers
The data is clear: monthly retainers have become the dominant pricing model for bookkeeping services in 2026. In fact, 80% of firms plan to raise fees by 5-10% this year, and the industry is moving away from hourly billing toward flat monthly subscriptions and tiered plans.
The benefits are obvious:
- Clients get predictability: Budget $500/month instead of $300-$800 variable
- We get stability: 40 clients × $500 = $20K/month recurring vs feast-or-famine hourly
- Better relationships: No more “watching the clock” anxiety on either side
The Problem: Client Complexity Varies Wildly
Here’s where I’m stuck. I have:
Client A: Local coffee shop
- 50 transactions/month
- Single checking account
- Minimal categorization complexity
- Monthly reports take me 2 hours
Client B: Multi-location restaurant group
- 500+ transactions/month
- 6 bank accounts across 3 entities
- Inventory tracking, multi-state sales tax
- Monthly close takes me 12 hours
If I charge both $500/month, I’m either overcharging Client A or losing money on Client B.
Traditional Solution: Tiered Retainers
The standard answer is tiered pricing:
- Bronze $300: <100 transactions
- Silver $600: <300 transactions
- Gold $1200: <500 transactions
But this feels arbitrary to me. Where do these cutoffs come from? What happens when Client A grows from 95 to 105 transactions—do they suddenly jump tiers? And transaction count doesn’t capture complexity—100 simple retail transactions ≠ 100 multi-entity consolidation entries.
The Beancount Advantage: Data-Driven Pricing?
Here’s where I think Beancount could actually help. Precise metrics are trivial:
# Transaction count
beancount query ledger.beancount "SELECT count(*) WHERE date >= 2026-01-01"
# Account complexity
beancount query ledger.beancount "SELECT DISTINCT account"
# Time tracking via Git commits
git log --since="2026-01-01" --format="%ai" | wc -l
What if I priced based on actual workload metrics instead of arbitrary tiers?
Potential pricing formula:
- Base rate: $200/month
- Transaction volume: $0.50 per transaction over 50
- Account complexity: $25 per active account over 10
- Reconciliation time: Track actual hours for 3 months, then adjust
This would make Client A cost $275/month and Client B cost $850/month—much more aligned with actual effort.
But I’m Worried About…
Scope creep: What if client adds new business entity mid-year? Do I immediately increase retainer, or absorb cost until annual review?
Client pushback: “Why did my bill go up $50 this month?” “You processed 45 more transactions than usual, here’s the breakdown…”
Over-engineering: Am I creating complexity where simple tiers would work fine?
Value-based alternative: Should retainers be based on client value instead? Early-stage startup pays $300, Series B startup pays $3000 for the same work because they have budget?
What’s Working For You?
For those of you on retainer pricing:
- How do you structure tiers? Transaction-based? Complexity-based? Pure value-based?
- How do you handle client growth? Do retainers adjust immediately or at annual review?
- Do you track actual workload metrics? Or is that over-engineering?
- For Beancount users specifically: Have you leveraged data to build pricing models?
I’m at 20 clients now and want to scale to 40+ by end of year. Getting pricing right feels like the difference between sustainable growth and burnout.
What am I missing?