Prejsť na hlavný obsah

The Complete Guide to Real Estate Accounting with Beancount.io

· 14 minút čítania
Mike Thrift
Mike Thrift
Marketing Manager

Are you juggling spreadsheets trying to track mortgage payments, depreciation schedules, and rental income across multiple properties? You're not alone. Real estate investing creates some of the most complex accounting scenarios in personal finance — and the consequences of getting it wrong can cost thousands in overpaid taxes or trigger IRS scrutiny.

Here's the harsh reality: every rental property generates dozens of monthly transactions that must be categorized correctly. Mortgage payments split between interest and principal. Escrow accounts collecting for taxes and insurance. Depreciation entries that accumulate over 27.5 years. Capital improvements that add to your cost basis. And when you sell? You face the dreaded depreciation recapture calculation that trips up even experienced investors.

The problem? Traditional accounting software wasn't built for the unique complexity of real estate. QuickBooks can handle rent checks, but try tracking a land/building cost allocation, computing mid-month convention depreciation, or modeling the split between Section 1250 recapture and long-term capital gains at sale. You'll quickly find yourself in spreadsheet hell.

The solution? Beancount.io's plain-text accounting system built on the powerful open-source Beancount language. Important note: Beancount is an open-source double-entry accounting language created by Martin Blais, while Beancount.io is a commercial hosting service that provides a user-friendly interface and cloud infrastructure for Beancount. This guide covers both the underlying Beancount principles and how to use them effectively through the Beancount.io platform.

Complete Guide to Real Estate Accounting

The Real Estate Accounting Nightmare (And Why It's Getting Worse)

Your Property Records Are Scattered Everywhere

Let's be honest about your setup. You probably have:

  • Bank statements with mortgage payments that don't break out principal vs. interest
  • Escrow statements from the lender showing tax and insurance disbursements
  • A depreciation schedule in a spreadsheet somewhere (if you're lucky)
  • Receipts for repairs mixed in with capital improvement invoices
  • Property management statements showing gross rent minus fees
  • Closing documents from purchase and (eventually) sale

Each source speaks a different language. Your lender's amortization schedule doesn't match your bank statement format. The county assessor's land/building split lives in a PDF you downloaded three years ago. And your CPA asks for everything organized by Schedule E line items.

Transaction Types That Challenge Traditional Accounting

Real estate investing involves transaction types that traditional accounting software struggles with:

  • Land vs. building allocation where only the building portion is depreciable
  • Mid-month convention depreciation that requires half-month calculations in the first and last months
  • Escrow impound accounts that collect monthly but disburse semi-annually or annually
  • Security deposits that are liabilities, not income, until forfeited
  • Capital improvements vs. repairs — one adds to basis, the other is a current deduction
  • Depreciation recapture at sale taxed at a different rate than long-term capital gains

The Tax Compliance Minefield

Here's what keeps real estate investors awake at night:

  • Schedule E requires precise categorization of every income and expense item
  • Depreciation must be tracked even if you don't claim it (the IRS will recapture it anyway)
  • The land/building split must be defensible — the IRS scrutinizes aggressive building allocations
  • Capital improvements must be distinguished from repairs — a new roof adds to basis, a patched roof is an expense
  • At sale, depreciation recapture (Section 1250) is taxed at up to 25%, separate from the LTCG rate on remaining gain
  • 1031 exchanges have strict timelines and documentation requirements

Traditional accounting software requires significant customization for this complexity. Most solutions handle rent and expenses fine but fail at depreciation tracking, cost basis adjustments, and sale gain decomposition.

Enter Beancount.io: The Real Estate Accounting Solution You've Been Waiting For

What if I told you there's an accounting system designed for exactly this complexity? Beancount.io isn't just another accounting tool — it's a plain-text accounting revolution that handles real estate's multi-year lifecycle like it was born for it.

Why Beancount.io Dominates Real Estate Accounting

Complete Transparency: Every calculation is visible. See exactly how your depreciation accumulates, how your cost basis is adjusted, and how your gain is split at sale. No black boxes.

Unlimited Flexibility: Model any property structure. Track land and building separately, handle escrow impounds, manage multiple properties with distinct depreciation schedules.

Precise Cost Basis: Lot-based tracking with exact purchase dates. When you sell, the adjusted basis calculation — original cost plus improvements minus depreciation — is already computed.

Future-Proof: Plain-text format means your 27.5-year depreciation history is yours forever. No vendor lock-in, no "sorry, we're shutting down" after you've been tracking a property for 15 years.

Property as Commodity: Model your property as a Beancount commodity with price directives. See unrealized appreciation in Fava's Holdings view alongside your other investments.

Setting Up Your Real Estate Command Center

Building Your Account Architecture

Think of this as designing the blueprint for your real estate empire. We're creating a structure that handles everything from purchase through years of rental operations to eventual sale:

Note: The examples use 1970-01-01 as a placeholder opening date. For actual use, replace with your real account opening dates.

; ============================================================
; Property Asset Accounts
; ============================================================

; The property commodity — 1 unit purchased at cost basis
1970-01-01 open Assets:RealEstate:Property
; Contra-asset: accumulated depreciation reduces building value
; Land ($80K, 20%) is non-depreciable; Building ($320K, 80%) is depreciated
1970-01-01 open Assets:RealEstate:AccumDepreciation
; Capital improvements added to basis (water heater, appliances, etc.)
1970-01-01 open Assets:RealEstate:CapitalImprovements

; ============================================================
; Bank Accounts
; ============================================================

1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:Bank:Savings
; Escrow impound: monthly contributions for property tax & insurance
1970-01-01 open Assets:Bank:EscrowImpound

; ============================================================
; Liability Accounts
; ============================================================

; 30-year fixed mortgage at 7.0% APR
1970-01-01 open Liabilities:Mortgage
; Tenant security deposit — not income until forfeited
1970-01-01 open Liabilities:SecurityDeposit

; ============================================================
; Income Accounts
; ============================================================

1970-01-01 open Income:RealEstate:Rent
1970-01-01 open Income:RealEstate:CapitalGains:LongTerm
1970-01-01 open Income:RealEstate:DepreciationRecapture

; ============================================================
; Expense Accounts
; ============================================================

1970-01-01 open Expenses:RealEstate:MortgageInterest
1970-01-01 open Expenses:RealEstate:LoanOrigination
1970-01-01 open Expenses:RealEstate:PropertyTax
1970-01-01 open Expenses:RealEstate:Insurance
1970-01-01 open Expenses:RealEstate:PropertyManagement
1970-01-01 open Expenses:RealEstate:Repairs
1970-01-01 open Expenses:RealEstate:Maintenance
1970-01-01 open Expenses:RealEstate:Depreciation
1970-01-01 open Expenses:RealEstate:ClosingCosts
1970-01-01 open Expenses:RealEstate:SellingCosts

Property Commodity Definition

Model your property as a Beancount commodity to enable portfolio-style tracking with price directives:

1970-01-01 commodity PROP123MAIN
name: "123 Main St, Anytown, CA 90210"
asset-class: "real-estate"

1970-01-01 commodity USD

This lets Fava's Holdings view show your property's current market value alongside your other assets — just like tracking stocks or crypto.

Mastering Real Estate Transactions: From Purchase to Sale

Ready to see Beancount.io in action? Let's walk through the complete lifecycle of a rental property investment.

1. Property Acquisition (The Big Day)

Buying a property involves multiple transactions on closing day. Here's how to record the purchase of a $400,000 property with 20% down:

; Down payment — 20% of $400,000
2024-03-15 * "Escrow" "Down payment — 20% of $400,000"
Assets:RealEstate:Property 1 PROP123MAIN {400,000.00 USD, 2024-03-15}
Assets:Bank:Checking -80,000.00 USD
Liabilities:Mortgage -320,000.00 USD

; Closing costs — loan origination
2024-03-15 * "Lender" "Loan origination fee — 1% of $320,000"
Expenses:RealEstate:LoanOrigination 3,200.00 USD
Assets:Bank:Checking -3,200.00 USD

; Title insurance, escrow fees, recording
2024-03-15 * "Title company" "Title insurance, escrow fees, recording"
Expenses:RealEstate:ClosingCosts 2,800.00 USD
Assets:Bank:Checking -2,800.00 USD

Key concept: Land/Building Split. The IRS requires separating non-depreciable land from the depreciable building. Your county assessor's records typically provide the allocation — in this example, 20% land ($80K) and 80% building ($320K). Only the building portion is depreciated.

2. Monthly Mortgage Payments (The P&I Split)

Every mortgage payment splits into interest expense (tax-deductible for rental properties) and principal reduction. Here's how to track it:

; Month 1: Interest = $320,000 × 7.0% / 12 = $1,866.67
2024-04-01 * "Bank" "Mortgage payment — April 2024"
Expenses:RealEstate:MortgageInterest 1,866.67 USD
Liabilities:Mortgage 262.39 USD
Assets:Bank:EscrowImpound 566.67 USD
Assets:Bank:Checking -2,695.73 USD

Each payment includes three components:

  • Interest expense — deductible on Schedule E
  • Principal reduction — reduces your mortgage liability (not deductible)
  • Escrow contribution — builds up for property tax and insurance disbursements

3. Escrow Disbursements (Tax and Insurance)

Your escrow account collects monthly but pays out periodically:

; Semi-annual property tax disbursement
2024-09-15 * "County tax collector" "Property tax — first installment"
Expenses:RealEstate:PropertyTax 2,500.00 USD
Assets:Bank:EscrowImpound -2,500.00 USD

; Annual insurance renewal
2025-03-15 * "Insurance company" "Homeowner insurance renewal — year 2"
Expenses:RealEstate:Insurance 1,850.00 USD
Assets:Bank:EscrowImpound -1,850.00 USD

4. Rental Income with Property Management

Track gross rent and property management fees separately for accurate Schedule E reporting:

; Net rent = $2,400 - $192 PM fee (8%) = $2,208
2024-04-01 * "Tenant" "April 2024 rent"
Assets:Bank:Checking 2,208.00 USD
Expenses:RealEstate:PropertyManagement 192.00 USD
Income:RealEstate:Rent -2,400.00 USD

5. Security Deposits (A Liability, Not Income)

Security deposits are a common trap — they're not income when received. They're a liability you owe back to the tenant:

; Receive deposit — creates a liability
2024-03-20 * "Tenant" "Security deposit — 1 month rent"
Assets:Bank:Checking 2,400.00 USD
Liabilities:SecurityDeposit -2,400.00 USD

; Return deposit at lease end — eliminates the liability
2025-11-01 * "Tenant" "Return security deposit — lease ended"
Liabilities:SecurityDeposit 2,400.00 USD
Assets:Bank:Checking -2,400.00 USD

6. Depreciation (27.5-Year Straight-Line)

This is where Beancount truly shines. Residential rental property uses a 27.5-year straight-line depreciation with the mid-month convention (half-month in the month placed in service and the month disposed):

; Building cost: $320,000
; Monthly depreciation: $320,000 / 27.5 / 12 = $969.70
; Half-month (first/last month): $484.85

; March 2024 — half-month (placed in service 3/15)
2024-03-31 * "Depreciation" "March 2024 — half-month (placed in service)"
Expenses:RealEstate:Depreciation 484.85 USD
Assets:RealEstate:AccumDepreciation -484.85 USD

; Full month
2024-04-30 * "Depreciation" "April 2024"
Expenses:RealEstate:Depreciation 969.70 USD
Assets:RealEstate:AccumDepreciation -969.70 USD

The contra-asset pattern (crediting AccumDepreciation) keeps the original property cost intact while showing the reduced book value on your balance sheet. This is critical for the sale calculation later.

7. Capital Improvements vs. Repairs

One of the most important distinctions in real estate accounting:

; REPAIR — current expense, fully deductible this year
2024-05-18 * "HVAC Pro" "A/C repair — replaced capacitor"
Expenses:RealEstate:Repairs 285.00 USD
Assets:Bank:Checking -285.00 USD

; CAPITAL IMPROVEMENT — adds to cost basis, NOT a current deduction
2024-08-12 * "Home Depot" "Replace water heater — 50 gal gas"
Assets:RealEstate:CapitalImprovements 1,800.00 USD
Assets:Bank:Checking -1,800.00 USD

The rule of thumb: If it extends the useful life or adds value, it's a capital improvement (adds to basis). If it maintains the current condition, it's a repair (current deduction).

8. Property Sale with Depreciation Recapture

This is the most complex transaction in real estate accounting, and it's where most software fails. When you sell, the gain splits into two tax categories:

; === Gain Calculation ===
; Purchase price: $400,000.00
; + Capital improvements: + 6,000.00
; - Accumulated depreciation: - 19,394.00
; = Adjusted basis: $386,606.00
;
; Sale price: $435,000.00
; - Selling costs (6%): - 26,100.00
; = Net proceeds: $408,900.00
;
; Total gain: $ 22,294.00
; Depreciation recapture: $ 19,394.00 (taxed at max 25%)
; Long-term capital gain: $ 2,900.00 (taxed at LTCG rates)

2025-11-15 * "Sale" "Dispose property — recognize gain"
Assets:RealEstate:Property -1 PROP123MAIN {400,000.00 USD, 2024-03-15}
Assets:RealEstate:CapitalImprovements -6,000.00 USD
Assets:RealEstate:AccumDepreciation 19,394.00 USD
Assets:Bank:Checking 408,900.00 USD
Income:RealEstate:DepreciationRecapture -19,394.00 USD
Income:RealEstate:CapitalGains:LongTerm -2,900.00 USD

Section 1250 depreciation recapture is taxed at a maximum rate of 25% — higher than the typical 15% LTCG rate. Beancount makes this split crystal clear.

Tax Reporting and Compliance

Schedule E Reporting

Beancount's query system makes Schedule E preparation straightforward:

; Total rental income
SELECT sum(position) WHERE account = "Income:RealEstate:Rent"

; Deductible expenses by category
SELECT account, sum(position)
WHERE account ~ "Expenses:RealEstate"
GROUP BY account

Year-End Balance Assertions

Use balance assertions to verify your ledger's integrity before tax filing:

; Property still held at year-end
2025-01-01 balance Assets:RealEstate:Property 1 PROP123MAIN

; Accumulated depreciation after 9.5 months
2025-01-01 balance Assets:RealEstate:AccumDepreciation -9,212.15 USD

; Security deposit still held
2025-01-01 balance Liabilities:SecurityDeposit -2,400.00 USD

If any assertion fails, bean-check will report an error — catching data-entry mistakes before you file.

Property Valuation Tracking

Price directives let Fava show your property's market value over time:

2024-03-15 price PROP123MAIN  400,000.00 USD
2024-06-30 price PROP123MAIN 405,000.00 USD
2024-09-30 price PROP123MAIN 412,000.00 USD
2024-12-31 price PROP123MAIN 418,000.00 USD
2025-03-31 price PROP123MAIN 425,000.00 USD

Best Practices for Real Estate Accounting

1. Separate Land and Building from Day One

Document the county assessor's allocation in your ledger comments. The IRS may challenge aggressive building allocations, so keep the source documentation.

2. Track Depreciation Monthly

Even though depreciation is reported annually on your tax return, recording it monthly keeps your balance sheet accurate and makes year-end reporting effortless.

3. Distinguish Repairs from Improvements

When in doubt, consult IRS Publication 527. A new roof is a capital improvement. Fixing a few shingles is a repair. The tax impact difference can be thousands of dollars.

4. Use Balance Assertions Religiously

Assert balances at least quarterly. Catching a $50 data entry error in April is much easier than finding it in March of the following year during tax prep.

5. Keep Security Deposits as Liabilities

Never record a security deposit as income. It becomes income only if you retain it for damages — and then only the retained portion.

6. Model Properties as Commodities

Using the commodity approach (1 PROP123MAIN at cost) enables Fava's Holdings view to show your real estate alongside other investments with current market valuations.

7. Document Everything in Comments

Beancount's comment syntax is your friend. Record the mortgage terms, the assessor's land/building split, the depreciation calculation methodology, and the rationale for capital improvement vs. repair decisions.

Advanced Scenarios

Multiple Properties

Scale your account structure with property-specific sub-accounts:

1970-01-01 open Assets:RealEstate:123Main:Property
1970-01-01 open Assets:RealEstate:123Main:AccumDepreciation
1970-01-01 open Assets:RealEstate:456Oak:Property
1970-01-01 open Assets:RealEstate:456Oak:AccumDepreciation

Refinancing

When you refinance, the old mortgage is paid off and a new one is created:

2025-06-01 * "Refinance" "Payoff old mortgage, new 30-year at 5.5%"
Liabilities:Mortgage:OldLoan 314,744.09 USD
Liabilities:Mortgage:NewLoan -330,000.00 USD
Assets:Bank:Checking 12,255.91 USD ; Cash-out amount
Expenses:RealEstate:ClosingCosts 3,000.00 USD

1031 Exchange Concepts

A 1031 exchange defers capital gains tax by reinvesting proceeds into a like-kind property. While the full implementation is complex, Beancount can track the deferred gain as a memo or metadata entry for your CPA.

Important Disclaimers

Tax and Legal Notice: This guide provides general information about real estate accounting using Beancount and does not constitute professional tax, legal, or financial advice. Tax treatment of real estate transactions varies by jurisdiction, property type, and individual circumstances. Depreciation rules, land/building allocation methods, and the distinction between repairs and capital improvements involve significant judgment calls. For specific guidance on Schedule E reporting, depreciation recapture calculations, 1031 exchanges, and passive activity loss limitations, always consult with a qualified tax professional or CPA familiar with real estate taxation in your jurisdiction.

Software Clarification: Examples in this guide use standard Beancount syntax. While Beancount.io provides a user-friendly interface for Beancount, the underlying accounting principles apply to any Beancount implementation.

Conclusion

Real estate accounting doesn't have to be overwhelming. With Beancount's powerful plain-text accounting system, accessible through Beancount.io's platform, you can:

  • Track the Full Lifecycle: From purchase through rental operations to sale with depreciation recapture
  • Ensure Tax Compliance: Proper Schedule E categorization, depreciation tracking, and gain decomposition
  • Maintain Complete Transparency: Every calculation is visible and auditable
  • Scale with Your Portfolio: Handle one property or a portfolio of dozens
  • Future-Proof Your Records: Plain-text format ensures your 27.5-year depreciation history is always accessible

Whether you're a first-time landlord with a single rental or a seasoned investor managing a portfolio, Beancount provides the precision and flexibility needed to master real estate accounting. Start with the account structure above and build from there as your portfolio grows.

The examples in this guide are based on a complete working ledger that demonstrates every concept in practice. Explore it below to see how all the pieces fit together.

Ready to take control of your real estate finances? Sign up for Beancount.io and experience the power of transparent, scriptable real estate accounting built on the robust Beancount foundation.

Explore a live real estate example ledger: