Managing real estate investments involves tracking numerous financial activities, including property purchases, rental income, and eventual sales. This guide illustrates how to leverage Beancount, a plain-text double-entry accounting system, to accurately model real estate transactions. By structuring appropriate accounts for assets, liabilities, income, and expenses, readers will learn to document key financial events such as down payments, mortgage servicing, rent collection, and asset appreciation. Whether you’re an experienced investor or just beginning your property journey, this article offers a clear framework for maintaining transparent and comprehensive financial records.
The Beancount example in this post can be found in: https://github.com/flyaway1217/beancount_example/blob/main/single_examples/real_estate.bean
Assumption
In this post, we will buy a house located at 123 ABC Street, XYZ City, WA, 12345 for an investing purpose. After owning it, we will hire a property management company to manage it for us, outsourcing the work like advertising, tenant screening, rent collection etc. By avoiding these tedious work, we can move our attention to next investment. A common management fee is about 10% of the rent.
We further assume that price of this property is $1.4$M USD. We will finance the property acquisition with a 20% cash down payment and secure the remaining 70% through a mortgage loan.
Transaction Process
Purchasing a home in the United States involves several key steps, like getting preapproved for a mortgage, searching for homes, making an offer, inspection, finalizing the mortgage approval and closing the deal. In this post, we will only focus on the steps related to a change in our ledger:
- Down payment transfer
- Closing the deal (transfer the remaining funds)
- Monthly mortgage payment
- Rent collection
- Selling the property
Setting Up Accounts
The first step of logging a real estate is to define a list of accounts you will need in the process of buying/managing/selling a property:
Commodity
|
|
In the above example, we define a commodity to represent the property. Since
the property actually has a fluctuating value (as well as any other
investment), we do not want to directly record it using the currency. Instead,
we model the property in its own commodity and use the price
directive later
to reflect its fluctuating value.
Asset Accounts
|
|
Next, we define five Assets accounts. One of them is used to hold the property itself, three are the escrow accounts of the lender, title company and management company and one account for holding the related cash. The lender escrow account is used to pay for the property taxes and insurance (you can choose to handle them by yourself). The title company facilitates the cash transactions to protect both buyer and seller. And the management escrow account is used to pay for small repairs if necessary when renting. We will need these escrow accounts during our transactions.
Liabilities & Income
|
|
Next, we establish a Liabilities account to record the outstanding mortgage principal. In Beancount, Liabilities accounts typically carry negative balances, reflecting amounts owed. Since this property is intended for investment purposes, we establish an Income account to record the rental revenue it generates and another Income account to track the profit and loss of the property (capital gain).
Expenses
|
|
Finally, we establish a comprehensive list of Expenses accounts. Given that this property is intended for rental purposes, we align our expense categories with those delineated in the IRS Schedule E (Form 1040) to ensure consistency and compliance. This arrangement makes it convenient for reporting tax in the future.
The last two accounts will be used when we sell the property.
Recording the Purchase
Earnest Money & Down Payment
The first financial step of buying a house is to send the earnest money to a title company:
|
|
Then, we will conduct an inspection (as well as other steps) to ensure the property is in its good shape. Once everything is good, we transfer the remaining of down payment.
|
|
Settlement
After the settlement of a real estate transaction, you will have a buyer’s settlement statement, outlining all the transaction details. By looking at this settlement, we can log the flow of money. The following is one example from a real transaction:
|
|
Don’t be intimidated by the above example, it is still one simple transaction, but with many postings. All the postings are copied from the settlement statement. There are some postings can be combined, but in order to be consistent with settlement statement, I leave each item in its own posting.
Credits
Sometimes, the seller provides some credits as an incentive to make the purchase more affordable for the buyer and potentially expedites the sale. For example, in the above example, the seller provided a credit of worth 50,000 USD (line 36). These credits are used to offset the closing cost. That’s why we deduct this 50,000 USD from the Expenses accounts of the property.
Holding the Property
Tracking Mortgage Payments
Starting 2024-01-01, we have to pay the mortgage each month. For each payment, it usually consists of three compositions: principal, interests and potentially an escrow account. For these three compositions, they belong to different accounts:
- Principal: it is a Liabilities account. Reducing the liabilities is actually increasing our asset values.
- Interests: it is an Expenses account. This is the real expenses that we have to pay for the mortgage.
- Escrow: it is an Asset account because these are the set-aside money for the property tax and insurance. Technically, these are still our money (our asset), we just put them aside for a special purpose. This is optional. But in order to free my mind, I let the lender handle the tax and insurance for me.
The first two payments are as following:
|
|
Note that the exact amount of principal, interests changes month by month due to amortization. To log the accurate loan payment, you will need to check your loan’s monthly statement.
Property Appreciation
As any other investment, the value or market value of the real estate property
fluctuates. To properly reflects it prices, we use the price
directive of
Beancount:
|
|
This directive states the on the date of 2025-04-03, the price of this Xyz123 property is $1,476,500$ USD. Usually we can get the estimated price from websites like Zillow or Redfin.
Renting
As previously indicated, this property is designated for rental purposes. Upon securing a suitable property management company, we will lease the property and commence rent collection:
2024-02-01 * "Management" "Rent Feb 2024"
Income:Investments:RealEstate:Xyz123:Rental -10,000.00 USD
Assets:Investment:RealEstate:Escrow:Xyz123:Management 10,000.00 USD
2024-02-01 * "Management Fee Feb 2024"
Assets:Investment:RealEstate:Escrow:Xyz123:Management -1000.00 USD
Expenses:RealEstate:Xyz123:OperatingExpenses:LocalManagementFee 1000.00 USD
2024-02-21 * "Xyz123: Owner Distribution Feb 2024"
Assets:Investment:RealEstate:Escrow:Xyz123:Management -9,000.00 USD
Assets:Investment:RealEstate:OperatingAccounts:JointKeyBank:Xyz123 9,000.00 USD
The above example contains three transactions:
- The first one is the rent collection. Our rent is $10,000$ dollars per month. This is our income, so we have to use the one income account to hold all the income money. The rent usually directly goes into the escrow account of the management company.
- The second one is the management fee. We assume the management fee is 10% of the rent. So, each month we have to pay $1,000$ towards the management company. This is an expense transaction.
- The third one is the owner distribution. After deducting the management fee, the net rent will transfer into our own bank account.
Other Holding Expenses
When owning real estates, it’s essential to account for additional costs such as property taxes and insurance premiums. To manage these expenses efficiently, we utilize an escrow account set up by our lender. Each month, a portion of our mortgage payment is allocated to this escrow account. The lender then uses the accumulated funds to pay our property taxes and insurance premiums when they become due.
The following are the examples paying the property tax and insurance:
|
|
Recording the Sale
After holding the property for a period, we have decided to sell it. Since this sale is planned for the future, the exact miscellaneous fees remain uncertain. Therefore, the following transaction is a hypothetical scenario.
Suppose we sell the property on 2025-05-01 with the price of $1.6$M dollars. Some reference data is as following:
Item | Amount |
---|---|
Outstanding mortgage balance | 1,094,012.23 |
Agent Commission(5%) | 75,000 |
Other Closing fee | 10,000 |
So, the hypothetical transaction should look like this:
|
|
When selling the property at the price of $1.6$M and paying necessary expenses,
we end up with the $420,987.77$ dollars in our bank account. We use
Income:Investments:RealEstate:Xyz123:PnL
to track our capital gain on this
transaction. Otherwise, the transaction will not be balanced.
Final Thoughts
Managing real estate is already a complex business. The last thing you need is a messy spreadsheet or vague accounting. By leveraging Beancount’s plain-text precision and double-entry power, you bring order, clarity, and long-term insight into every property you manage.
Whether you’re tracking one rental or scaling a portfolio, mastering this workflow helps you make smarter decisions, streamline tax season, and ultimately, maximize your investment returns.
So open your text editor, fire up Beancount, and start recording your real estate empire—one balanced transaction at a time.