13 Weeks of Cash: Building the Rolling Cash Flow Forecast That Saved My Client's Business

Last year a client nearly went under. Not because the business was unprofitable - they had a 15% margin on paper. They ran out of cash because three big invoices came in late while payroll and rent were due the same week.

That’s when I built them a 13-week rolling cash flow forecast in Beancount. It’s now the single most valuable report I produce for any client, and I’ve adapted it for my own bookkeeping business. Here’s the system.

Why 13 Weeks?

Thirteen weeks is one quarter. It’s long enough to see problems coming but short enough to forecast with reasonable accuracy. Monthly forecasts miss the week-to-week timing mismatches that kill small businesses. Annual budgets are too abstract to prevent a cash crunch in March.

The 13-week forecast answers one question: Will I be able to pay my bills every week for the next three months?

The Beancount Structure

Accounts for Cash Flow Tracking

; Operating accounts - where cash actually lives
2025-01-01 open Assets:Business:Checking:Main USD
2025-01-01 open Assets:Business:Checking:Payroll USD
2025-01-01 open Assets:Business:Savings:Reserve USD

; Receivables - money owed TO you
2025-01-01 open Assets:Business:Receivables:ClientA USD
2025-01-01 open Assets:Business:Receivables:ClientB USD
2025-01-01 open Assets:Business:Receivables:ClientC USD

; Payables - money you OWE
2025-01-01 open Liabilities:Business:Payables:Vendors USD
2025-01-01 open Liabilities:Business:CreditCard:Chase USD
2025-01-01 open Liabilities:Business:LOC USD  ; Line of credit

The Weekly Cash Position Note

Every Friday, I update a note directive that serves as the cash flow forecast. This is the core of the system:

2025-02-07 note Assets:Business:Checking:Main "
=== 13-WEEK CASH FLOW FORECAST ===
As of: Friday, February 7, 2025
Starting cash: $42,500

WEEK 1 (Feb 10-14):
  IN:  ClientA payment (+$8,500) - Invoice #1042, Net 30, sent Jan 12
  IN:  ClientC retainer (+$3,000) - Auto-ACH Monday
  OUT: Payroll (-$12,000) - Friday
  OUT: AWS hosting (-$450) - Auto-debit Tuesday
  OUT: Office rent (-$2,800) - Due 15th
  NET: -$3,750
  ENDING CASH: $38,750

WEEK 2 (Feb 17-21):
  IN:  ClientB milestone payment (+$15,000) - Project complete, Net 15
  IN:  ClientA retainer (+$3,000) - Auto-ACH Monday
  OUT: Payroll (-$12,000) - Friday
  OUT: Contractor invoice (-$4,500) - Net 30 from Jan 20
  OUT: Insurance (-$850) - Quarterly, due Feb 20
  NET: +$650
  ENDING CASH: $39,400

WEEK 3 (Feb 24-28):
  IN:  ClientC project phase 2 (+$12,000) - Upon approval, estimated
  OUT: Payroll (-$12,000) - Friday
  OUT: Software subscriptions (-$380) - Various, month-end
  NET: -$380
  ENDING CASH: $39,020

... (weeks 4-13 continue)

WEEK 13 (May 5-9):
  ... (projected)
  ENDING CASH: $51,200

=== ALERTS ===
WEEK 6 (Mar 17-21): Cash dips to $28,400
  - Quarterly tax payment ($9,200) + normal expenses
  - ACTION: Ensure ClientB pays by Mar 10
  - CONTINGENCY: Draw $5,000 from LOC if needed

MINIMUM CASH THRESHOLD: $25,000
WEEKS BELOW THRESHOLD: 0 (if all goes to plan)
WEEKS AT RISK: Week 6 (within $3,400 of threshold)
"

What Makes This Different From a Budget

A budget tells you what you plan to spend. A cash flow forecast tells you when money will actually move. The distinction matters because:

2025-01-15 note Assets:Business "
=== BUDGET vs CASH FLOW ===

EXAMPLE: January revenue is $45,000 on paper

BUDGET VIEW:
  January revenue: $45,000
  January expenses: $38,000
  January profit: $7,000
  Looks great!

CASH FLOW VIEW:
  Week 1: $3,000 in (retainer), $14,800 out (payroll + rent)
  Week 2: $0 in (waiting on invoices), $12,000 out (payroll)
  Week 3: $8,500 in (one invoice paid), $12,450 out (payroll + vendor)
  Week 4: $33,500 in (three invoices paid), $12,000 out (payroll)

  Week 2 cash: NEGATIVE $11,800 from starting position
  You need $24,800 of cash reserves to survive January
  Even though you'll end January with +$7,000

THIS IS HOW PROFITABLE BUSINESSES GO BROKE.
Cash timing kills more businesses than bad margins.
"

Building the Forecast from Beancount Data

Step 1: Know Your Receivables Aging

I run this query to see what’s outstanding and when it’s expected:

SELECT
  account,
  sum(position) as outstanding
WHERE
  account ~ 'Receivables'
  AND year = 2025
GROUP BY account
ORDER BY sum(position) DESC

Then I tag each receivable with expected collection timing:

; When I send an invoice, I record the receivable with metadata
2025-01-12 * "ClientA" "Project Alpha - Phase 3 complete"
  Assets:Business:Receivables:ClientA      8,500.00 USD
  Income:Business:Consulting              -8,500.00 USD
  invoice_number: "1042"
  payment_terms: "Net 30"
  expected_payment: "2025-02-11"
  collection_confidence: "HIGH"  ; Always pays on time

2025-01-20 * "ClientD" "Website redesign - 50% milestone"
  Assets:Business:Receivables:ClientD      6,000.00 USD
  Income:Business:Consulting              -6,000.00 USD
  invoice_number: "1045"
  payment_terms: "Net 45"
  expected_payment: "2025-03-06"
  collection_confidence: "MEDIUM"  ; Sometimes 1-2 weeks late

Step 2: Know Your Fixed Outflows

2025-01-01 note Liabilities:Business "
=== FIXED WEEKLY/MONTHLY OUTFLOWS ===

WEEKLY:
  Payroll (every Friday):        $12,000

MONTHLY (fixed dates):
  Rent (1st):                     $2,800
  AWS/hosting (auto-debit):         $450
  Software subscriptions:           $380
  Phone/internet:                   $185

QUARTERLY:
  Insurance (Feb, May, Aug, Nov):   $850
  Estimated taxes (Apr, Jun, Sep, Jan): $9,200

ANNUAL:
  Business license (March):         $350
  Professional liability (June):  $2,400
  Equipment refresh (budgeted):   $5,000

TOTAL FIXED MONTHLY: ~$28,815
This number is your survival line.
If revenue drops, you need this much to keep the lights on.
"

Step 3: Track Collection Patterns

This is where Beancount metadata really shines. Over time, you build a picture of how each client actually pays:

2025-02-11 * "ClientA" "Payment received - Invoice 1042"
  Assets:Business:Checking:Main            8,500.00 USD
  Assets:Business:Receivables:ClientA     -8,500.00 USD
  invoice_number: "1042"
  days_to_pay: 30   ; Exactly on terms
  collection_note: "Always reliable, auto-ACH"

2025-03-18 * "ClientD" "Payment received - Invoice 1045"
  Assets:Business:Checking:Main            6,000.00 USD
  Assets:Business:Receivables:ClientD     -6,000.00 USD
  invoice_number: "1045"
  days_to_pay: 57   ; 12 days late
  collection_note: "Needed reminder email on day 40"

After a year of tracking, you know: ClientA always pays in 30 days. ClientD averages 52 days. ClientB pays in 15 days but sometimes holds to 25. You forecast accordingly.

The Client That Almost Went Under

Back to my client’s story. Their problem was textbook:

2024-06-01 note Assets:Business "
=== WHAT HAPPENED ===

JUNE 2024 CASH CRISIS:

Starting cash: $18,000
Month revenue (accrued): $52,000
Month expenses: $44,000
Profit on paper: $8,000

ACTUAL CASH TIMELINE:
  Week 1: -$14,000 out (payroll + rent), $0 in
  Week 2: -$12,000 out (payroll), $3,000 in (one small payment)
  Week 3: -$16,500 out (payroll + quarterly tax), $0 in
  Week 4: -$12,000 out (payroll), $49,000 in (three late payments)

Cash balance by week:
  Start:  $18,000
  Week 1:  $4,000
  Week 2: -$5,000  <-- OVERDRAFT
  Week 3: -$21,500 <-- CRISIS
  Week 4:  $15,500 <-- Recovery, but damage done

CONSEQUENCES:
  - $850 in overdraft fees
  - Missed contractor payment, damaged relationship
  - Emergency LOC draw at 12% APR
  - Stress-related health issues for the owner
  - All because three clients paid in week 4 instead of weeks 1-3
"

A 13-week forecast would have flagged this six weeks in advance. They could have:

  1. Sent early payment reminders to key clients
  2. Delayed a discretionary expense
  3. Drawn the LOC proactively at better terms
  4. Negotiated the quarterly tax payment

The Weekly Ritual

Every Friday, I spend 30 minutes:

  1. Record the week’s actual cash movements
  2. Compare actual vs. forecast (was I right?)
  3. Roll the forecast forward one week
  4. Flag any weeks where cash drops below threshold
  5. Take action on any alerts from the next 3 weeks

This 30-minute weekly habit has prevented more financial crises than any other practice in my 10 years of bookkeeping.

Questions for Discussion

  1. Do you forecast cash flow at all? If so, what timeframe and method?
  2. How do you handle uncertainty? Some of my clients’ receivables are genuinely unpredictable (government contracts, for example).
  3. Personal finance version: Has anyone adapted this for personal cash flow? Timing of paychecks, bills, and quarterly tax payments can create the same crunch.
  4. Automation: I’m doing this manually with note directives. Has anyone built a Beancount plugin or Python script that generates a cash flow projection from receivables metadata?

The spreadsheet world has dozens of 13-week templates. I think Beancount can do it better because we already have the transaction data, the metadata, and the query language. We just need to connect them into a forecasting workflow.

This is one of those posts I wish I’d read two years ago. I want to share how I’ve adapted this concept for personal finance, because the same timing problems Bob describes happen to individuals too.

The Personal Cash Flow Crunch

My wake-up call was March 2023. On paper I was fine - good salary, rental income, healthy savings rate. But in a single two-week stretch:

  • Property tax bill: $4,200 (semi-annual)
  • Auto insurance: $1,100 (6-month premium)
  • Estimated federal tax payment (Q1): $3,800
  • Tenant security deposit return: $2,500
  • Normal living expenses: $3,500

That’s $15,100 going out in two weeks against about $5,600 coming in. My checking account screamed.

My Simplified Personal Version

I don’t need 13 weeks - I use 8 weeks because my income is more predictable than a business. But the principle is identical:

2025-02-07 note Assets:Personal:Checking "
=== 8-WEEK PERSONAL CASH FLOW ===
Starting balance: $8,400

WEEK 1 (Feb 10):
  IN:  Salary deposit (+$4,800) - Friday the 14th
  OUT: Rent (-$2,200) - auto-pay 1st, clears ~10th
  OUT: Groceries/gas estimate (-$250)
  ENDING: $10,750

WEEK 2 (Feb 17):
  OUT: Utilities (-$180) - electric/gas/water
  OUT: Auto insurance (-$185) - monthly
  OUT: Regular spending (-$300)
  ENDING: $10,085

WEEK 3 (Feb 24):
  IN:  Salary deposit (+$4,800) - Friday the 28th
  IN:  Rental income (+$1,800) - tenant pays 1st
  OUT: Mortgage on rental (-$1,450) - due 1st
  OUT: Regular spending (-$300)
  ENDING: $14,935

WEEK 4 (Mar 3):
  OUT: Rent (-$2,200)
  OUT: Regular spending (-$300)
  ENDING: $12,435

... (continues to week 8)

=== KNOWN LARGE EXPENSES AHEAD ===
Apr 15: Q1 estimated taxes     $3,800
Apr 20: Property tax (rental)  $2,100
Jun 1:  Auto insurance (6-mo)  $1,100

These are NOT surprises. They happen every year.
The forecast makes them visible BEFORE they hit.
"

The Rental Property Angle

For anyone with rental property, cash flow timing is even more critical because you’re juggling two sets of bills. I track my rental separately:

2025-02-01 note Assets:Rental "
=== RENTAL PROPERTY CASH FLOW ===

MONTHLY INFLOWS:
  Tenant rent: $1,800 (1st of month, usually arrives by 3rd)

MONTHLY OUTFLOWS:
  Mortgage payment: $1,450 (auto-debit 1st)
  Property management: $0 (self-managed)
  Insurance: $95 (escrowed in mortgage)
  Reserves contribution: $150 (self-imposed)

MONTHLY NET: +$105

IRREGULAR OUTFLOWS (the killers):
  Property tax (semi-annual): $2,100 (Apr, Oct)
  Maintenance reserve: $1,800/year average
  Vacancy (estimate 1 month/year): $1,800
  Appliance replacement fund: $50/month

REAL MONTHLY NET (with reserves): -$170

The property COSTS me money monthly when you
include proper reserves. It's a long-term wealth
builder, not a cash flow generator.

Without the 8-week forecast, I used to get
blindsided by the property tax every April.
Now it's just a line on the forecast.
"

Answering Bob’s Question About Personal Use

Yes, absolutely adapt this for personal finance. The secret is identifying your “lumpy” expenses - the ones that don’t happen monthly but hit hard when they do:

2025-01-01 note Expenses "
=== ANNUAL 'LUMPY' EXPENSE CALENDAR ===

JAN: None
FEB: None
MAR: Annual subscriptions cluster ($400)
APR: Q1 estimated taxes ($3,800), property tax ($2,100)
MAY: None
JUN: Auto insurance 6-month ($1,100), Q2 est taxes ($3,800)
JUL: Annual home insurance ($1,500)
AUG: Back-to-school (if applicable)
SEP: Q3 estimated taxes ($3,800)
OCT: Property tax ($2,100)
NOV: Holiday spending starts ($1,000)
DEC: Holiday gifts ($800), annual memberships ($300)
JAN: Q4 estimated taxes ($3,800)

TOTAL ANNUAL LUMPY EXPENSES: ~$22,600
MONTHLY AVERAGE: $1,883
WORST MONTH (April): $5,900 above normal

If you don't forecast these, April and June will
wreck your budget every single year.
"

The 13-week (or 8-week) forecast makes these visible. Bob’s right that this is about timing, not total amounts. My annual cash flow is fine. My week-to-week cash flow needs active management.

One thing I’d add to Bob’s system: I keep a “minimum balance” threshold for my checking account. Mine is $5,000. Any time the forecast shows me dipping below that, I move money from savings in advance rather than scrambling when the bill hits. It costs nothing but prevents all the stress.

Bob, your client’s story is one I see constantly during tax season. The cash flow timing problem hits hardest around quarterly estimated tax payments, and I want to highlight that angle for freelancers and small business owners in this community.

The Quarterly Tax Cash Crunch

Most small business owners know they owe quarterly estimated taxes. What they don’t plan for is the timing combined with everything else:

2025-01-01 note Liabilities:Tax "
=== QUARTERLY ESTIMATED TAX CALENDAR ===

Q4 2024 payment: January 15, 2025
Q1 2025 payment: April 15, 2025
Q2 2025 payment: June 16, 2025
Q3 2025 payment: September 15, 2025
Q4 2025 payment: January 15, 2026

THE PROBLEM:
  April 15 is a triple hit for many businesses:
  1. Q1 estimated payment for 2025
  2. Any balance due from 2024 return
  3. Self-employment tax (if applicable)

EXAMPLE (Freelancer earning $120K):
  Q1 estimated federal:     $7,500
  Q1 estimated state:       $2,800
  2024 balance due:         $3,200
  Total due April 15:      $13,500

  Plus normal April expenses.
  This is why April destroys freelancers.
"

The Beancount Solution: Tax Escrow Yourself

I advise all my self-employed clients to create a tax escrow account in Beancount - and actually move the money into a separate savings account:

; Tax escrow - set aside money as you earn it
2025-01-01 open Assets:Business:Savings:TaxEscrow USD

; Every time you receive income, set aside 30%
2025-01-15 * "ClientA" "Payment received - January retainer"
  Assets:Business:Checking:Main          5,000.00 USD
  Assets:Business:Receivables:ClientA   -5,000.00 USD

; Same day - move tax portion to escrow
2025-01-15 * "Transfer" "Tax escrow - 30% of ClientA payment"
  Assets:Business:Savings:TaxEscrow      1,500.00 USD
  Assets:Business:Checking:Main         -1,500.00 USD
  escrow_purpose: "Estimated quarterly taxes"
  source_invoice: "ClientA January retainer"

; When quarterly payment is due, the money is already there
2025-04-15 * "IRS" "Q1 2025 estimated tax payment"
  Expenses:Tax:Federal:Estimated         7,500.00 USD
  Assets:Business:Savings:TaxEscrow     -7,500.00 USD

This eliminates the April cash crunch entirely. The money was never “available” for spending because it moved to escrow on the day you received it.

How This Fits Into Bob’s 13-Week Forecast

The tax escrow approach means your 13-week forecast has fewer surprises. But you still need to plan for the timing:

2025-03-01 note Assets:Business "
=== TAX TIMING IN 13-WEEK FORECAST ===

Current tax escrow balance: $18,200
Q1 estimated federal due Apr 15: $7,500
Q1 estimated state due Apr 15: $2,800
2024 balance due Apr 15: $3,200
TOTAL DUE: $13,500

Escrow surplus after April: $4,700
This covers ~63% of Q2 payment already.

FORECAST IMPACT:
  Weeks 1-5 (Mar 3 - Apr 4): Normal cash flow
  Week 6 (Apr 7-11): Pre-position tax payment
    - Transfer $13,500 from escrow to checking
    - Schedule IRS Direct Pay for April 14
    - Schedule state payment for April 14
  Week 7 (Apr 14-18): Tax payments clear
    - Checking drops by $13,500 but was pre-funded
    - No impact on operating cash

WITHOUT TAX ESCROW:
  Week 6-7 would show a $13,500 cash outflow
  from operating accounts. That's the crunch
  that kills freelancers.
"

The Hidden Tax Timing Trap

One thing Bob’s forecast should also capture: if you’re on cash-basis accounting (most freelancers are), the timing of income recognition matters for tax purposes. December is a common danger zone:

2025-12-01 note Income:Business "
=== DECEMBER TAX TIMING ALERT ===

SCENARIO: Client wants to pay $25,000 invoice in December

CASH FLOW: Great! Money in the bank before year-end.
TAX IMPACT: This income is taxable in 2025.

If you're already over a bracket threshold or AGI
limit, that $25,000 could:
  - Push you into the 32% bracket
  - Trigger Net Investment Income Tax
  - Reduce your QBI deduction
  - Affect ACA subsidy (if applicable)

OPTION: Ask client to pay January 2 instead.
CASH FLOW IMPACT: Delays income by ~10 days
TAX IMPACT: Defers $5,000-8,000 in tax to next year

Your 13-week forecast should flag these
year-end timing decisions by November.
Cash flow planning and tax planning must
work together - they can't be separate.
"

My Recommendation

For anyone building a 13-week forecast, add a tax layer:

  1. Escrow 25-30% of net self-employment income into a separate account as you earn it
  2. Mark quarterly due dates as fixed outflows in your forecast
  3. Track your escrow balance vs. estimated tax liability quarterly
  4. Flag December income for timing optimization before year-end

Bob’s system is the right foundation. Tax timing is the most common reason I see small businesses blindsided by cash problems, even when they’re profitable.

Bob, I’ve been thinking about cash flow forecasting differently since reading your post. I’m not a business owner, but I have a question about adapting this for the freelance side of my income.

My Situation

I have a stable W-2 job (predictable biweekly paycheck) and a side hustle that brings in $400-800/month (very unpredictable timing). I also invest aggressively for FIRE, so my “excess cash” is minimal by design.

The problem: I sometimes invest money on the 1st of the month that I end up needing by the 15th because an irregular expense hit that I forgot about. Then I’m pulling from my emergency fund for non-emergencies, which defeats the purpose.

My Attempted Adaptation

I tried building a simplified version of your forecast:

2025-02-07 note Assets:Checking:Main "
=== 4-WEEK CASH FLOW (PERSONAL) ===
Starting cash: $3,200

WEEK 1 (Feb 10-14):
  IN:  Paycheck (+$3,600) - Friday
  OUT: Auto-invest Vanguard (-$1,250) - Monday auto
  OUT: Rent (-$1,800) - Due 15th
  OUT: Normal spending (-$400)
  ENDING: $3,350

WEEK 2 (Feb 17-21):
  IN:  Side hustle payment (+$350) - Pending, uncertain
  OUT: Student loan (-$350) - Auto-debit 20th
  OUT: Normal spending (-$400)
  ENDING: $2,950

WEEK 3 (Feb 24-28):
  IN:  Paycheck (+$3,600) - Friday
  OUT: Auto-invest Roth IRA (-$500) - Monday auto
  OUT: Car insurance (-$185) - Monthly auto
  OUT: Normal spending (-$400)
  ENDING: $5,465

WEEK 4 (Mar 3-7):
  OUT: Rent (-$1,800) - Due 15th but I pay early
  OUT: Normal spending (-$400)
  ENDING: $3,265

BUFFER CHECK: Never below $2,000? Yes, passes.
"

Where I Got Stuck

The problem with my version is that 4 weeks isn’t enough to catch the “lumpy” expenses Mike mentioned. My biggest hits are:

  • Roth IRA annual max push (March): $2,000 extra
  • Auto insurance 6-month premium (April): $1,100
  • Tax software + CPA fee (April): $350
  • Annual gym membership renewal (May): $600

These are all within the same 90-day window and total $4,050 above my normal spending. That’s more than my entire checking balance at some points.

Questions for Bob

  1. How do you handle uncertainty in the forecast? My side hustle income is genuinely unpredictable. Some months it’s $800, some months it’s $0. Do you forecast it at $0 and treat anything that comes in as a bonus?

  2. Should I extend to 13 weeks even for personal finance? Mike uses 8 weeks. You recommend 13 for business. What’s the sweet spot for someone with mixed W-2 and side income?

  3. The investment timing conflict: I want to invest on the 1st every month for dollar-cost averaging. But some months, that creates a cash squeeze. Do you think it makes sense to adjust investment timing based on the forecast, or keep it automatic and just hold more cash buffer?

  4. Future-dated transactions: You mentioned some community members use future-dated transactions in Beancount for known upcoming expenses. Have you tried this? Something like:

; Future-dated transaction for cash flow visibility
; These won't affect current balances but show in the ledger
2025-04-15 * "IRS" "Q1 2025 estimated tax - PROJECTED"
  Expenses:Tax:Federal:Estimated         950.00 USD
  Assets:Checking:Main                  -950.00 USD
  status: "PROJECTED"
  confidence: "HIGH"

2025-04-20 * "State Farm" "6-month auto premium - PROJECTED"
  Expenses:Insurance:Auto              1,100.00 USD
  Assets:Checking:Main                -1,100.00 USD
  status: "PROJECTED"
  confidence: "HIGH"

I’m wondering if those would mess up my current balances in Fava or if there’s a way to filter them out of reports until the date arrives.

The core insight from your post that I keep coming back to: a $8,000 profit month can still bankrupt you if the timing is wrong. I never thought about that for personal finance, but it applies. My net worth goes up every month, but my checking account has scary dips that stress me out. The forecast would eliminate that surprise factor.

Excellent post, Bob. I want to add the variance analysis piece because that’s where the 13-week forecast goes from useful to indispensable. And I want to flag a few pitfalls I’ve seen when clients try to build these.

Variance Analysis: The Feedback Loop

The forecast itself is just a prediction. The real value comes from comparing predictions to reality every week. I track this as a structured note:

2025-02-14 note Assets:Business:Checking:Main "
=== WEEK 1 VARIANCE ANALYSIS ===

                    FORECAST    ACTUAL    VARIANCE
ClientA payment:    +$8,500    +$8,500      $0    (on time)
ClientC retainer:   +$3,000    +$3,000      $0    (auto-ACH)
Payroll:           -$12,000   -$12,340    -$340   (overtime)
AWS hosting:          -$450      -$487     -$37   (usage spike)
Office rent:        -$2,800    -$2,800      $0    (fixed)

NET FORECAST: -$3,750
NET ACTUAL:   -$4,127
VARIANCE: -$377 (1.0% of starting cash)

ASSESSMENT: Good accuracy week. Payroll variance
due to 3 hours overtime for one employee.
AWS variance due to Black Friday traffic spike.
Both are explainable one-time items.

ACTION: Add $400 to payroll estimate for weeks
with known project deadlines.
"

Over time, this analysis reveals patterns:

2025-03-31 note Assets:Business "
=== Q1 FORECAST ACCURACY SUMMARY ===

INFLOWS:
  Total forecasted: $156,000
  Total actual:     $149,200
  Accuracy: 95.6%
  Bias: Overestimated by 4.4%
  Main driver: ClientD consistently pays 10-15 days late

OUTFLOWS:
  Total forecasted: $132,000
  Total actual:     $134,800
  Accuracy: 97.9%
  Bias: Underestimated by 2.1%
  Main driver: Variable costs (hosting, supplies) creep up

CASH POSITION:
  Forecasted end-of-quarter: $51,200
  Actual end-of-quarter: $47,600
  Difference: -$3,600 (7.0% below forecast)

ADJUSTMENTS FOR Q2:
  1. Increase ClientD payment estimate by 12 days
  2. Add 5% buffer to variable operating costs
  3. Tighten payroll estimate with overtime flags
  4. DSO improving: overall 34 days (was 38 in Q4)
"

Key Metrics to Track

Bob mentioned Days Sales Outstanding informally. Here’s how I formalize it in Beancount:

2025-03-31 note Assets:Business:Receivables "
=== RECEIVABLES HEALTH METRICS ===

DAYS SALES OUTSTANDING (DSO):
  Formula: (Avg Receivables / Revenue) x Days
  Q1 2025: ($24,000 / $149,200) x 90 = 14.5 days
  Q4 2024: ($28,500 / $138,000) x 90 = 18.6 days
  TREND: Improving (collections getting faster)

CLIENT-LEVEL DSO:
  ClientA:  30 days (terms: Net 30) - Perfect
  ClientB:  18 days (terms: Net 15) - Slight delay
  ClientC:  5 days (terms: auto-ACH) - Excellent
  ClientD:  52 days (terms: Net 45) - Problem client
  ClientE:  35 days (terms: Net 30) - Acceptable

DAYS PAYABLE OUTSTANDING (DPO):
  Q1 2025: 22 days
  Q4 2024: 19 days
  TREND: Slightly extending (using payment terms fully)

CASH CONVERSION CYCLE:
  DSO (14.5) - DPO (22) = -7.5 days
  Negative CCC means you collect before you pay.
  This is the ideal position for cash flow.
"

Common Pitfalls I’ve Seen

Pitfall 1: Forecasting Revenue, Not Collections

2025-01-01 note Income:Business "
=== PITFALL: REVENUE ≠ CASH ===

WRONG approach:
  'I'll bill $50,000 in March so I'll have $50,000 in cash'

RIGHT approach:
  'I'll bill $50,000 in March.
   Based on client DSO patterns:
   - $15,000 will arrive in March (retainers, fast-payers)
   - $25,000 will arrive in April (Net 30 clients)
   - $8,000 will arrive in May (slow payers)
   - $2,000 may need collection efforts (at risk)

   March CASH from March billings: $15,000, not $50,000'
"

Pitfall 2: Ignoring Credit Card Float

Many business owners forget that credit card charges hit the statement 15-45 days after the purchase. Your forecast should track when the payment is due, not when you swiped:

; Track the liability, not just the expense
2025-02-10 * "Office Depot" "Supplies for client project"
  Expenses:Business:Supplies            285.00 USD
  Liabilities:Business:CreditCard:Chase -285.00 USD
  ; This doesn't affect cash until the CC bill is paid
  ; Forecast the CC payment date, not the purchase date

; The cash impact happens here:
2025-03-05 * "Chase" "Credit card payment - February statement"
  Liabilities:Business:CreditCard:Chase  3,400.00 USD
  Assets:Business:Checking:Main         -3,400.00 USD
  ; THIS is when cash leaves. Forecast this date.

Pitfall 3: Not Stress-Testing

Bob mentioned scenario planning. At minimum, build one stress scenario:

2025-02-07 note Assets:Business "
=== STRESS TEST: WHAT IF BIGGEST CLIENT PAYS 30 DAYS LATE? ===

Biggest outstanding receivable: ClientB, $15,000
Expected: Week 2 (Feb 17)
Stress scenario: Arrives Week 6 (Mar 17) instead

IMPACT:
  Week 2 ending cash: $39,400 -> $24,400
  Week 3 ending cash: $39,020 -> $24,020
  Week 4 ending cash: $37,500 -> $22,500
  Week 5 ending cash: $34,200 -> $19,200  <- BELOW THRESHOLD

MITIGATION:
  If ClientB hasn't paid by Feb 24:
  1. Send payment reminder (friendly)
  2. Review LOC availability ($25,000 limit)
  3. Defer equipment purchase from Week 5

You don't need this scenario to happen.
You need to know what you'd do IF it happens.
"

Answering Fred’s Question About Future-Dated Transactions

Fred, don’t put future-dated transactions in your main ledger - they’ll mess up your current balances and reports in Fava. Instead, keep them in a separate file that you can include conditionally or just reference:

; In your main ledger: actual transactions only
; In a separate file (e.g., forecast.beancount): projected transactions
; Use note directives in your main ledger to reference the forecast

; This is cleaner than fake future transactions:
2025-02-01 note Assets:Checking "
UPCOMING LARGE EXPENSES (next 90 days):
  Apr 15: Estimated taxes    $950   [HIGH confidence]
  Apr 20: Auto insurance   $1,100   [HIGH confidence]
  May 1:  Gym renewal        $600   [HIGH confidence]
  Mar 15: Roth IRA push    $2,000   [MEDIUM - may adjust]
  TOTAL: $4,650
"

The note directive approach keeps your ledger clean while still giving you visibility. Your actual balances stay accurate, and the forecast lives alongside them as commentary.

Bob’s system is sound. Adding variance tracking and these guard rails makes it production-grade for any small business.