Quarterly Estimated Tax Calculator: Building a Beancount Query to Never Overpay Again

Quarterly Estimated Tax Calculator: Building a Beancount Query to Never Overpay Again

Every freelancer, consultant, and self-employed professional faces the same quarterly dilemma: How much should I actually pay in estimated taxes?

Pay too much, and you’re giving the IRS an interest-free loan while missing out on investment opportunities. Pay too little, and you face penalties compounding at roughly 7% annually. With the 2026 Q1 deadline approaching (April 15), let’s talk about building Beancount workflows that optimize quarterly payments—not just automate them.

The Safe Harbor Sweet Spot

The IRS safe harbor rules are your best friend here. Pay at least 100% of your prior year’s total tax liability (or 110% if your AGI exceeded $150,000), and you’re protected from underpayment penalties—even if your actual 2026 liability ends up much higher.

Example: Your 2025 tax return showed $40,000 in total tax. If you pay $10,000 per quarter in 2026, you avoid penalties even if you end up owing $60,000 when you file. You’ll owe the extra $20,000, but no penalties compound on it.

This is critical context that commercial tax software often obscures behind “recommended payment” calculations. They’re optimizing for IRS compliance, not your cash flow.

The Real Cost of Overpaying

Most freelancers overpay because they’re scared of penalties. But consider the opportunity cost:

  • Overpay by $5,000 per quarter = $15,000 average annual float (Q1 overpayment sits for 12 months, Q4 for 3 months)
  • At 5% annual return (conservative index fund), that’s $750 in lost investment gains
  • Over 10 years of freelancing, that’s $7,500+ you’ll never get back

The IRS doesn’t pay interest on your overpayment. You’re just lending them money at 0%.

The Cost of Underpaying (For Comparison)

On the flip side, underpayment penalties aren’t catastrophic but they add up. The 2026 penalty rate is approximately 7% annually, calculated quarterly.

If you underpay by $5,000 in Q1 and don’t correct it, you’ll owe roughly $100-150 in penalties by filing time. Miss all four quarters by $5,000 each, and you’re looking at $400-600 in penalties.

So the penalty for being $5,000 short is significant, but overpaying by $15,000 to avoid a $500 penalty is still a bad trade.

The Beancount Approach: Real-Time Income Tracking

Here’s where Beancount shines over commercial tax software: you can track your actual year-to-date self-employment income in real-time and model your estimated liability before each quarterly deadline.

Step 1: Tag Quarterly Payment Transactions

2026-04-15 * "IRS" "Q1 2026 Estimated Tax Payment"
  Assets:Checking                 -10000.00 USD
  Expenses:Taxes:Federal:Estimated  10000.00 USD
    quarter: "2026-Q1"

The metadata tag lets you query total payments by quarter later.

Step 2: Build a YTD Income Query

You need a Beancount query that calculates year-to-date self-employment income:

SELECT
  account,
  SUM(position) as total
FROM
  WHERE account ~ 'Income:Freelance'
  AND year = 2026

Run this before each quarterly deadline. Multiply your YTD income by your effective tax rate (including self-employment tax—that’s 15.3% on top of income tax) to estimate your current liability.

Step 3: Compare to Safe Harbor Target

Calculate your safe harbor requirement from your 2025 return. Let’s say it’s $40,000.

  • Q1 deadline (April): You should have paid $10,000 by now
  • Q2 deadline (June): You should have paid $20,000 cumulative
  • Q3 deadline (September): $30,000 cumulative
  • Q4 deadline (January 2027): $40,000 total

If your YTD income suggests you’ll owe more than $40,000, increase your payment proportionally. If you’ll owe less, you can safely reduce payments (though many accountants still recommend safe harbor to avoid penalties if income surges late in the year).

Balance Automation with Quarterly Review

I’ve seen freelancers try to fully automate this—set up recurring payments and forget about it. Don’t do this. Your income varies quarter to quarter, and blindly paying the same amount regardless of actual earnings is exactly how you end up with a massive overpayment.

Instead:

  1. Set calendar reminders for two weeks before each deadline
  2. Run your Beancount YTD income query
  3. Recalculate your estimated liability based on actual earnings
  4. Adjust your payment to stay on track with safe harbor (or your recalculated target)
  5. Use balance assertions to verify your payment tracking is accurate

This takes 30 minutes per quarter. That’s 2 hours a year to potentially save hundreds (or thousands) in overpayment opportunity cost.

What’s Your Quarterly Tax Workflow?

I’d love to hear how others are handling this with Beancount:

  • Do you optimize for safe harbor, or recalculate based on current year income?
  • What queries are you running to track YTD earnings?
  • How do you handle irregular income (big client payment in Q3, nothing in Q4)?
  • Any plugins or scripts that automate the reminder/calculation process?

The 2026 Q1 deadline is April 15—less than three weeks away. If you haven’t started tracking yet, now’s the time to set up your Beancount workflow for the year ahead.

This is exactly the kind of analytical breakdown I needed! I’m on the FIRE path (targeting $2M by age 45), and quarterly taxes are one of my biggest optimization opportunities.

My Current Situation

I’m a financial analyst by day but run a FIRE blog on the side that brings in $30-40K annually through affiliate income and consulting. My W-2 job withholds plenty for that income, but the side hustle creates the quarterly tax obligation.

I’ve been conservative (scared) for the past two years—just paying 110% of prior year safe harbor and calling it done. After reading your opportunity cost analysis, I realized I’m leaving real money on the table.

The numbers are sobering: If I overpay by $3,000 per quarter on average, that’s roughly $9,000 annual float. At even a conservative 6% annual return (my historical S&P 500 index average), that’s $540/year I’m gifting to the IRS. Over a 15-year journey to FIRE, that compounds to nearly $12,000 in lost wealth.

When you’re trying to hit a specific FIRE number, every dollar of opportunity cost delays your independence timeline.

My Beancount Quarterly Tax Query

I built a custom query that runs before each deadline:

SELECT
  account,
  SUM(position) as ytd_income
WHERE
  account ~ 'Income:SideHustle'
  AND year = 2026

Then I have a Python script that:

  1. Pulls YTD income from that query
  2. Calculates estimated federal tax (using my known marginal rate of 24% + 15.3% self-employment = 39.3% effective)
  3. Compares to my safe harbor target ($44,000 based on 2025 return)
  4. Outputs recommended quarterly payment

Question for the group: Does anyone have a more sophisticated approach that accounts for income volatility? My affiliate income can swing wildly—$2K one month, $8K the next. I’m currently using a rolling 3-month average to project Q4 income, but I’m not sure if that’s optimal or if I should just stick with safe harbor and accept the overpayment in low-income quarters.

The FIRE Angle

For anyone on the FIRE path: this optimization matters more than you think. Every overpayment dollar is a dollar that could be working toward your FI number. If your target is $2M and you’re losing $500/year to overpayment opportunity cost, that’s an extra month of work at the end of your journey.

Track ruthlessly. Optimize thoughtfully. The IRS doesn’t care about your early retirement timeline—you have to.

Oh man, this brings back memories of my first few years freelancing. I made exactly the mistake you’re warning against—massively overpaying out of fear.

My Overpayment Story

Back in 2022-2023, I was paying 110% safe harbor religiously even though my freelance consulting income had actually dropped 30% from the prior year. I was terrified of IRS penalties because I’d read horror stories online.

The result? I got a $14,000 refund when I filed my 2023 return. Sounds great, right? Wrong. That was $14,000 I could have been investing throughout the year. At historical market returns, I gave up roughly $700-900 in gains just from unnecessary fear.

The lesson I learned: Safe harbor is a ceiling, not a target. It’s the maximum you need to pay to avoid penalties, not the optimal amount.

My Current Quarterly Ritual

Now I have a much better system, and Beancount is at the heart of it. Here’s my quarterly workflow (takes about 30-45 minutes):

Two weeks before each deadline:

  1. Run my YTD income query (similar to what newbie_accountant is asking about):

    bean-query ledger.beancount "SELECT account, SUM(position) WHERE account ~ 'Income:Consulting' AND year = 2026"
    
  2. Review my expense tracking to see if I have unusual deductible expenses this year (new equipment, home office improvements, etc.) that will reduce my tax liability

  3. Calculate my projected annual tax based on YTD income × 4 quarters (rough projection)

  4. Compare to safe harbor: Is my projected liability higher or lower than last year?

  5. Decide payment amount:

    • If projected > safe harbor: pay based on current year projection
    • If projected < safe harbor: pay based on current year projection (not safe harbor!)
    • If income is wildly variable: default to safe harbor to avoid quarterly recalculations
  6. Balance assertion check: After payment, I add a balance assertion to my ledger to verify the payment actually cleared:

    2026-04-15 * "IRS" "Q1 Estimated Tax"
      Assets:Checking  -9500.00 USD
      Expenses:Taxes:Estimated  9500.00 USD
        quarter: "Q1"
    
    2026-04-16 balance Assets:Checking  12450.00 USD
    

Start Simple, Optimize Later

For anyone new to this (especially if you’re new to Beancount): don’t over-engineer on day one.

Your first year, just pay safe harbor. Get comfortable with the mechanics: dates, payment methods, tracking in Beancount. You won’t optimize away thousands of dollars your first year anyway because you’re still learning your income patterns.

Year two and beyond: start optimizing. By then you have historical data in Beancount, you understand your income volatility, and you can make informed decisions about when to pay more or less than safe harbor.

The Real Value of Beancount Here

What I love about using Beancount for quarterly tax tracking is the audit trail. Commercial tax software gives you a “recommended payment” but doesn’t show you the underlying assumptions. With Beancount:

  • You can see exactly what income you’re projecting from
  • Your queries are repeatable (run the same query each quarter)
  • You have version control history of your decisions (via Git)
  • If the IRS ever questions your estimates, you have documentation of your methodology

I’ve never been audited (knock on wood), but if I were, I’d feel confident showing my Beancount ledger with quarterly balance assertions, income tracking, and payment metadata. It’s far more defensible than “TurboTax told me to pay this much.”

Great topic—hope this helps folks avoid my early mistakes!

As someone who manages quarterly taxes for multiple clients, I want to add a bookkeeping perspective to this excellent discussion.

The Client Education Challenge

One of my biggest challenges is getting clients to understand the difference between tax optimization and tax procrastination. Many small business owners confuse “I’ll pay less quarterly to preserve cash flow” with legitimate safe harbor optimization.

The distinction:

  • Tax optimization: Paying the legally minimum amount to avoid penalties (what this thread discusses)
  • Tax procrastination: Underpaying because you don’t want to part with the money, then scrambling at filing time

I’ve had clients who “optimized” their way into owing $25,000 at filing time with zero cash reserves. That’s not optimization—that’s a cash flow disaster waiting to happen.

My Beancount Workflow for Clients

For clients using Beancount, I set them up with a structured quarterly process:

1. Separate Tax Savings Account

I have them create a dedicated account:

Assets:Savings:TaxReserve

Every time they receive income, I instruct them to immediately transfer their estimated tax portion (usually 25-30% for self-employed) into this account:

2026-03-15 * "Client Payment" "Invoice #1234"
  Assets:Checking  5000.00 USD
  Income:Freelance  -5000.00 USD

2026-03-15 * "Tax Reserve Transfer"
  Assets:Checking  -1500.00 USD
  Assets:Savings:TaxReserve  1500.00 USD

This way, when quarterly time arrives, the money is already set aside. No surprises, no scrambling.

2. Quarterly Review Meetings

Two weeks before each deadline, we have a 30-minute call:

  • Review YTD income from Beancount queries
  • Check tax reserve balance
  • Calculate actual quarterly payment needed
  • Discuss any major changes (new equipment purchases, home office deductions, etc.)

3. Balance Assertions Are Non-Negotiable

After the payment clears, we add a balance assertion. This catches errors early:

2026-04-17 balance Assets:Savings:TaxReserve  4500.00 USD

If the balance assertion fails, we know there’s a tracking error or a missed transaction.

The Real Question: Do You Have the Discipline?

Here’s what I tell every client who wants to optimize quarterly payments: Can you resist spending the money you’re not paying to the IRS?

If you optimize down from a $10,000 quarterly safe harbor payment to $7,000 based on current year projections, that extra $3,000 must be:

  • Earning investment returns (as finance_fred correctly points out), OR
  • Sitting in savings ready for tax time, OR
  • Genuinely not owed because your income/deductions changed

If it’s getting spent on business expenses or personal lifestyle, you’re not optimizing—you’re just delaying the inevitable.

When Safe Harbor Makes Sense

Safe harbor isn’t always suboptimal. I recommend it for clients who:

  • Have highly variable income (can’t reliably project annual earnings)
  • Struggle with financial discipline (would spend the “savings”)
  • Are in their first year of self-employment (no historical data)
  • Value simplicity over optimization (set it and forget it)

Beancount’s Role in Professional Bookkeeping

What I love about Beancount for quarterly tax work:

  • Transparency: Clients can see exactly how we calculated everything
  • Repeatability: Same queries every quarter = consistent methodology
  • Audit trail: Git commits show decision history
  • Collaboration: I can review their ledger and suggest adjustments without them sending PDFs or Excel files

For professionals managing multiple clients, Beancount’s plain text format is a game-changer. I can script quarterly reviews, generate reports automatically, and maintain quality across 15+ client books without drowning in proprietary file formats.

Great discussion—I’m saving this thread to share with clients who ask about quarterly optimization!

This is such an important topic, and I love that you’re breaking down the opportunity cost math that most freelancers never calculate.

From my CPA practice working with dozens of self-employed clients, I see the overpayment problem constantly. People are terrified of IRS penalties, so they massively overpay throughout the year, then treat their big refund like a windfall instead of recognizing it as their own money they loaned out interest-free.

The Safe Harbor Strategy I Recommend

For most of my freelance clients, I recommend the prior-year safe harbor (100% or 110%) as the baseline strategy, especially if income is variable and unpredictable. Here’s why:

  1. Peace of mind: Zero penalty risk regardless of income volatility
  2. Simple calculation: Just divide last year’s tax by 4
  3. No quarterly scrambling: Set it and forget it (mostly)

But here’s the key refinement: Use quarterly check-ins to adjust if income drops significantly.

If you’re tracking in Beancount and your Q2 review shows income down 40% from last year, you can reduce your Q3 and Q4 payments accordingly. You won’t get penalized as long as you either:

  • Meet the safe harbor threshold overall, OR
  • Pay 90% of your actual current-year liability

Where Beancount Truly Shines: Self-Employment Tax Tracking

Your point about the 15.3% self-employment tax is critical. This is where I see freelancers get shocked at tax time—they forget that W-2 employees have 7.65% withheld automatically, but self-employed folks pay the full 15.3% (employer + employee portions).

I set up my clients with a dedicated Beancount tracking system for self-employment tax:

2026-03-15 * "Client Invoice Payment"
  Assets:Checking                           5000.00 USD
  Income:Freelance:WebDesign               -5000.00 USD

2026-03-15 * "Self-Employment Tax Accrual (15.3%)"
  Expenses:Taxes:SelfEmployment:Accrued      765.00 USD
  Liabilities:Taxes:SEtaxPayable            -765.00 USD

This creates a running liability account that shows exactly how much self-employment tax you’ve accrued but not yet paid. When you make quarterly estimated payments, you draw down that liability:

2026-04-15 * "Q1 Estimated Tax Payment"
  Assets:Checking                           -3000.00 USD
  Liabilities:Taxes:SEtaxPayable             2295.00 USD  ; 15.3% of Q1 income
  Liabilities:Taxes:IncomeTaxPayable          705.00 USD  ; Estimated income tax portion

The Real-Time Effective Tax Rate Calculator

The query you described is good, but I’d add one more layer: calculate your current effective tax rate based on YTD income, so you’re not flying blind on what you’ll actually owe.

SELECT
  account,
  SUM(position) as total
FROM
  WHERE account ~ 'Income:Freelance'
  AND year = 2026

Then run a separate query for YTD tax payments:

SELECT
  account,
  SUM(position) as total
FROM
  WHERE account ~ 'Expenses:Taxes:Federal:Estimated'
  AND year = 2026

Divide total payments by total income, and you have your current payment rate. Compare that to:

  • Your 2025 effective tax rate (safe harbor baseline)
  • Your estimated 2026 effective tax rate (if income is way up/down)

This gives you a reality check: “I’m currently paying 22% of income in estimated taxes, but based on my income level, I’ll likely owe 28% total. I need to increase Q3 and Q4 payments.”

The Irregular Income Challenge

You asked about handling irregular income—this is the hardest part. I have clients who bill $80K in Q1-Q2, then $10K in Q3-Q4 (seasonal businesses). If they just divide their safe harbor by 4, they’re overpaying massively early in the year when cash flow is good, then struggling in lean quarters.

The IRS allows the annualized income installment method, which lets you pay based on when you actually earned income rather than assuming equal quarterly distribution. But it’s complex and requires Form 2210 Schedule AI.

For most Beancount users, a simpler approach:

  • Track cumulative income vs cumulative safe harbor requirement
  • If you earned 60% of expected annual income by Q2, pay 60% of your safe harbor by Q2
  • Adjust Q3 and Q4 based on actual earnings patterns

This keeps you compliant while matching payment timing to cash flow.

My Recommended Beancount Workflow

  1. January: Pull total tax from prior year return, calculate safe harbor (100% or 110%)
  2. Two weeks before each deadline:
    • Run YTD income query
    • Run YTD tax payment query
    • Calculate if you’re on track for safe harbor
    • Adjust payment up/down based on actual income patterns
  3. Use balance assertions to verify payment tracking matches bank records
  4. Set calendar reminders (I use Google Calendar with email alerts 2 weeks + 2 days before deadlines)

The beauty of Beancount is you’re working with real transaction data, not estimates or projections from software that doesn’t know your business. You can see exactly what you’ve earned, exactly what you’ve paid, and make informed decisions.

Thanks for starting this discussion—I’m sending this thread to several of my freelance clients who’ve been asking about optimizing their quarterly payments!

—Alice

This is such an important topic, and I love that you are breaking down the opportunity cost math that most freelancers never calculate.

From my CPA practice working with dozens of self-employed clients, I see the overpayment problem constantly. People are terrified of IRS penalties, so they massively overpay throughout the year, then treat their big refund like a windfall instead of recognizing it as their own money they loaned out interest-free.

The Safe Harbor Strategy I Recommend

For most of my freelance clients, I recommend the prior-year safe harbor (100% or 110%) as the baseline strategy, especially if income is variable and unpredictable. Here is why:

  1. Peace of mind: Zero penalty risk regardless of income volatility
  2. Simple calculation: Just divide last year tax by 4
  3. No quarterly scrambling: Set it and forget it (mostly)

But here is the key refinement: Use quarterly check-ins to adjust if income drops significantly.

If you are tracking in Beancount and your Q2 review shows income down 40% from last year, you can reduce your Q3 and Q4 payments accordingly. You will not get penalized as long as you either meet the safe harbor threshold overall OR pay 90% of your actual current-year liability.

Where Beancount Truly Shines: Self-Employment Tax Tracking

Your point about the 15.3% self-employment tax is critical. This is where I see freelancers get shocked at tax time - they forget that W-2 employees have 7.65% withheld automatically, but self-employed folks pay the full 15.3% (employer plus employee portions).

I set up my clients with dedicated Beancount tracking for self-employment tax that creates a running liability account showing exactly how much self-employment tax has accrued but not yet paid.

The Real-Time Effective Tax Rate Calculator

The query you described is good, but I would add one more layer: calculate your current effective tax rate based on YTD income, so you are not flying blind on what you will actually owe.

Run a query for YTD income and another for YTD tax payments. Divide total payments by total income, and you have your current payment rate. Compare that to your 2025 effective tax rate (safe harbor baseline) and your estimated 2026 effective tax rate.

This gives you a reality check: I am currently paying 22% of income in estimated taxes, but based on my income level, I will likely owe 28% total. I need to increase Q3 and Q4 payments.

The Irregular Income Challenge

You asked about handling irregular income - this is the hardest part. I have clients who bill 80K in Q1-Q2, then 10K in Q3-Q4 (seasonal businesses). If they just divide their safe harbor by 4, they are overpaying massively early in the year when cash flow is good, then struggling in lean quarters.

The IRS allows the annualized income installment method, which lets you pay based on when you actually earned income rather than assuming equal quarterly distribution. But it is complex and requires Form 2210 Schedule AI.

For most Beancount users, a simpler approach is to track cumulative income vs cumulative safe harbor requirement. If you earned 60% of expected annual income by Q2, pay 60% of your safe harbor by Q2. Adjust Q3 and Q4 based on actual earnings patterns.

This keeps you compliant while matching payment timing to cash flow.

My Recommended Beancount Workflow

  1. January: Pull total tax from prior year return, calculate safe harbor (100% or 110%)
  2. Two weeks before each deadline: Run YTD income query, run YTD tax payment query, calculate if you are on track for safe harbor, adjust payment based on actual income patterns
  3. Use balance assertions to verify payment tracking matches bank records
  4. Set calendar reminders (I use Google Calendar with email alerts 2 weeks plus 2 days before deadlines)

The beauty of Beancount is you are working with real transaction data, not estimates or projections from software that does not know your business. You can see exactly what you have earned, exactly what you have paid, and make informed decisions.

Thanks for starting this discussion - I am sending this thread to several of my freelance clients who have been asking about optimizing their quarterly payments!

This is such perfect timing! I just finished helping several freelance clients navigate the 2026 tax landscape, and quarterly estimates are causing massive confusion this year.

One thing I want to add to this discussion: The 1099-K threshold rollback is creating a false sense of security for many freelancers.

Here’s what happened: The IRS originally planned to lower the 1099-K reporting threshold to $5,000 for 2026, then eventually to $600. But with the One Big Beautiful Bill, it rolled back to $20,000 + 200 transactions.

The problem? Freelancers think: “I made $8,000 on Upwork, didn’t get a 1099-K, so maybe I don’t need to report it.”

WRONG. All income is reportable, regardless of whether you receive a 1099-K.

Why This Matters for Quarterly Estimates

When you’re building your Beancount query for quarterly estimates, you need to track every single payment from every source:

  • Upwork, Fiverr, Freelancer.com
  • PayPal, Venmo (business payments)
  • Zelle, cash, checks
  • Direct deposits from clients

Even if none of these individually trigger a 1099-K, the IRS can still see bank deposits and payment platform activity.

My Recommended Metadata Structure

I advise clients to add this to every freelance income transaction:

2026-03-15 * "Upwork" "Web design - Client ABC"
  platform: "Upwork"
  expected_1099k: "Yes"
  client: "ABC Corp"
  Assets:Bank:Checking                    1500.00 USD
  Income:Freelance:WebDesign             -1500.00 USD

Then for your quarterly estimate query, you can sum ALL freelance income, calculate self-employment tax (15.3% on net after deductions), and determine your federal + state quarterly payment.

The 2026 Quarterly Deadlines Again

Just to reinforce:

  • Q1 (Jan-Mar income): Due April 15
  • Q2 (Apr-May income): Due June 16
  • Q3 (Jun-Aug income): Due September 15
  • Q4 (Sep-Dec income): Due January 15, 2027

Safe Harbor Rules

Remember the safe harbor provisions to avoid underpayment penalties:

  1. 100% of prior year tax (110% if AGI > $150k), OR
  2. 90% of current year tax

Your Beancount query should help you calculate running totals throughout the year so you can choose the safer option.

If anyone wants help building the actual BQL query for this, I’m happy to share examples. The key is tracking year-to-date income, deductible expenses, and calculating running tax liability in real-time.

@tax_tina This is gold. The 1099-K confusion is real—I saw it firsthand in my FIRE community.

One thing I’ve been doing to automate the “track everything” workflow: I built a simple Python script that queries my Beancount ledger and calculates my running quarterly estimate every time I update my books.

My Quarterly Tax Tracking Dashboard

Here’s the workflow:

  1. Track all freelance income by source (exactly as Tina described)
  2. Categorize ALL business expenses with proper accounts
  3. Run a monthly BQL query that calculates:
    • Year-to-date gross income
    • Year-to-date deductible expenses
    • Net self-employment income
    • Self-employment tax (15.3%)
    • Estimated federal income tax (based on brackets)
    • State tax (for me, WA has no income tax, but adjust as needed)

The Query I Use

This is simplified, but it gives you the idea:

SELECT 
  account, 
  sum(position) 
WHERE 
  account ~ "Income:Freelance" 
  AND date >= 2026-01-01 
  AND date <= 2026-03-31

Then I do the same for Expenses:Business to get my deductible expenses.

Automating the “Set Aside 25-30%” Rule

Every time income hits my checking account, I immediately transfer 30% to a dedicated “Tax Savings” account. In Beancount:

2026-03-15 * "Upwork" "Payment received"
  Assets:Bank:Checking                    1500.00 USD
  Income:Freelance:Upwork                -1500.00 USD

2026-03-15 * "Tax Withholding" "30% for Q1 estimate"
  Assets:Bank:TaxSavings                   450.00 USD
  Assets:Bank:Checking                    -450.00 USD

This way, when April 15 comes around, I have the cash ready and I’m not scrambling to find $5,000.

The Cash Flow Advantage

The beautiful thing about this system: I never worry about quarterly deadlines.

When Q1 is due on April 15, I already know:

  1. Exactly how much I earned (tracked in Beancount)
  2. Exactly how much I owe (calculated via query)
  3. The money is already sitting in my tax savings account

No surprises, no penalties, no stress.

One Warning About Safe Harbor

Tina mentioned the safe harbor rules (100% of prior year tax). This is critical if your income is growing significantly year-over-year.

For example:

  • 2025: You made $50k freelancing, paid $10k in taxes
  • 2026: You’re on track for $100k freelancing

If you just pay $10k in quarterly estimates (matching prior year), you’re safe from penalties BUT you’ll owe a huge balance at tax time. Better to estimate higher and avoid the cash flow shock in April.

For FIRE folks especially: don’t treat quarterly estimates as “minimize payment now.” Treat them as “accurate reflection of current year liability” so you’re not caught short when you’re trying to max out retirement contributions.

Happy to share my Python script if anyone’s interested!

Both @tax_tina and @finance_fred are dropping serious knowledge here. I want to add a perspective from someone who learned this the hard way.

My First Year Freelancing: A Cautionary Tale

When I started freelancing in 2022 (side gig while working full-time), I made two massive mistakes:

  1. I didn’t track income meticulously - I thought “I’ll just wait for 1099s at tax time”
  2. I didn’t make quarterly payments - I figured I’d pay it all in April

The result? I owed $4,800 in taxes I didn’t have saved, PLUS a $380 underpayment penalty.

That’s when I discovered Beancount and completely overhauled my system.

What I Wish I’d Known From Day One

The 1099-K threshold doesn’t matter for what you OWE—it only matters for what gets automatically reported. But here’s the thing most people miss:

The IRS has access to your bank account activity through third-party reporting. Even if PayPal doesn’t send you a 1099-K, they’re still reporting aggregate transaction data to the IRS. When your tax return shows $30k in income but your bank shows $60k in deposits, that’s an audit red flag.

Beancount solves this by forcing you to account for EVERY deposit. If you deposit $2,000 but it’s not income (e.g., reimbursement from a friend, transfer between accounts), you document it:

2026-03-20 * "Venmo" "Roommate reimbursement for utilities"
  Assets:Bank:Checking          200.00 USD
  Assets:Receivable:Roommate   -200.00 USD

Now your books reconcile with your bank statements, and you can prove to the IRS what’s income vs what’s not.

The “Start Simple” Approach for New Freelancers

If you’re just starting out and this seems overwhelming, here’s my recommendation:

Month 1-3: Just track everything

  • Record every payment received (all sources)
  • Record every business expense
  • Don’t worry about perfect categorization yet
  • Goal: Build the habit

Month 4-6: Add quarterly estimate tracking

  • Calculate total freelance income year-to-date
  • Multiply by 30% as a rough tax estimate
  • Compare to what you’ve actually set aside
  • Make your first quarterly payment (even if you’re late, it’s better than not paying)

Month 7-12: Optimize with queries and automation

  • Refine your account structure
  • Build BQL queries (like Fred’s example)
  • Start using metadata for better categorization
  • Plan for next year’s quarterly estimates

The Emotional/Psychological Benefit

Here’s something nobody talks about: The peace of mind is worth more than the tax savings.

Before Beancount, I had constant low-level anxiety about taxes. “Am I tracking this right? Am I going to owe more than I think? Will I get audited?”

Now? I know exactly where I stand at any moment. My quarterly estimates are accurate. My deductions are documented. If the IRS ever comes knocking, I have a complete, defensible record of every transaction.

That mental clarity is priceless, especially when you’re trying to grow a freelance business and can’t afford to be distracted by tax stress.

One More Thing About the 1099-K Rollback

Tina mentioned this, but it’s worth repeating: The rollback to $20,000 is NOT a gift to freelancers. It’s actually worse in some ways because it creates confusion.

People think: “Great, I don’t have to report this income!” when they still absolutely do. Then they get hit with unexpected tax bills or worse, audits.

The Beancount approach eliminates this confusion entirely: Track everything, always.

If you’re new to freelancing and feeling overwhelmed by all this, start with one thing: track every payment you receive. You can figure out the rest as you go, but that foundation will save you so much stress down the road.