Accrual vs Cash Accounting: When Does a Freelancer Need to Care?

This question comes up in every freelancer conversation I have: “Should I be using accrual or cash accounting?” The short answer for most freelancers is: you’re already using cash basis, and that’s fine for taxes. But the longer answer - the one that actually helps you run your business better - is more nuanced.

Let me break down both methods with Beancount examples, explain when the IRS cares, and show you how to get the best of both worlds.

The Core Difference in 30 Seconds

Cash basis: You record income when money hits your bank account. You record expenses when money leaves your bank account.

Accrual basis: You record income when you earn it (send the invoice). You record expenses when you incur them (receive the bill).

Same economic activity, different timing. That timing difference can make your financial picture look completely different.

The Same Month, Two Different Stories

Let’s say in March you complete a $5,000 project, send the invoice, receive a $500 hosting bill, and pay last month’s $800 contractor bill. Here’s how each method records March:

; ============================================
; CASH BASIS VIEW OF MARCH
; ============================================

; You completed $5,000 of work but haven't been paid yet
; Cash basis: NOTHING recorded for income

; You received a $500 hosting bill but haven't paid it
; Cash basis: NOTHING recorded for expense

; You paid last month's $800 contractor bill
2025-03-05 * "Contractor" "Pay February contractor invoice"
  Expenses:Business:Contractors     800.00 USD
  Assets:Business:Checking         -800.00 USD

; MARCH P&L (Cash Basis):
;   Revenue:  $0
;   Expenses: $800
;   Profit:   -$800
;   Looks like a terrible month!
; ============================================
; ACCRUAL BASIS VIEW OF MARCH
; ============================================

; You completed the project and invoiced the client
2025-03-15 * "ClientA" "Invoice #2025-012 - Website redesign"
  Assets:Business:Receivables:ClientA    5,000.00 USD
  Income:Business:Services              -5,000.00 USD
  invoice: "2025-012"
  terms: "Net 30"

; You received the hosting bill (owe it but haven't paid)
2025-03-20 * "AWS" "March hosting - bill received"
  Expenses:Business:Hosting              500.00 USD
  Liabilities:Business:Payables:AWS     -500.00 USD

; You paid last month's contractor bill (expense was recorded in Feb)
2025-03-05 * "Contractor" "Pay February contractor invoice"
  Liabilities:Business:Payables:Contractor  800.00 USD
  Assets:Business:Checking                 -800.00 USD

; MARCH P&L (Accrual Basis):
;   Revenue:  $5,000
;   Expenses: $500 (hosting incurred in March)
;   Profit:   $4,500
;   Reflects what actually happened economically!

Same business. Same month. Cash basis says you lost $800. Accrual basis says you earned $4,500. Which one is “right”? Both are - they just answer different questions. Cash basis tells you what happened in your bank account. Accrual basis tells you what happened in your business.

When Does the IRS Care?

For most freelancers, the IRS doesn’t force you into one method. The rules:

2025-01-01 note Equity:Business "
=== IRS ACCOUNTING METHOD RULES ===

WHO CAN USE CASH BASIS:
  - Sole proprietors (Schedule C filers): YES
  - Single-member LLCs: YES
  - Partnerships and S-Corps: YES (if under threshold)
  - C-Corps: YES (if under threshold)

THE THRESHOLD:
  Average annual gross receipts < $31 million (2025)
  Calculated over prior 3 tax years

  If you're a freelancer reading this forum,
  you are almost certainly under $31 million.
  Cash basis is available to you.

INVENTORY EXCEPTION:
  If you sell physical products and maintain
  inventory, you MAY need accrual for COGS.
  But 'small business taxpayer' exception
  (< $31M) lets most keep cash basis anyway.

ONCE YOU CHOOSE:
  You choose by filing your first return.
  Cash basis = report income when received.
  Switching later requires IRS Form 3115.
  Automatic approval for most small businesses.
"

Why Freelancers Should Care Anyway

Even if you file taxes on cash basis (and you should), understanding accrual accounting helps you:

1. Know Your Real Profitability

2025-04-01 note Assets:Business "
=== WHY ACCRUAL MATTERS FOR BUSINESS DECISIONS ===

SCENARIO: You worked 200 hours in Q1.
  Invoiced: $45,000
  Collected: $18,000 (rest is outstanding)

CASH BASIS Q1 PROFIT:
  Revenue:  $18,000
  Expenses: $12,000
  Profit:    $6,000
  Hourly rate (apparent): $30/hour

ACCRUAL BASIS Q1 PROFIT:
  Revenue:  $45,000
  Expenses: $15,000 (includes unpaid bills)
  Profit:   $30,000
  Hourly rate (actual): $150/hour

The cash basis made your business look barely
viable. The accrual basis shows reality: you're
running a profitable consulting practice with
a collections timing lag.

Which view should inform your business decisions?
"

2. Spot Problem Clients Early

; Receivables aging shows who owes you and how late they are
2025-04-01 note Assets:Business:Receivables "
=== RECEIVABLES AGING REPORT ===

CLIENT         AMOUNT    DAYS     STATUS
ClientA        $5,000    15       Current (Net 30)
ClientB        $8,000    45       OVERDUE (Net 30)
ClientC        $3,000    22       Current (Net 30)
ClientD       $12,000    67       SERIOUSLY OVERDUE
ClientE        $2,500     5       Current (Net 15)

TOTAL OUTSTANDING: $30,500
OVERDUE (>30 days): $20,000 (66%)

You can't see this on cash basis.
Cash basis just shows: revenue hasn't arrived yet.
Accrual basis shows: ClientB and ClientD need
collection attention NOW.
"

3. Make Better Pricing Decisions

If you only look at cash collected, you might think your rates are too low. If you look at accrued revenue minus accrued expenses, you see your actual margins. This affects whether you raise rates, take on new clients, or fire slow-paying ones.

The Beancount Solution: Track Accrual, Report Both Ways

Here’s the approach I recommend: keep your books on accrual basis and derive the cash view when you need it.

Beancount naturally supports accrual accounting because it uses double-entry bookkeeping. Every invoice creates a receivable. Every bill creates a payable. The cash movement is a separate transaction.

; Step 1: Invoice sent (accrual - revenue recognized)
2025-03-15 * "ClientA" "Invoice #2025-012"
  Assets:Business:Receivables:ClientA    5,000.00 USD
  Income:Business:Services              -5,000.00 USD
  invoice: "2025-012"
  status: "SENT"

; Step 2: Payment received (cash - bank account updated)
2025-04-12 * "ClientA" "Payment - Invoice #2025-012"
  Assets:Business:Checking               5,000.00 USD
  Assets:Business:Receivables:ClientA   -5,000.00 USD
  invoice: "2025-012"
  status: "PAID"
  days_to_pay: 28

For tax reporting (cash basis), you query when money moved through bank accounts:

; Cash basis income (what the IRS sees)
SELECT
  year, month,
  sum(position) as cash_received
WHERE
  account = 'Assets:Business:Checking'
  AND narration ~ 'Payment'
  AND year = 2025
GROUP BY year, month

For business reporting (accrual basis), you query when revenue was earned:

; Accrual basis income (what your business actually earned)
SELECT
  year, month,
  sum(position) as revenue_earned
WHERE
  account ~ 'Income:Business'
  AND year = 2025
GROUP BY year, month

Same ledger. Two different views. No extra work.

The Accounts You Need

If you want both views, your chart of accounts adds two account types beyond basic cash tracking:

; Receivables (what clients owe you)
2025-01-01 open Assets:Business:Receivables USD
; Or per-client:
2025-01-01 open Assets:Business:Receivables:ClientA USD
2025-01-01 open Assets:Business:Receivables:ClientB USD

; Payables (what you owe vendors)
2025-01-01 open Liabilities:Business:Payables USD
; Or per-vendor:
2025-01-01 open Liabilities:Business:Payables:AWS USD
2025-01-01 open Liabilities:Business:Payables:Contractor USD

These are the bridge accounts between cash and accrual. If you skip them and just record income when paid and expenses when paid, you’re doing cash basis. If you use them to record the obligation first and the payment second, you’re doing accrual basis.

My Recommendation

  1. For taxes: File cash basis. It’s simpler, gives you more control over timing, and the IRS expects it from most freelancers.
  2. For your business: Think accrual. Track receivables and payables. Know what you’ve earned versus what you’ve collected.
  3. In Beancount: Do both. Record invoices as receivables. Record bills as payables. Query by bank account activity for cash view, by income/expense accounts for accrual view.

The freelancers who struggle most are the ones who only see cash. They make pricing decisions based on collections, not earnings. They can’t spot late-paying clients until they’re broke. They think a slow collection month means a bad business month.

Accrual accounting is the lens that shows you what your business actually did. Cash accounting is the lens that shows you what your bank account did. You need both.

Alice, thank you for this. I’ve been doing everything cash basis without even realizing that’s what it was called. I just record transactions when money moves. Now I understand why my Beancount reports feel “off” sometimes.

My Aha Moment

Last month I completed a $3,200 project, sent the invoice, AND paid for a $400 course on Kubernetes. My Beancount showed:

; What I recorded (cash basis, unknowingly)
2025-01-20 * "Udemy" "Kubernetes certification course"
  Expenses:Business:Education     400.00 USD
  Assets:Checking               -400.00 USD

; January P&L: Revenue $0, Expenses $400, "Profit" -$400
; I felt terrible about January

But I’d actually done $3,200 of work! The payment just didn’t arrive until February 8. If I’d tracked the receivable:

; What I should have recorded (accrual)
2025-01-15 * "StartupCo" "Invoice #005 - K8s migration consulting"
  Assets:Receivables:StartupCo   3,200.00 USD
  Income:Freelance              -3,200.00 USD

; January P&L: Revenue $3,200, Expenses $400, Profit $2,800
; January was actually a great month

My Practical Questions

  1. Do I need to go back and add receivables retroactively? I have 6 months of cash-only records. Should I add the invoice dates and receivable entries for past months? Or just start doing it going forward?

  2. What about small expenses I pay immediately? If I buy a $15 domain name and pay instantly with my debit card, do I still need to create a payable and then pay it? Or can I just record the expense when paid? It feels silly to create Liabilities:Payables:Namecheap for a $15 charge.

  3. The two-transaction workflow feels like double the work. For every invoice I now need TWO transactions (send invoice, receive payment) instead of one. For every bill, TWO transactions (receive bill, pay bill). Is there a way to streamline this? Maybe a Beancount importer that matches payments to invoices?

  4. Which reports in Fava show me the accrual view vs cash view? Or do I need custom BQL queries for everything?

I get the value of accrual for understanding my business. I’m just worried about the maintenance overhead doubling. For someone doing maybe 5-8 invoices per month, is it worth the extra bookkeeping?

Alice nailed the theory. Let me add the practical bookkeeping workflow because I set this up for my freelance clients every week, and there are shortcuts that make the “double transaction” problem much less painful.

The Real-World Workflow

For my clients, I use what I call the “receivables light” approach. You track receivables for meaningful invoices (anything over $500 or with Net 30+ terms) and skip it for small, immediate transactions.

; TRACK as receivable (large invoice, payment delayed)
2025-03-01 * "ClientA" "Invoice #042 - March consulting"
  Assets:Business:Receivables:ClientA   4,500.00 USD
  Income:Business:Services             -4,500.00 USD
  invoice: "042"

2025-03-28 * "ClientA" "Payment received - Invoice #042"
  Assets:Business:Checking              4,500.00 USD
  Assets:Business:Receivables:ClientA  -4,500.00 USD
  invoice: "042"

; DON'T TRACK as receivable (small, immediate payment)
2025-03-05 * "One-off client" "Quick logo fix - paid via Venmo"
  Assets:Business:Checking          150.00 USD
  Income:Business:Services         -150.00 USD
  ; No receivable needed. Payment was instant.

The rule of thumb I give clients: if the gap between earning and receiving is more than a week, use a receivable. If it’s same-day or next-day, just record the cash transaction.

Same Approach for Payables

; TRACK as payable (bill received, payment due later)
2025-03-01 * "AWS" "March hosting invoice"
  Expenses:Business:Hosting              450.00 USD
  Liabilities:Business:Payables:AWS     -450.00 USD

2025-03-15 * "AWS" "Pay March hosting invoice"
  Liabilities:Business:Payables:AWS      450.00 USD
  Assets:Business:Checking              -450.00 USD

; DON'T TRACK as payable (paid immediately)
2025-03-10 * "Starbucks" "Client meeting coffee"
  Expenses:Business:Meals              12.50 USD
  Assets:Business:Checking            -12.50 USD

Answering Sarah’s Questions

Going back retroactively? Don’t. Start the receivable/payable workflow from today. Your historical cash records are fine for tax purposes. Going forward, you’ll have both views.

Small expenses? Pay-and-record-immediately is perfectly fine. I’ve never had a CPA or the IRS question a $15 domain charge recorded at payment. The receivable/payable workflow is for invoices and bills with meaningful time gaps.

Double the work? In practice it’s about 30% more transactions, not 100% more. Most small expenses are pay-immediately (one transaction). Only invoiced income and billed expenses need the two-step. For 5-8 invoices per month, that’s 5-8 extra transactions. Maybe 10 minutes.

Fava reports? Fava’s default Income Statement is accrual-based (it shows income when booked to Income accounts, regardless of when cash moves). The Balance Sheet shows your receivables and payables balances. For a pure cash-basis view, you’d need a custom BQL query filtering on bank account movements.

The Monthly Reconciliation Check

I do this with every client to make sure receivables and payables are accurate:

2025-04-01 note Assets:Business:Receivables "
=== MONTHLY RECEIVABLES RECONCILIATION ===

OPEN INVOICES (should match receivables balance):
  #042 ClientA    $4,500  (paid 3/28 - CLEAR)
  #043 ClientB    $2,800  (sent 3/15, due 4/14)
  #044 ClientC    $6,200  (sent 3/22, due 4/21)
  #045 ClientD    $1,500  (sent 3/28, due 4/27)

EXPECTED RECEIVABLES BALANCE: $10,500
ACTUAL BEANCOUNT BALANCE:     $10,500  ✓

If these don't match, you either:
  1. Forgot to record an invoice (receivable too low)
  2. Forgot to clear a payment (receivable too high)
  3. Recorded the wrong amount somewhere
"

This five-minute monthly check catches errors before they compound. It’s the main reason I push clients toward accrual - the reconciliation discipline catches mistakes that cash-only bookkeeping misses.

The Bottom Line

For freelancers with straightforward businesses: use Alice’s hybrid approach. Track receivables for real invoices. Skip them for small instant payments. File taxes on cash basis. Use the accrual view to understand your business. It’s 10-15 minutes more per week of bookkeeping for dramatically better financial visibility.

Alice and Bob covered the mechanics well. I want to zoom in on the tax strategy side of cash vs. accrual, because this is where the choice actually costs or saves you money.

Cash Basis Is a Tax Timing Tool

The biggest advantage of cash basis for freelancers isn’t simplicity - it’s control over when income becomes taxable. This is a legitimate, IRS-approved strategy.

2025-01-01 note Liabilities:Tax "
=== CASH BASIS TAX TIMING STRATEGIES ===

STRATEGY 1: DEFER INCOME
  If you're having a high-income year and approaching
  a tax bracket boundary:

  - Delay invoicing in December until January
  - Ask clients to hold payment until January
  - Revenue earned in Dec, taxed in Jan (next year)

  EXAMPLE:
    2025 income through November: $155,000
    December project: $8,000
    $155K puts you near the 32% bracket ($191,950)

    Cash basis: Invoice Jan 2, payment arrives Jan 15
    -> $8,000 taxed in 2026 instead of 2025
    -> Stay in 24% bracket for 2025

STRATEGY 2: ACCELERATE EXPENSES
  If you have upcoming business purchases:

  - Buy equipment in December instead of January
  - Prepay Q1 software subscriptions in December
  - Pay contractor invoices before year-end

  This increases 2025 deductions, lowering
  taxable income in the current year.

STRATEGY 3: BUNCH DEDUCTIONS
  Combine strategies 1 + 2 in years where you
  expect income to be unusually high.
  Defer income INTO next year.
  Pull expenses FROM next year into this year.
"

Why Accrual Removes This Flexibility

On accrual basis, you’d owe taxes on that December project as soon as you invoice it, regardless of when the client pays. You lose the timing control entirely:

2025-12-15 note Income:Business "
=== CASH vs ACCRUAL TAX IMPACT ===

SCENARIO: $8,000 project completed December 15

CASH BASIS (invoice in January):
  2025 taxable income: $155,000
  2025 federal tax (24% bracket): ~$31,100
  $8,000 deferred to 2026

ACCRUAL BASIS (must recognize in December):
  2025 taxable income: $163,000
  2025 federal tax (hits 32% bracket on last $11,050): ~$33,180
  No deferral option.

DIFFERENCE: ~$2,080 more tax in 2025 under accrual
"

This is why I tell every freelancer: file your taxes on cash basis. The IRS lets you. Take the timing control. It’s one of the few tax advantages of being self-employed.

Form 3115: Switching Methods

If you’ve been filing accrual and want to switch to cash (or vice versa), you need Form 3115. The good news: for most sole proprietors, it’s an automatic approval. The bad news: there’s a Section 481(a) adjustment to prevent double-counting or missing income during the transition.

2025-01-01 note Liabilities:Tax "
=== FORM 3115 TRANSITION ADJUSTMENT ===

EXAMPLE: Switching from accrual to cash basis

At switch date, you have:
  Outstanding receivables: $22,000 (invoiced, not collected)
  Outstanding payables:    $8,000 (billed, not paid)

SECTION 481(a) ADJUSTMENT:
  Receivables ($22K) were already reported as income
  under accrual. Under cash, they won't be income
  until collected. Without adjustment, you'd
  never pay tax on that $22K.

  The 481(a) adjustment adds $22K to income.
  Spread over 4 years: $5,500/year additional income.

  Payables ($8K) were already deducted under accrual.
  Under cash, they'd be deducted again when paid.
  The 481(a) adjustment removes $8K of deductions.

  NET ADJUSTMENT: +$14,000 over 4 years
  ANNUAL IMPACT: +$3,500/year for 4 years

  This is a real cost. Factor it into your decision.
"

The Quarterly Estimated Tax Connection

Cash basis interacts with estimated tax payments in an important way. Under cash basis, you only owe estimated tax on income actually received in each quarter:

2025-01-01 note Liabilities:Tax:Federal:Estimated "
=== ESTIMATED TAX WITH CASH BASIS ===

SAFE HARBOR METHOD (simpler):
  Pay 110% of prior year tax in 4 equal installments.
  Doesn't matter when income arrives.
  No underpayment penalty regardless of timing.

ANNUALIZED INCOME METHOD (saves money if income is lumpy):
  Q1: Tax on income received Jan-Mar
  Q2: Tax on income received Jan-May (annualized)
  Q3: Tax on income received Jan-Aug (annualized)
  Q4: Tax on income received Jan-Dec

  If Q1 is slow and Q4 is strong,
  this method means smaller Q1 payments.
  Requires Form 2210 Schedule AI at filing.

For most freelancers, safe harbor is simpler
and prevents penalties. Use the annualized method
only if your income is genuinely seasonal
and you want to optimize cash flow.
"

My Bottom Line

Use cash basis for taxes. Use accrual thinking for business decisions. Track receivables in Beancount so you can see both views. And most importantly: use the timing flexibility that cash basis gives you. Every December, review your year-to-date income and make intentional decisions about when to invoice and when to pay. That 10-minute review can save you thousands in taxes.

I want to add the data analysis angle because this is where accrual accounting transformed how I think about my side income and my path to financial independence.

The Query That Changed My Perspective

I was tracking my consulting income cash-only for a year. My monthly income report looked like this:

2025-01-01 note Income:Consulting "
=== CONSULTING INCOME (CASH BASIS VIEW) ===

2024 MONTHLY COLLECTIONS:
  Jan: $0       May: $6,200   Sep: $4,800
  Feb: $3,500   Jun: $0       Oct: $8,200
  Mar: $0       Jul: $7,500   Nov: $2,400
  Apr: $4,800   Aug: $0       Dec: $5,100

Average: $3,542/month
Std deviation: $2,935
Coefficient of variation: 83%

This looks like a wildly unpredictable business.
Four months of $0 income? Terrifying.
"

Then I added receivable tracking and looked at when I actually earned the income:

2025-01-01 note Income:Consulting "
=== CONSULTING INCOME (ACCRUAL BASIS VIEW) ===

2024 MONTHLY REVENUE (when work was completed):
  Jan: $3,500   May: $4,800   Sep: $2,400
  Feb: $4,800   Jun: $7,500   Oct: $5,100
  Mar: $6,200   Jul: $4,200   Nov: $3,800
  Apr: $0       Aug: $4,800   Dec: $0
  (Apr: vacation, Dec: holiday break)

Average: $3,925/month
Std deviation: $2,087
Coefficient of variation: 53%

COMPLETELY different story.
Revenue is actually fairly consistent (~$4K/month).
The volatility was in COLLECTIONS, not EARNING.
Two zero months were intentional breaks, not dry spells.

This means my business is healthy.
The problem was never revenue - it was payment timing.
Solution: better payment terms, not more marketing.
"

Building Both Reports from One Ledger

Alice is right that Beancount’s natural structure supports both views. Here are the queries I run monthly:

; ACCRUAL VIEW: When was revenue earned?
SELECT
  year, month,
  sum(position) as revenue
WHERE
  account ~ 'Income:Business'
  AND year = 2025
GROUP BY year, month
ORDER BY year, month

; CASH VIEW: When did money arrive?
SELECT
  year, month,
  sum(position) as collected
WHERE
  account = 'Assets:Business:Checking'
  AND position > 0
  AND year = 2025
GROUP BY year, month
ORDER BY year, month

The Collections Efficiency Metric

With accrual data, I can calculate a metric that cash-only books can’t show: how efficiently I’m converting earned revenue into collected cash.

2025-04-01 note Assets:Business "
=== COLLECTIONS EFFICIENCY (Q1 2025) ===

Revenue earned (accrual): $13,500
Cash collected:           $11,200
Collection rate:          83%

UNCOLLECTED BREAKDOWN:
  ClientD: $1,500 (Net 45 terms, within terms)
  ClientE:   $800 (Net 30, 5 days overdue)

TREND:
  Q4 2024 collection rate: 78%
  Q1 2025 collection rate: 83%
  Improving! New payment terms are working.

INSIGHT:
  If I can get collection rate to 90%+, my
  cash flow matches my revenue closely enough
  that cash and accrual views converge.
  This means tighter payment terms or
  requiring deposits on new projects.
"

The FIRE Angle: Accrual Gives You Better Savings Rate Data

For anyone tracking their savings rate (which you should if you’re pursuing financial independence), accrual gives a more honest number:

2025-04-01 note Assets:Investment "
=== SAVINGS RATE: CASH vs ACCRUAL ===

Q1 2025 (Cash Basis):
  Income collected:    $11,200
  Expenses paid:        $8,400
  Saved/Invested:       $2,800
  Savings rate:         25.0%

Q1 2025 (Accrual Basis):
  Revenue earned:      $13,500
  Expenses incurred:    $9,100
  True surplus:         $4,400
  Savings rate:         32.6%

The accrual savings rate is more predictive
of my long-term trajectory because it doesn't
penalize me for clients paying next month.

For FI projections, use the accrual-based rate.
For cash flow planning, use the cash-based rate.
Both matter. They serve different purposes.
"

My Take on Alice’s Recommendation

I agree completely: track accrual, file cash. The extra work is minimal once you build the habit. I spend about 5 extra minutes per invoice adding the receivable entry, and another minute clearing it when payment arrives.

The payoff is enormous: I stopped panicking during low-collection months, I identified that my business was actually stable (the problem was payment timing), and I negotiated better payment terms with slow-paying clients because I had data showing their payment patterns.

If you’re data-driven like me, accrual is non-negotiable. The cash-only view hides too much signal in collection noise.