The capital gains panic in June — why this is the most-Googled month for ITR
Every June, the same thing happens. The Income Tax department releases the ITR utilities. Two weeks later, my WhatsApp starts pinging: cousins, college friends, two people from my gym, all asking the same question — "Bhai, I sold some Zerodha stocks last year, what do I do?"
The panic is real because capital gains feels intimidating. Schedule CG has dropdowns within dropdowns. Words like "grandfathering," "FIFO," "FMV as on 31-Jan-2018," and "section 112A vs 111A" are thrown around. The Zerodha P&L statement looks like a Bloomberg terminal. Most people just throw up their hands and pay a CA ₹2,500 to do it.
I'm going to walk you through exactly what I did for AY 2024-25, when I had 47 sell transactions across Zerodha and 8 across Groww, including one position (TCS) that I had bought in 2017 — meaning grandfathering applied. Total turnover: ~₹14.8L. Net capital gain: ~₹1,12,400. By the end, you'll know every dropdown, every column, and the one bug everyone misses.
What you need open in tabs before you start
(1) Zerodha Console → Reports → P&L → Equity (download both PDF and Excel) · (2) e-filing portal → ITR-2 → Schedule CG · (3) AIS PDF (for cross-check) · (4) Calculator. Block out 2 hours on a weekend afternoon, not a weeknight. You will be slow. That's fine.Step 1: Downloading the Zerodha capital gains statement (the right way)
Log into console.zerodha.com. Top nav → Reports → P&L. Important: don't use the "Holdings" report, that's different. Set:
Segment : Equity Period : 01-Apr-2024 to 31-Mar-2025 (the full FY, not calendar year) P&L type : Realised P&L
Click the spreadsheet/download icon top-right. Zerodha gives you an Excel file with these sheets:
- Tradewise Exits — Equity (each sell broken into FIFO-matched buys)
- Tradewise Exits — Equity (LTCG) (only the long-term ones, with grandfathering FMV)
- Charges (STT, brokerage, exchange charges — already deducted from P&L)
- Summary (totals)
The two columns you'll live in are STCG and LTCG. Zerodha's report has already done the FIFO matching for you — you bought 10 Reliance on three different dates? Zerodha will figure out which buy lots get matched against which sell, in chronological order.
Step 2: Understanding the columns (this is where most people get lost)
The Tradewise Exits sheet has roughly these columns. Here's what each one means:
Column What it means Why it matters ───────────────────────────────────────────────────────────────────────────────── Symbol Ticker (e.g. TCS, RELIANCE) ITR doesn't need this ISIN 12-digit identifier (INE467B01029) Required in Schedule 112A Quantity Shares sold in this lot ITR: needed for grandfathered Buy date Date of buy (FIFO matched) Decides STCG vs LTCG Sell date Date of sale Same Buy value Acquisition cost Cost base, before grandfathering Sell value Sale proceeds (net of charges) Sale consideration Realised P&L Sell − Buy Final gain/loss Period STCG / LTCG The whole point FMV 31-Jan-2018 Only for pre-2018 buys Grandfathering input
One detail people miss: Zerodha's P&L is already net of STT, brokerage, exchange fees, GST and stamp duty. You don't add charges back. You don't need a separate deduction line. The "realised P&L" column is what flows directly to ITR.
Step 3: My TCS story — grandfathering in action
Here's a real example from my statement. I bought 50 shares of TCS on 18-Aug-2017 at ₹2,495/share (split-adjusted). I sold all 50 on 22-Jul-2024 at ₹4,128/share. Long-term, since holding > 12 months. Without grandfathering, the math is simple:
Actual cost : 50 × ₹2,495 = ₹ 1,24,750 Sale proceeds : 50 × ₹4,128 = ₹ 2,06,400 "Naive" LTCG : ₹ 81,650 LTCG tax @ 10% (over ₹1L) : not the right number — see below
But Section 112A introduced in Budget 2018 says: for shares bought before 1-Feb-2018, your cost is the HIGHER of (a) actual cost, or (b) lower of [FMV on 31-Jan-2018] and [actual sale price]. That FMV is the highest price on the NSE on 31-Jan-2018.
TCS closed at ₹3,041 on 31-Jan-2018 (actual data; Zerodha's report shows this in the FMV column). So:
Grandfathering computation
─────────────────────────────────────────
(a) Actual cost = ₹ 2,495/sh
(b) Lower of:
FMV on 31-Jan-2018 = ₹ 3,041
Sale price = ₹ 4,128
⇒ lower = ₹ 3,041
Cost for tax = MAX(₹2,495, ₹3,041) = ₹ 3,041/sh
LTCG = (₹4,128 − ₹3,041) × 50 = ₹ 54,350
(vs ₹81,650 naive)
Grandfathering saved me ₹27,300 of taxable gain. At 10% LTCG, that's ₹2,730 saved on this single position. If you have 5-6 positions from before Feb 2018, the savings compound quickly. The biggest mistake I see people make is ignoring grandfathering entirely and entering "actual cost" — overpaying tax by 10% on the difference.
Step 4: STCG vs LTCG split — what tax rate applies?
For listed equity (and equity MF), the rules under FY 2024-25 (post Budget 2024 changes):
CATEGORY HOLDING PERIOD TAX RATE
────────────────────────────────────────────────────────
STCG (Sec 111A) ≤ 12 months 20% flat (raised from 15%
w.e.f. 23-Jul-2024)
LTCG (Sec 112A) > 12 months 12.5% over ₹1.25L exempt
(raised from 10% over ₹1L
w.e.f. 23-Jul-2024)
The mid-year rate change is the biggest gotcha for AY 2024-25. For transactions on or before 22-Jul-2024, old rates apply (15% STCG, 10% LTCG, ₹1L exempt). For transactions from 23-Jul-2024 onwards, new rates (20% STCG, 12.5% LTCG, ₹1.25L exempt). The ITR utility now splits these into "Before 23-Jul-2024" and "From 23-Jul-2024 onwards" sub-rows in Schedule CG. Two of my 47 sells fell on either side of this date and I had to be careful.
My full FY 2024-25 split came out to:
STCG before 23-Jul-2024 : ₹ 18,420 → tax @ 15% = ₹ 2,763
STCG from 23-Jul-2024+ : ₹ 32,180 → tax @ 20% = ₹ 6,436
LTCG before 23-Jul-2024 : ₹ 22,400 → covered in ₹1L exemption
LTCG from 23-Jul-2024+ : ₹ 39,400 → covered partly in remaining ₹85K exemption
net taxable LTCG ≈ ₹0
─────────────────────────────────────────────────
Total CG tax (before cess) ≈ ₹ 9,200
Step 5: Filling Schedule CG on the portal — every dropdown
Open ITR-2. Navigate to Schedule CG (Capital Gains). You will see a list of sub-schedules. The relevant ones for listed equity:
- A1: STCG on equity shares where STT paid (Section 111A)
- B4: LTCG on equity shares where STT paid (Section 112A)
- Schedule 112A: the scrip-wise schedule (mandatory for LTCG > ₹1L)
Filling A1 (STCG under 111A)
This is summary-only. Just enter:
i. Full value of consideration (sum of sell values) ii. Cost of acquisition (sum of buy values) iii. Cost of improvement 0 iv. Expenditure wholly & exclusively 0 (Zerodha P&L is already net) v. Short-term capital gain (i) − (ii) − (iii) − (iv)
For AY 2025-26, the utility splits this into "upto 22-Jul-2024" and "23-Jul-2024 onwards". Make sure your sum of both sub-rows matches your Zerodha STCG total.
Filling Schedule 112A (the scrip-wise LTCG schedule)
This is the one that intimidates people. You must enter one row per ISIN. If you sold 5 TCS lots across the year, those still consolidate into one row (sum quantities and weighted-avg prices). For my TCS row, it looked like this:
Share/Unit acquired : 50 ISIN : INE467B01029 Name : TCS Sale price/share : ₹ 4,128 Total sale value : ₹ 2,06,400 Cost of acquisition : ₹ 1,24,750 (actual) FMV on 31-Jan-2018 : ₹ 3,041 Sale price/unit : ₹ 4,128 Lower of FMV & sale : ₹ 3,041 Cost for tax (higher of actual & above) : ₹ 3,041 × 50 = ₹ 1,52,050 Expenditure : 0 LTCG : ₹ 54,350
The portal auto-calculates the "cost for tax" once you punch in FMV. If your statement shows FMV blank (because Zerodha couldn't find it for some scrip), you can look it up on the BSE/NSE historical price archive for 31-Jan-2018.
For shares bought after 31-Jan-2018, leave FMV blank and the portal uses actual cost. Simple.
Step 6: The grandfathering bug everyone misses
Here's the trap. Zerodha's P&L statement shows the "LTCG (grandfathered)" number in the summary, but the tradewise sheet sometimes shows the un-grandfathered cost. If you blindly copy the tradewise sheet into Schedule 112A without checking, you'll under-report your cost and over-pay tax.
The fix: always cross-check that the sum of Schedule 112A's "LTCG" column matches Zerodha's grandfathered LTCG total in the summary sheet. If they don't match by more than ₹500, something's wrong — probably a pre-2018 holding where you forgot to enter FMV.
The other bug — forgetting brought-forward losses
If you had STCG losses in earlier years that you filed before the due date, those can be set off against this year's STCG (and unused balance carried forward for 8 years). Schedule CFL is where you declare brought-forward losses. Always populate Schedule CFL before Schedule BFLA (Brought Forward Loss Adjustment). A friend of mine forgot a ₹62,000 STCG loss from FY 2021-22 and paid ₹9,300 of extra tax he could have avoided.Step 7: When ITR-2 becomes ITR-3 — F&O and intraday
Capital gains in ITR-2 covers delivery-based equity, mutual funds, bonds, gold, property. The moment you have any of the following, you must use ITR-3 instead:
- F&O (Futures & Options) — treated as non-speculative business income under Section 43(5)(d).
- Intraday equity — treated as speculative business income under Section 43(5).
- Currency derivatives, commodity F&O — similar to equity F&O.
I had a small intraday accident in October 2024 — bought 25 shares of HCL Tech accidentally with MIS instead of CNC, sold the same day. ₹420 loss. That single trade technically pushed me into ITR-3 territory. I declared it under Schedule BP as "speculative loss," carried it forward (4 years for speculative).
F&O is heavier: turnover calculation gets weird (absolute sum of all profits and losses, not notional), and if turnover > ₹3 Cr you'll be looking at tax audit under 44AB. Outside this article's scope but flagged so you know.
Step 8: My CSV import trick
I built our Capital Gains CSV Importer after my second year of manually entering 30+ scrip rows into Schedule 112A. It accepts Zerodha and Groww P&L CSV/Excel exports, normalises the columns, applies the grandfathering check, splits transactions by date for the 23-Jul-2024 rate change, and gives you a tidy JSON output you can paste straight into the ITR utility's Schedule 112A import.
It saved me about 45 minutes this year. Free, browser-only, your file never leaves the device — I built it that way deliberately so I'd use it myself for my own statements.
Step 9: Final tax, total time, what I'd do differently
MY AY 2024-25 CAPITAL GAINS — FINAL TALLY ───────────────────────────────────────── Number of sells : 47 (Zerodha) + 8 (Groww) = 55 Number of unique scrips : 31 Pre-2018 holdings (grandfathered): 4 Total STCG : ₹ 50,600 Total LTCG (gross) : ₹ 61,800 LTCG exemption used : ₹ 61,800 (well within ₹1.25L cap) ───────────────────────────────────────── Net taxable capital gains : ₹ 50,600 (all STCG) Tax on CG (mix of 15% / 20%) : ₹ 9,199 Cess @ 4% : ₹ 368 ───────────────────────────────────────── TOTAL CG TAX : ₹ 9,567 Time spent end-to-end : ~2 hours 40 minutes First-time would have taken : ~6-8 hours easily
What I'd do differently next year:
- Quarterly reconciliation. Instead of doing the whole year in June, I'm going to spend 30 min at end of each quarter exporting my Zerodha P&L and saving it. By March I'll already have my numbers.
- Tag pre-2018 holdings in a separate sheet. So I never miss the FMV / grandfathering step.
- Don't sell anything between July 15 and July 23. Half-joking. The mid-year rate change in AY 24-25 was painful to model. If another tax law change is around the corner, batch your sells before the change-date.
The tools that turned this from 6 hours into 2.5
For the actual computation: Capital Gains Calculator (handles STCG, LTCG, grandfathering, mid-year split). For the bulk import: CSV Importer. For the broader workflow: How to File ITR step-by-step. All free, no signup.