I need to share something that’s been keeping me up at night, and I’m curious if others in the Beancount community are tracking this risk.
The Wake-Up Call
Last month, a fellow bookkeeper in my local networking group lost his largest client. Not because of poor service—the client’s business got acquired, and the new parent company consolidated all accounting to their internal team. Overnight, my colleague lost 60% of his revenue. Within three months, he had to let go of his only employee and take a part-time job to cover his bills while rebuilding his client base.
This was a successful 8-year business relationship. Great service. Happy client. None of that mattered. When you’re concentrated in 1-2 clients, you’re always one decision away from a financial crisis.
The 33% Revenue Concentration Cliff
I’ve been doing research since then (because anxiety is a powerful motivator), and the data is sobering:
- 20%+ from one client = high risk according to business valuation standards
- 30%+ from one client = existential risk especially for service businesses
- If your top 5 clients represent 25%+ of revenue, you’re in concentration territory
- Buyers apply significant valuation discounts to businesses with concentration risk
After that wake-up call, I audited my own book of business. Results: My largest client was 35% of my revenue. My top 3 clients were 62%. I had a diversification problem.
Why Traditional Software Doesn’t Help
Here’s what frustrated me: QuickBooks, Xero, FreshBooks—none of them surface concentration risk automatically. You can run revenue reports by customer, export to Excel, manually calculate percentages, and build a spreadsheet. But it’s a manual process every time you want to check.
I needed something that would:
- Track revenue by client automatically
- Calculate concentration percentages on demand
- Show trends over time (am I getting more or less concentrated?)
- Alert me when I’m approaching dangerous thresholds
The Beancount Solution
This is where Beancount became invaluable. I’m now tracking client concentration with metadata tags and custom queries, and it takes me 30 seconds to generate a current concentration report.
Basic approach:
- Tag income transactions with client metadata:
2026-03-15 * "Invoice 2026-03" "Professional services"
client: "Acme Corp"
Income:Services:Bookkeeping -2500.00 USD
Assets:AccountsReceivable:AcmeCorp 2500.00 USD
- Run a simple query to see revenue by client:
SELECT client, SUM(COST(position)) as revenue
WHERE account ~ 'Income:Services'
GROUP BY client
ORDER BY revenue DESC
-
Calculate concentration percentages (I have a Python script that pulls the query results and does the math, but you can also do this manually)
-
Generate monthly reports to track trends
The Results
After implementing this 6 months ago:
- I can see my concentration risk in real time, not just at year-end
- I’ve actively pursued smaller clients to dilute my largest client from 35% to 24%
- I track this monthly and discuss it in my quarterly business reviews
- I have an “early warning system” if concentration starts creeping up
Most importantly: I sleep better knowing I’m monitoring this risk.
Questions for the Community
- Do you track revenue concentration? If so, what’s your approach?
- What’s your target threshold? (Mine is no single client above 20%, top 3 under 45%)
- How do you use Beancount for client-level revenue analysis? Share your queries/scripts?
- Have you experienced client concentration risk personally? What happened?
- Am I overthinking this? Or is this a legitimate business risk worth monitoring?
For service businesses, consultants, freelancers, and anyone with a small client base—I’d love to hear how you’re thinking about this in 2026.
TL;DR: Saw a colleague lose 60% of revenue when one client left. Realized I had the same concentration risk (35% from one client). Now using Beancount metadata and queries to track concentration risk monthly. How do you track this?