Income tax
This page is meant to maintain notes and information about Indian Income tax.
Accounting software
I use Beancount to maintain my book of accounts. While filing ITR Form2 in AY2026-2027, i relied entirely on bean-query generated reports.
Before using Beancount, i used Directshares, which went out of business.
Accounting firms
I engaged a CA’s to prepare ITR for AY2011-12 to understand the process.
A few years, engaged a Pondicherry based auditor to file ITR for AY2015-16 as i had to claim business loss, which requires a tax audit.
Section 44AD
Finding an auditor in early 2010 with accounting knowledge about derivative trading was quite tough. In the end i decided to learn the stuff. I kept filing the ITR’s myself and paid a presumptive rate of 8% tax and later 6% on the sales turnover under Section 44AD. Except for one year when i filed tax loss in AY2015-16. Prompty a 5-year lock-in provision under Section 44AD(4) and 44AD(5) was introduced by the Finance Act, 2016, and made it practically impossible to use 44AD and claim tax loss as was possible earlier.
Section 44AD(4) and (5) — the “opt-out lock-in” rule
If you declare income under 44AD (at the deemed 8%, or 6% for digital receipts) for a year, and then in any of the next 5 consecutive assessment years you report profit below the presumptive rate - or a loss - you are treated as having opted out of 44AD.
So you become ineligible to use 44AD again for the following 5 assessment years. On top of that, if your total income exceeds the basic exemption limit in that “opt-out” year, you’re required to maintain regular books of account under Section 44AA, and get them audited under Section 44AB (tax audit).
So claiming a loss (instead of the flat 8%) forces one out of the simple presumptive regime(44AD) and into full bookkeeping + mandatory audit, i.e one cannot self-file as the audit requirement effectively needs a CA.
Validation errors
At the end of preparing the online ITR form, the system validates the return and may return certain errors. This section documents such errors faced by me.
Schedule CG accrual breakup
The below was observed while filing ITR return for AY2026-2027.
The quarter-wise “accrual/receipt” breakup in Schedule CG exists to compute Section 234C advance-tax interest. The ITR utility validates that this breakup sums to the net taxable capital gain after brought-forward loss set-off (i.e. the figure that actually flows into Schedule SI and gets taxed) - not the gross capital gain computed in Schedule CG itself.
If you have a brought-forward capital loss from a prior year being set off against this year’s LTCG/STCG visible in Schedule BFLA , your Schedule CG total and your Schedule SI total will differ by exactly that set-off amount. Your quarterly breakup, if entered to match the gross Schedule CG figure, will therefore fail the portal’s validation, even though it’s arithmetically self-consistent and “adds up” correctly to the wrong total.
Cause: 234C interest is meant to be computed on net taxable income, not gross gains before loss absorption - but there’s no natural “quarter” a brought-forward loss belongs to (it’s a return-level adjustment, not tied to any transaction date), so the utility doesn’t auto-adjust the breakup for you. You have to do it manually.
Fix: Reduce the quarterly breakup total by the exact brought-forward set-off amount check Schedule BFLA → GainType.BFlossPrevYrUndSameHeadSetoff so it sums to the net post-set-off figure (Schedule SI SplRateInc for the matching section code), not the gross Schedule CG total.
No fixed convention on which quarter absorbs the reduction - commonly the last quarter, or spread proportionally; I have set-off this at the first opportunity i.e first period when gain occurs.
Takeaway: Whenever Schedule CG’s total and Schedule SI’s corresponding SplRateInc don’t match, check Schedule BFLA and Schedule CYLA first -the difference is almost always a loss set-off, and the quarterly accrual breakup needs to track the post-set-off figure, not the gross one.
Obsolete
JRE for running ITR offline utility
For Linux Mint 20 , the Java 8 SDK or Java 8 runtime environment is in the repository, but the openjfx libraries are not of version 8 but of version 11. To overcome error, you can use the Zulu↗ Java runtime for version 8 with JavaFX.
Download the Zulu Java Runtime Environment from Azul↗ site.
Untar the file from the downloaded folder (~/Downloads) into the /usr/lib/jvm folder
$cd /usr/lib/jvm
$sudo tar -zxvf ~/Downloads/zulu8.48.0.51-ca-fx*.gz
Rename it to zulu8 for convenience.
$sudo mv zulu8.48.0.51-ca-fx-jre8.0.262-linux_x64 zulu8/
$cd ~/Downloads
Now run the Java ITR utilities of India income tax return.
$/usr/lib/jvm/zulu8/bin/java -jar ITR-1_AY202021_PR2.jar
The utility should run now.
© Prabu Anand K 2020-2026