The OBBBA Just Made QBI Permanent and Restored 100% Bonus Depreciation—Is Your Beancount Chart of Accounts Ready?

The One Big Beautiful Bill Act (OBBBA), signed July 4, 2025, just delivered the biggest tax overhaul for pass-through businesses since TCJA in 2017. If you track client or personal business finances in Beancount, this affects your chart of accounts, your importers, and your entire tax planning workflow.

Here are the headline changes hitting in tax year 2026:

QBI Deduction Is Now Permanent

The Section 199A Qualified Business Income deduction was set to sunset after 2025. OBBBA made it permanent at 20%. But that is not the only change:

  • Phase-in range expanded: For married filing jointly, the phase-out window now runs $394,600–$544,600 (a $50,000 expansion from the old ceiling of $494,600). This means more SSTB owners (lawyers, doctors, consultants) qualify for the full deduction.
  • New $400 minimum deduction: Any taxpayer with at least $1,000 of active QBI now gets a minimum $400 deduction, inflation-adjusted after 2026. This catches micro-businesses and side hustlers who previously fell below meaningful deduction amounts.
  • Inflation indexing continues: Thresholds will adjust annually, so you need to update your scripts each year.

100% Bonus Depreciation Restored Permanently

Remember the TCJA phase-down schedule (80% in 2023, 60% in 2024, 40% in 2025, 20% in 2026)? OBBBA killed the phase-down and restored 100% bonus depreciation permanently for qualifying property placed in service after January 19, 2025. This covers:

  • Tangible property with MACRS recovery period of 20 years or less (equipment, vehicles, furniture)
  • Qualified improvement property (interior nonresidential building improvements)
  • NEW: Qualified production property for manufacturing/production (construction starting after Jan 19, 2025, placed in service before 2031)

Section 179 Limits Jumped

  • Maximum expensing: $2.5 million (up from $1.16M), inflation-adjusted to approximately $2.56M for 2026
  • Phase-out threshold: $4 million (up from $2.89M), approximately $4.09M for 2026
  • Both amounts now indexed for inflation permanently

So What Does This Mean for Beancount Users?

Here is where I need the community’s help, because I am running into real structural questions with my clients’ ledgers:

1. QBI-Eligible Income Separation

Can you run a BQL query RIGHT NOW that separates QBI-eligible income from non-eligible? Most of my client ledgers have something like:

Income:Business:Consulting
Income:Business:ProductSales
Income:Rental:Property1

But QBI eligibility depends on entity type, business activity, and income level. A simple Income:Business hierarchy does not capture whether income is from an SSTB (specified service trade or business) or a qualified trade. I am thinking we need metadata:

2026-04-01 * "Client consulting project"
  Income:Business:Consulting   -5000 USD
    qbi_eligible: TRUE
    sstb: TRUE
  Assets:Bank:Checking          5000 USD

Or separate account branches:

Income:Business:QBI:SSTB:Consulting
Income:Business:QBI:NonSST:ProductSales
Income:Business:NonQBI:InvestmentIncome

What approach are you using?

2. Dual-Basis Asset Tracking (Tax vs Book)

With 100% bonus depreciation back, a client buys a $200K piece of equipment. Tax basis: fully expensed in year 1. Book basis: depreciated over 7 years. Your Beancount ledger needs to handle both simultaneously:

; Tax basis - fully expensed year 1
2026-06-15 * "CNC Machine - Tax Basis"
  Assets:Equipment:CNCMachine:TaxBasis     200000 USD
  Expenses:Depreciation:Tax:BonusDepreciation  200000 USD
  Assets:Equipment:CNCMachine:TaxBasis    -200000 USD

; Book basis - 7 year MACRS
2026-06-15 * "CNC Machine - Book Basis"
  Assets:Equipment:CNCMachine:BookBasis    200000 USD
  Liabilities:Equipment:Loan               -200000 USD

Then monthly book depreciation entries for 7 years. This gets messy fast with multiple assets. Has anyone built a Python script that takes asset parameters (cost, placed-in-service date, recovery period, convention) and generates the full Beancount entry schedule?

3. Section 179 vs Bonus Depreciation Decision Modeling

With Section 179 at $2.5M and bonus depreciation at 100%, the choice between them matters for state taxes (some states decouple from federal bonus depreciation but honor Section 179). Can Beancount model both scenarios side-by-side?

4. The Advisory Opportunity

Most small business owners heard “big tax cut” on the news but have zero idea they need to restructure entity elections, adjust payroll splits for S-Corp reasonable compensation, and recalculate retirement contribution strategies to maximize QBI. This is the advisory opportunity of the decade for anyone who can model the scenarios quickly.

If you can show a client: “Here is your tax liability as sole proprietor vs S-Corp vs LLC under OBBBA rules” with real numbers from their Beancount data, that is a $5,000-$10,000 advisory engagement.


Anyone already tackling this? I have tax season extension clients coming in June and I need to have my Beancount workflows ready. Especially interested in:

  • How you separate QBI-eligible vs non-eligible income
  • Whether you maintain parallel tax/book basis ledgers or use metadata
  • Any depreciation schedule generators
  • Entity structure comparison scripts or templates

Tina, excellent breakdown of the OBBBA changes. This is exactly the conversation every CPA firm should be having right now.

I have been restructuring client charts of accounts since January and here is what I landed on for QBI tracking. Metadata is the way to go over separate account branches. Here is why:

Account branches create a rigid structure that breaks when QBI eligibility changes. A consulting firm might be an SSTB at $400K income but phase into the full deduction at $500K under the new expanded ranges. If you baked SSTB status into the account name, you would need to rename accounts as income fluctuates. Metadata is flexible:

2026-01-15 open Income:Business:Consulting
  qbi_eligible: TRUE
  sstb_classification: "health_law_accounting_consulting"
  entity_type: "S-Corp"

Then my BQL query for QBI calculation:

SELECT account, sum(position)
WHERE account ~ "Income:Business"
  AND meta("qbi_eligible") = "TRUE"
  AND year = 2026
GROUP BY account

For the dual-basis problem, I am running two completely separate Beancount files per client:

  • client_book.beancount - GAAP basis for financial reporting
  • client_tax.beancount - Tax basis for return preparation

They share the same bank importers but apply different depreciation treatments. The book file depreciates the CNC machine over 7 years using straight-line. The tax file expenses the full $200K in year one under bonus depreciation. A reconciliation script compares the two files and generates a book-to-tax adjustment schedule.

This approach doubles the file maintenance but eliminates the confusion of trying to track two basis methods in a single ledger. When you are defending numbers to an IRS auditor, you do not want them scrolling through metadata flags—you want clean, single-purpose records.

For the Section 179 vs bonus depreciation question: the state tax decoupling issue is real. I have clients in California (no bonus depreciation, but conforms to Section 179 up to the federal limit), New York (partial conformity), and Illinois (conforms but with addback). My Python script takes the asset parameters and generates THREE sets of entries: federal bonus depreciation, federal Section 179, and state-adjusted. Then I compare total tax liability across scenarios.

One thing I would add to your analysis: the expanded phase-in range for SSTBs is a bigger deal than most people realize. I have a medical practice client who was previously fully phased out of QBI at $494,600. Under OBBBA, they get partial QBI at $500K. That is a $4,000+ tax savings they did not have last year, just from the range expansion. Every SSTB client between $494K-$544K needs a phone call.

Happy to share my book-to-tax reconciliation script if there is interest. It is about 200 lines of Python and handles the common scenarios.

This is the kind of deep technical + tax crossover content this forum needs. Let me add the FIRE angle because OBBBA changes personal tax planning significantly for anyone with side income.

The $400 Minimum QBI Deduction Is a Hidden Gem for Side Hustlers

I run a FIRE blog that generates about $8,000/year in consulting and affiliate income. Previously, the QBI calculation on that amount was almost not worth the complexity—my deduction was around $1,200 (20% of ~$6K QBI after adjustments). Under OBBBA, I am guaranteed at least $400 even if my QBI math comes out lower. That is not life-changing money, but it is the principle: the tax code is now explicitly acknowledging micro-businesses.

For my Beancount setup, I track this with a simple approach:

2026-01-01 custom "qbi-config" "blog_income"
  qbi_eligible: TRUE
  sstb: FALSE
  entity: "Schedule-C"
  
2026-01-01 custom "qbi-config" "w2_salary"
  qbi_eligible: FALSE
  entity: "W-2"

Then I have a Python script that reads these custom directives and filters my income accounts accordingly. At year-end it calculates: total QBI, the 20% deduction, the W-2 wage limitation (not applicable for me since I am below threshold), and compares against the new $400 minimum.

Bonus Depreciation for Personal FIRE Assets

Here is something most FIRE folks are missing: if you have a legitimate home office (dedicated space, regular and exclusive use), equipment purchased for your side business qualifies for 100% bonus depreciation. That $2,400 laptop you bought for the blog? Fully deductible in year one under bonus depreciation, no need to depreciate over 5 years.

My Beancount entry:

2026-03-01 * "MacBook Pro for blog"
  Assets:Equipment:Laptop         2400 USD
  Assets:Bank:Checking           -2400 USD
  
2026-12-31 * "Bonus depreciation - laptop"
  Expenses:Depreciation:BonusDep  2400 USD
  Assets:Equipment:Laptop        -2400 USD

Clean and simple. The asset appears, gets fully expensed at year-end, net book value goes to zero. Compare this to the old approach where I would have needed 5 years of partial depreciation entries cluttering up my ledger.

The Entity Structure Modeling Is Where Beancount Shines

@tax_tina your point about entity comparison being a $5K-$10K advisory engagement is spot on. I actually built a rough version of this for my own situation—comparing Schedule C vs S-Corp election. The math:

  • Schedule C: $80K blog income, 15.3% SE tax on all of it ($12,240), then QBI deduction on the remainder
  • S-Corp: Pay myself $50K reasonable salary (7.65% employer + 7.65% employee = $7,650), take $30K as distribution (0% SE tax), QBI calculated on the $30K distribution portion

Net savings going S-Corp: roughly $3,100/year. But S-Corp has $1,500/year in additional costs (payroll service, separate return, franchise tax). Real savings: $1,600/year.

I modeled this in Beancount by creating two parallel ledger files with different account structures and running BQL queries against each. Took about 4 hours to build, and now I update it annually in 30 minutes.

Would love to see @accountant_alice’s book-to-tax reconciliation script. That dual-file approach makes a lot of sense for clients, though for personal FIRE tracking I think metadata on a single file keeps things manageable.

I am going to offer the ground-level bookkeeper perspective here because I think we are overcomplicating some of this.

I manage books for 22 small businesses in Austin. Most of them are service businesses—plumbers, electricians, landscapers, marketing agencies—with revenue between $150K and $800K. Here is my reality check on OBBBA and Beancount:

Most of My Clients Do Not Need Complex QBI Tracking

For pass-through businesses below the income threshold ($191,950 single / $394,600 MFJ for 2026), the QBI deduction is straightforward: 20% of qualified business income, period. No SSTB limitation, no W-2 wage test, no UBIA calculation. For 18 of my 22 clients, this is the situation.

My Beancount approach for these clients is dead simple:

; All business income is QBI-eligible when below threshold
Income:Business:Services
Income:Business:ProductSales
; Only investment income needs to be excluded
Income:Investment:Interest
Income:Investment:Dividends

I do not need metadata flags or separate account branches. At year-end, I run:

SELECT sum(position) WHERE account ~ "Income:Business" AND year = 2026

That number times 0.20 is the QBI deduction. Done.

The complexity @tax_tina and @accountant_alice are describing is real but it applies to high-income clients and SSTBs near the threshold. If you are a bookkeeper serving typical small businesses, do not over-engineer your chart of accounts for edge cases that do not apply to your client base.

Where I AM Scrambling: The Equipment Rush

100% bonus depreciation being permanent is causing a purchasing frenzy. Three of my clients are buying major equipment this year specifically because of OBBBA:

  • Landscaper: $85K skid steer loader
  • Electrician: $45K bucket truck
  • Marketing agency: $12K in computer equipment

They all called me in March asking “Can I write this off?” Yes, you can. The whole thing. Year one.

But here is my Beancount problem: I do not have a good depreciation tracking system. Right now my entries look like this for the landscaper:

2026-03-15 * "Bobcat T76 Skid Steer"
  Assets:Equipment:SkidSteer      85000 USD
  Liabilities:Loan:EquipmentLoan -85000 USD

; Bonus depreciation at year end
2026-12-31 * "Sec 168(k) bonus depreciation - Skid Steer"
  Expenses:Depreciation:Equipment  85000 USD
  Assets:Equipment:SkidSteer      -85000 USD

This works for tax purposes but it means my balance sheet shows zero equipment value the moment I book the depreciation. The client sees a balance sheet with $0 in equipment and gets confused: “Where did my $85K truck go?” Book value versus tax value is a real client communication problem.

@accountant_alice your two-file approach (book vs tax) is the right answer but I am being honest—I do not have the bandwidth to maintain two ledger files for 22 clients. Is there a middle ground? Maybe a single file with metadata that lets me run queries for “show me book basis balances” vs “show me tax basis balances”?

Something like:

2026-12-31 * "Bonus depreciation - Skid Steer" #tax-only
  Expenses:Depreciation:Tax:Equipment  85000 USD
  Assets:Equipment:SkidSteer:TaxAdj   -85000 USD

Then my “book balance sheet” query excludes #tax-only tagged transactions, and my “tax schedule” query includes everything.

The Advisory Opportunity Is Real But Scary

@tax_tina you mentioned $5K-$10K entity structure advisory engagements. I have clients who would benefit from this analysis but I am not a CPA. The ethical line for bookkeepers is clear: I can organize the data and run the numbers, but I cannot advise on entity elections or tax strategy.

What I CAN do is prepare the Beancount data so cleanly that when the CPA runs their analysis, they have everything they need in 30 minutes instead of 3 hours. That is the real value of having a Beancount-literate bookkeeper—we reduce the advisory engagement cost for the CPA, which means more clients can afford the analysis.

Is anyone interested in a bookkeeper-CPA handoff template? Something like: “Here is the standardized Beancount export format that CPAs need for OBBBA entity structure analysis.” I would build it if there is demand.

Great responses, all three of you are hitting different angles that matter.

@bookkeeper_bob your reality check is important and I should have been clearer in my original post. You are absolutely right that most small businesses below threshold do not need complex QBI tracking. The simple approach you described works perfectly for 80% of cases. The metadata and dual-basis complexity I was describing is specifically for:

  1. Clients whose income fluctuates near the threshold year to year
  2. SSTBs (doctors, lawyers, accountants, consultants) in the phase-in range
  3. Businesses with significant depreciable assets where book/tax divergence confuses stakeholders

Your #tax-only tag approach is actually clever and I had not considered it. Let me think through the mechanics:

; Book depreciation (included in all queries)
2026-12-31 * "Book depreciation - Skid Steer (12 months)"
  Expenses:Depreciation:Book:Equipment  12143 USD
  Assets:Equipment:SkidSteer:AccumDepr -12143 USD

; Tax adjustment (excluded from book queries)
2026-12-31 * "Tax bonus depr adjustment - Skid Steer" #tax-only
  Expenses:Depreciation:TaxAdj:Equipment  72857 USD
  Assets:Equipment:SkidSteer:TaxAdj      -72857 USD

Book balance sheet query: WHERE NOT ANY_META("tags") = "tax-only" — shows $72,857 remaining equipment value.
Tax schedule query: no filter — shows full $85,000 expensed.

This is a workable single-file approach. Not as clean as separate files but realistic for a bookkeeper managing 22 clients. I might adopt this for my smaller clients.

@finance_fred your S-Corp vs Schedule C comparison is a good example of what I mean by the advisory opportunity. One thing to add: under OBBBA, the QBI deduction for S-Corp owners is calculated on the distribution portion only (not on reasonable salary), but the W-2 wages paid to yourself count toward the W-2 wage limitation that higher-income taxpayers face. So for someone near the threshold, paying yourself MORE salary (counterintuitively) can increase the QBI deduction ceiling. The math gets circular—which is exactly why Beancount modeling helps.

For the state tax issue I want to flag something specific: as of right now, states are still issuing guidance on OBBBA conformity. California has already announced they will NOT conform to the restored 100% bonus depreciation (they never did). Texas has no state income tax so it is moot for @bookkeeper_bob’s clients. But if you have clients in New York, New Jersey, or Illinois, you need to watch for state guidance before finalizing depreciation strategies.

My action items coming out of this thread:

  1. Build a tiered QBI tracking approach: Simple (below threshold, no metadata needed) vs Complex (near threshold, metadata flags) vs Full (dual-file for large clients)
  2. Adopt Bob’s #tax-only tag pattern for mid-tier clients
  3. Create a depreciation schedule generator that outputs both book and tax entries from asset parameters
  4. Draft the bookkeeper-CPA handoff template Bob mentioned—I would use this from the CPA side

@bookkeeper_bob yes, there is absolutely demand for that handoff template. If you build the bookkeeper side (standardized Beancount data export), I will build the CPA side (what we need to see for entity structure analysis). We can publish both as a community resource.

Anyone else dealing with OBBBA chart of accounts questions? The extension deadline is October 15 and I suspect a lot of Beancount users are going to hit these issues in the next few months.