The 33% Revenue Concentration Cliff: When Losing 1 Client Could Sink Your Business

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:

  1. Track revenue by client automatically
  2. Calculate concentration percentages on demand
  3. Show trends over time (am I getting more or less concentrated?)
  4. 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:

  1. 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
  1. 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
  1. Calculate concentration percentages (I have a Python script that pulls the query results and does the math, but you can also do this manually)

  2. 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

  1. Do you track revenue concentration? If so, what’s your approach?
  2. What’s your target threshold? (Mine is no single client above 20%, top 3 under 45%)
  3. How do you use Beancount for client-level revenue analysis? Share your queries/scripts?
  4. Have you experienced client concentration risk personally? What happened?
  5. 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?

This hits home hard. As a CPA, I’ve watched too many service businesses face exactly what you’re describing—and the 33% threshold you mentioned is spot-on from a valuation perspective.

The Valuation Discount Reality

When we conduct business valuations for sale or succession planning, client concentration is one of the first red flags that reduces enterprise value. Here’s what buyers typically apply:

  • Single client >20% of revenue: 15-25% valuation discount
  • Single client >30% of revenue: 25-40% valuation discount
  • Top 3 clients >50% of revenue: 20-35% valuation discount

Why? Because the buyer is essentially purchasing a business that could lose 30-60% of its revenue overnight through no fault of their own. That’s massive risk they’re pricing in.

I’ve seen situations where a profitable $500K/year bookkeeping practice with strong margins should have sold for 2.5-3x EBITDA (around $1.25M), but because one client represented 45% of revenue, the buyer offered 1.5x EBITDA ($750K) and walked away when the seller balked. That’s a $500K haircut due to concentration risk.

Why Beancount is Perfect for This

Your approach is exactly right, and honestly, this is one of Beancount’s killer features that traditional accounting software completely misses.

The metadata tagging you described creates an automatic audit trail that:

  1. Documents risk for stakeholders (lenders, buyers, partners)
  2. Enables real-time monitoring without manual Excel gymnastics
  3. Provides historical trends (are you improving or getting worse?)
  4. Supports strategic planning (which clients to pursue, which to phase out)

For CPA firms specifically, I’m now having conversations with clients about concentration risk during quarterly reviews—something I never did before Beancount made it trivial to track.

My Target Thresholds (CPA Firm Context)

For my own practice:

  • No single client >15% of revenue (more conservative than your 20%)
  • Top 5 clients <40% of revenue combined
  • Top 10 clients <60% of revenue combined

For clients I advise (service businesses, consultants, freelancers):

  • No single client >20% is the baseline recommendation
  • For businesses planning to sell in 3-5 years: aim for <15% to maximize valuation
  • For early-stage businesses (<$200K revenue): concentration is acceptable temporarily, but must have a written plan to diversify by year 3

The Query I Use

Similar to yours, but I also track by industry vertical to avoid sector concentration (e.g., if 60% of your revenue is restaurants and the restaurant industry tanks, you’re in trouble even if no single restaurant is >20%):

SELECT client, industry, SUM(COST(position)) as revenue
WHERE account ~ 'Income:Services'
GROUP BY client, industry
ORDER BY revenue DESC

Then I have a Python script that calculates:

  • Client concentration %
  • Industry concentration %
  • Trend over trailing 12 months (are we improving?)
  • Alert flags when thresholds are breached

You’re NOT Overthinking This

To answer your question #5: This is absolutely a legitimate business risk, and frankly, more service business owners should be tracking it.

The fact that your colleague lost 60% of revenue overnight is unfortunately common. I see this happen 2-3 times a year in my practice:

  • Client gets acquired → new parent consolidates services
  • Client sells business → new owner brings their own team
  • Client faces financial distress → cuts external services immediately
  • Client’s key champion (who hired you) leaves → new exec brings their preferred vendor

None of these scenarios reflect your service quality. They’re business decisions completely outside your control. The only thing you can control is your exposure.

Practical Next Steps

For anyone reading this thread who wants to implement concentration tracking:

  1. Start simple: Just tag your invoices with client metadata (like the example shown)
  2. Monthly review: Run the query once a month and track the top 3 clients
  3. Set thresholds: Decide your own risk tolerance (15%? 20%? 25%?)
  4. Create a plan: If you’re over your threshold, what’s the 6-month plan to diversify?
  5. Business development alignment: Use concentration data to inform your marketing and sales priorities

Beancount makes this so easy there’s no excuse not to do it. And when you eventually sell your business (or need financing, or bring in a partner), you’ll have years of data showing you actively managed concentration risk. That’s valuable.

Great topic. Would love to see others share their approaches!

I love this discussion! I’ve been tracking concentration risk in my freelance consulting work, and it’s been eye-opening.

The Personal Finance Angle: Side Hustles and Concentration

While Alice covered the valuation perspective (which is super valuable for full-time service businesses), I want to share how this applies to side hustles and freelance work where many of us are building toward financial independence.

I do technical consulting on the side (day job is financial analyst at a tech company). Last year I made $45K from freelance work—not enough to live on, but meaningful income that accelerates my FIRE timeline by ~2 years.

Here’s what I discovered when I started tracking concentration:

Q1 2025: My largest client was 78% of my freelance revenue. One client. 78%.

I didn’t even realize it until I implemented the Beancount tracking you described. That client had been sending steady work for 18 months, so it felt “stable.” But when I saw 78% in a query result, I had a mini panic attack.

What if they got acquired? Hired someone full-time? Found a cheaper offshore team? My entire side income could disappear overnight.

The Diversification Journey

I set a target: No single client >30% of freelance revenue by end of 2025.

It took 8 months, but I hit it. Here’s what happened:

  • Q1 2025: 78% concentration (1 dominant client)
  • Q2 2025: 65% concentration (added 2 small clients)
  • Q3 2025: 42% concentration (lost some work from main client, but didn’t panic because I had others)
  • Q4 2025: 28% concentration (actively pursued smaller projects)
  • Q1 2026: 22% concentration (current)

The irony: My total freelance revenue actually went UP during this diversification (from $45K in 2025 to projected $52K in 2026). I thought diversification would mean more admin overhead and lower income, but the opposite happened—more clients meant steadier work and less feast/famine cycles.

The Beancount Implementation (with Python)

Here’s my actual Python script for calculating concentration. It pulls data from Beancount and generates a simple report:

from beancount import loader
from beancount.query import query
import pandas as pd

# Load the Beancount file
entries, errors, options = loader.load_file('my_finances.beancount')

# Query for income by client
q = """
SELECT 
  meta('client') as client,
  SUM(COST(position)) as revenue
WHERE account ~ 'Income:Consulting'
GROUP BY client
ORDER BY revenue DESC
"""

result = query.run_query(entries, options, q)

# Calculate percentages
df = pd.DataFrame(result[1], columns=['Client', 'Revenue'])
df['Percentage'] = (df['Revenue'] / df['Revenue'].sum()) * 100

# Print report
print("\\nClient Concentration Report")
print("="*50)
for idx, row in df.iterrows():
    print(f"{row['Client']}: ${row['Revenue']:,.2f} ({row['Percentage']:.1f}%)")
    
print(f"\\nTop 3 Concentration: {df.head(3)['Percentage'].sum():.1f}%")

Output looks like:

Client Concentration Report
==================================================
ClientA: $11,500.00 (22.1%)
ClientB: $9,200.00 (17.7%)  
ClientC: $8,800.00 (16.9%)
ClientD: $7,300.00 (14.0%)
...

Top 3 Concentration: 56.7%

I run this monthly and track the trend in a simple spreadsheet. Watching that top client percentage drop from 78% to 22% over 12 months was incredibly satisfying.

The Psychological Benefits

Beyond the risk management, tracking concentration has had unexpected psychological benefits:

  1. Less anxiety about client relationships: When one client was 78% of revenue, every email from them triggered anxiety. “Are they unhappy? Are they reducing scope?” Now, no single client can make or break my side income.

  2. More confidence in negotiations: When ClientA was 78%, I couldn’t afford to push back on scope creep or rate negotiations. Now I can have honest conversations because losing any one client is manageable.

  3. Better client filtering: I’ve started declining work from clients who would push my concentration too high, even if the hourly rate is good. A $10K project from a new client is great—unless it makes them 40% of my revenue and creates new concentration risk.

My Current Targets (FIRE Context)

  • Single client <25% of freelance income
  • Top 3 clients <60% of freelance income
  • New one I added: No single client should represent >5% of my TOTAL income (day job + freelance). This ensures my FIRE timeline isn’t overly dependent on freelance work stability.

The last point is interesting: even though freelance is “only” 20% of my total income, if I lose all of it suddenly, that pushes my FIRE timeline out by 2+ years. So I treat freelance income with the same risk management discipline as my investment portfolio.

For Other FIRE Folks

If you’re building side income to accelerate FI, I highly recommend tracking concentration:

  • It’s easy in Beancount (just metadata tags)
  • It helps you make strategic decisions about which clients to pursue
  • It protects your FIRE timeline from single points of failure
  • It builds a more sustainable side income stream that could eventually replace your day job

Happy to share the full Python script if anyone wants it. It’s <50 lines of code and generates reports I actually look at every month.