GnuCash for Personal Finance: Transactions and Taxes

26 Jul, 2018 · 8 min read · #gnucash #personal-finance #accounting #mutual-fund

This is second in the series of posts describing how I use GnuCash to manage my finances. In the previous post I had discussed how I organize my accounts in GnuCash. In this post I’ll describe how I record transactions and use GnuCash to help with computation of taxes and filing of tax returns.

DISCLAIMER: This is for informational purposes only and cannot be considered as legal advice. I cannot be held liable for the outcome of any action taken as a result of reading the information contained here. Please contact a chartered accountant to audit your tax payments.

Recording Transactions

Since GnuCash is a double-entry bookkeeping software, every transaction must have an entry in at least 2 accounts. If a transaction has entries in more than 2 accounts, it is called a split transaction. Let us look at a few investment instruments and how transactions related to them can be recorded.

Note: I have set the date format to ISO in my GnuCash preferences.

Fixed Deposit

Let us consider a fixed deposit account opened for holding a portion of emergency fund with the below assumptions.

To record the transactions for the deposit described above, double-click the Portfolios:Emergency Fund:Fixed Deposit account. This will open the ledger view, where you can enter the transactions as shown below.

Date Description Transfer Deposit Withdrawal Balance
2017-07-01 Deposit Principal:Emergency Fund 10,000.00 10,000.00
2018-06-30 Interest Income:Deposit Interest 700.00 10,700.00
2018-06-30 Maturity Portfolios:Emergency Fund:Savings Bank Account 10,700.00 0.00

The initial deposit comes from Principal:Emergency Fund. This account is of type Equity and as described in the previous post, represents the capital invested. The interest comes from Income:Deposit Interest, which is an Income account representing the returns earned. Finally the total amount is sent to the Savings Bank Account.

Now we need to give the government its cut of the returns. Let us assume that we need to pay tax at the rate of 30% of the interest and further a cess of 4% on the tax, i.e. ₹218.40. To account for this, open the Portfolios:Emergency Fund:Savings Bank Account account and enter the transaction shown in the second row below.

Date Description Transfer Deposit Withdrawal Balance
2018-06-30 Maturity Portfolios:Emergency Fund:Fixed Deposit 10,700.00 10,700.00
2018-06-30 Tax on Interest Expenses:Tax:Deposit Interest 218.40 10,481.60

The tax is sent to Expenses:Tax:Deposit Interest, which is an Expense account representing costs incurred during the course of investment. By accounting for both income and expense under Deposit Interest we can quickly verify that the right amount of taxes have been paid at any point in time. TDS by the bank and tax paid on accrued interest from fixed deposits can also be recorded in a similar fashion.

Mutual Fund

Now let us consider investments made in Franklin Savings Fund towards retirement corpus with the below assumptions.

These can be recorded as shown below in the Portfolios:Retirement:Debt Funds:Franklin Savings account. You only need to enter the Shares and Price columns. Buy and Sell column will be calculated by GnuCash. Note that the value of Shares column must be negative for redemptions.

Date Description Transfer Shares Price Buy Sell Balance
2015-07-01 Purchase Principal:Retirement 100 100.0000 10,000.00 100
2017-07-01 Purchase Principal:Retirement 100 150.0000 15,000.00 200
2018-07-02 Redemption Portfolios:Retirement:Cash -200 200.0000 40,000.00 0

I prefer holding the redemption proceeds in an account named Cash under the corresponding goal as the money is still earmarked for it.

Calculating Capital Gains

The returns made from mutual fund investments are called capital gains and are taxed according to the following rules in India.

Note: A cess at the rate of 4% of the tax needs to be paid in addition to the capital gains tax described above.

To calculate capital gains we need to know the NAV at which each redeemed unit was purchased. FIFO accounting is used for this, i.e. units that are purchased first must be redeemed first. GnuCash provides a feature called lots to help with this. The set of units purchased together is called a Lot and GnuCash can identify the lot each unit belongs to at the time of redemption.

To do this, open the Portfolios:Retirement:Debt Funds:Franklin Savings account and select View Lots… under the Actions menu. Click on the Scrub Account button to make GnuCash identify the lots as shown below.


As you can see, GnuCash has identified 2 lots based on the 2 purchase transactions and has computed the gains earned on each of them separately. If you go back to the transactions screen, you’ll notice that the redemption has been broken into 2 different transactions corresponding to the lots. Additionally, the gains earned are also entered as 2 new transactions with Orphaned Gains-INR as the source. This is a hidden account that is used as the default source for capital gains.

Date Description Transfer Shares Price Buy Sell Balance
2015-07-01 Purchase Principal:Retirement 100 100.0000 10,000.00 100
2017-07-01 Purchase Principal:Retirement 100 150.0000 15,000.00 200
2018-07-02 Redemption Portfolios:Retirement:Cash -100 200.0000 20,000.00 100
2018-07-02 Redemption Portfolios:Retirement:Cash -100 200.0000 20,000.00 0
2018-07-02 Realized Gain/Loss Orphaned Gains-INR 10,000.00 0
2018-07-02 Realized Gain/Loss Orphaned Gains-INR 5,000.00 0

Since Orphaned Gains-INR holds no meaning for us, let us assign the capital gains of ₹5,000 to the appropriate Income account, i.e. Income:Capital Gains:Debt Short-Term. If it was an equity-oriented fund, the choice would be Income:Capital Gains:Equity Short-Term or Income:Capital Gains:Equity Long-Term depending upon the duration of holding.

Accounting for long-term capital gains from debt funds is tricky due to the more complex tax rules. The government allows you to adjust the cost of your investment for inflation. This is called indexation. The income tax department publishes the cost inflation index every year and this must be used to calculate indexation. Since we purchased the long-term units in FY 2015-16 and sold them in 2018-19, the applicable values are 254 and 280. So the indexed cost of our units will become:

280 / 254 * 10,000 = 11,023.62

This means that we do not need to pay tax on ₹1,023.62 of our gains and the remaining amount of ₹8,976.38 will be taxed at the rate of 20%, since the units were held for more then 3 years. You can also use the capital gains statement provided by your fund house to find indexed cost and taxable gain. To account for these two different parts of the gain, right click the Realized Gain/Loss transaction of value ₹10,000 and select Split Transaction. Enter the details of the gains in two parts as shown below.

Memo Account Shares Price Buy Sell
2015-07-01 Purchase Principal:Retirement 100 100.0000 10,000.00
2017-07-01 Purchase Principal:Retirement 100 150.0000 15,000.00
2018-07-02 Redemption Portfolios:Retirement:Cash -100 200.0000 20,000.00
2018-07-02 Redemption Portfolios:Retirement:Cash -100 200.0000 20,000.00
2018-07-02 Realized Gain/Loss 0 10,000.00
Realized Gain/Loss Portfolios:Retirement:Debt Funds:Franklin Savings 10,000.00
Realized Gain/Loss Income:Cost Indexation 1,023.62
Realized Gain/Loss Income:Capital Gains:Debt Long-Term 8,976.38
2018-07-02 Realized Gain/Loss Income:Capital Gains:Debt Short-Term 5,000.00

We can now account for the taxes to be paid on the short and long term gains, in Portfolios:Retirement:Cash account, as shown below.

(0.2 * 8,976.38 + 0.3 * 5,000) * 1.04 = 3,427.09

Date Description Transfer Receive Spend Balance
2018-07-02 Redemption – Split Transaction – 40,000.00 40,000.00
2018-07-02 Tax on Redemption Expenses:Tax:Capital Gains 3,427.09 36,572.91

Filing Tax Returns

The government requires you to pay capital gains tax at the end of the quarter you made the gains. To verify this, you’re required to specify how much gain was made in each quarter, when filing your tax return. This is one area where even the capital gains statement provided by fund houses is not good enough.

The standard reports that GnuCash can generate will handle this trivially. Select Reports > Income & Expense > Income Statement from menu. Select Report Options under Edit menu and go to the General tab. Select the Start Date and End Date for the quarter you want. In the below example, I have generated the statement for second quarter of FY 2018-19.

Income Statement

From the income statement, we can quickly verify the tax computation for each type of capital gain and enter the value from Revenues column in the ITR form. We can then repeat it for each quarter of the year to report quarterly gains.

In the next post I’ll show how GnuCash can be configured to fetch mutual fund NAVs from the Internet to get real-time valuation of your portfolio.

If you liked what you read, consider subscribing to the RSS feed in your favourite feed reader.