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:
- Set calendar reminders for two weeks before each deadline
- Run your Beancount YTD income query
- Recalculate your estimated liability based on actual earnings
- Adjust your payment to stay on track with safe harbor (or your recalculated target)
- 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.