How to Consolidate Tax P&L From Multiple Brokers for ITR Filing
If you trade through more than one broker — Zerodha for delivery, Kotak for the bank linkage, Groww for the app, AngelOne for the older account — you have a problem at ITR time. Each broker gives you a tidy tax P&L for its trades. None of them know about the others. The income tax department sees one PAN.
This guide is the bridge: how to combine the tax P&L statements from Zerodha, AngelOne, Kotak Securities and Groww into a single, ITR-ready picture. With one worked example that shows why per-broker numbers are always incomplete when you have overlapping symbols.
Reading time: ~10 minutes. The cross-broker FIFO example in Step 3 is the part most filers get wrong.
Why consolidation matters
One PAN, one Income Tax Return. Even if you spread your investments across six demat accounts, the law sees a single taxpayer with a single portfolio.
That has one big consequence: FIFO (first-in-first-out) is calculated across your entire portfolio, not per broker. When you sell, the cost basis is the oldest buy of that symbol on any demat account — not just the broker where the sell happened.
This is the most common multi-broker filing mistake. People download Zerodha's P&L, download Kotak's P&L, add the two numbers, and file. If the same symbol exists on both, the LTCG/STCG split is wrong — sometimes wrong in their favour (under-reporting → CPC notice), sometimes wrong against them (over-paying tax).
The fix is a 4-step process. We'll walk through it.
Step 1 — Download all your broker tax reports
For each broker you traded on in FY 2025-26, download the tax P&L (sometimes called Capital Gains Report). Each broker article on this site walks through the specific menu paths and column meanings:
- Zerodha tax P&L guide — Console → Reports → Tax P&L
- AngelOne tax P&L guide — SmartReports → Capital Gains
- Kotak Securities tax P&L guide — already pre-split into Intraday/STCG/LTCG columns
- Groww capital gains report — already pre-grouped by holding-period bucket
If you trade on HDFC Securities, ICICI Direct, 5Paisa, Fyers or Upstox, download those reports too — we'll handle those manually (see Section 6).
Step 2 — Normalize columns across brokers
Each broker labels the same field differently. Before you can combine anything, you need a column map. Here's how the four supported brokers line up on the columns you'll actually use for ITR:
| Logical field | Zerodha | AngelOne | Kotak Securities | Groww |
|---|---|---|---|---|
| Symbol | Symbol | Scrip Name | Script Name | Stock name |
| ISIN | ISIN | ISIN | ISIN | ISIN |
| Quantity | Quantity | Qty | Qty. | Quantity |
| Buy date | Buy Date | Buy Date | Buy Date | Buy date |
| Buy price | Buy Price | Avg Buy Price | (derived: Buy Amt. ÷ Qty.) | Buy price |
| Sell date | Sell Date | Sell Date | Sell Date | Sell date |
| Sell price | Sell Price | Avg Sell Price | (derived: Sell Amt. ÷ Qty.) | Sell price |
| Charges | (in P&L net) | Charges and Statutory Levies + STT | Total Charges | (summary block only) |
| Holding period | Period of Holding | (pre-split: Long/Short term taxable cols) | (pre-split: Intraday/STCG/LTCG cols) | (rows grouped into Intraday / Short Term / Long Term sections) |
| Realised P&L | Realised P&L | Net Profit/Loss | Realised P&L | Realised P&L (gross of charges) |
Two things to flag:
- Three of the four brokers pre-split each row by holding-period bucket. Kotak adds Intraday / STCG / LTCG columns per row; AngelOne adds
Long term taxable income/Short term taxable incomecolumns per row; Groww groups its rows into separate Intraday / Short Term / Long Term sections. Only Zerodha leaves the bucketing entirely to you — derive it fromPeriod of Holding. - Symbol case and column names differ across brokers. Some report
INFY, someInfy, someINFY-EQ. When matching the same stock across brokers, normalize to uppercase and strip exchange suffixes (-EQ,-BE).
Step 3 — Same-symbol-different-brokers (FIFO worked example)
This is where the multi-broker problem shows up most clearly. Consider TCS — one symbol, two brokers, three transactions across FY 2025-26:
| When | Action | Where | Qty | Price | Holding by sell date |
|---|---|---|---|---|---|
| Apr 2023 | BUY | Zerodha | 10 | ₹3,200 | ~34 months → LTCG eligible |
| Aug 2025 | BUY | Kotak | 10 | ₹4,000 | ~6 months → STCG eligible |
| Feb 2026 | SELL | Kotak | 15 | ₹4,200 | — |
Only Kotak sees the sell. Zerodha sees no sell in FY 2025-26 at all. This is the key observation: each broker's P&L statement on its own is incomplete.
The wrong way — use each broker's P&L as-is and sum them
- Zerodha P&L for FY 2025-26: nothing for TCS (no sell happened on Zerodha).
- Kotak P&L for FY 2025-26: tries to FIFO-match 15 sells against its own 10 buys → matches 10 (₹2,000 STCG); the other 5 sells are flagged as "no matching buy lot" or treated as zero-cost sells.
The filer now has two failure modes:
- Under-report: ignore the 5 unmatched sells. Net filed: ₹2,000 STCG. Risk: CPC notice when AIS shows extra sale proceeds.
- Over-report: treat the 5 sells as zero-cost. Net filed: ₹2,000 STCG + ₹21,000 STCG = ₹23,000. The ₹21,000 on the five zero-cost shares alone incurs roughly ₹4,200 in excess tax (₹21,000 × 20%).
Both are preventable.
The right way — portfolio-wide FIFO
Sort all TCS buys across both brokers by date. Apply FIFO across the combined list:
- 10 sells match the Apr 2023 Zerodha buy → LTCG (holding period more than 12 months)
- 5 sells match the Aug 2025 Kotak buy → STCG (holding period less than 12 months)
The numbers:
- LTCG: 10 × (₹4,200 − ₹3,200) = ₹10,000
- STCG: 5 × (₹4,200 − ₹4,000) = ₹1,000
- Total realised gain: ₹11,000
Tax under FY 2025-26 rates (assuming you have no other LTCG taking up the ₹1.25L Sec 112A exemption):
- LTCG ₹10,000 — fully covered by the ₹1.25L Sec 112A exemption → ₹0
- STCG ₹1,000 — 20% (Sec 111A) → ₹200
- 4% cess on ₹200 → ~₹208 total
Each broker statement shows you a slice. The ITR needs the whole picture. Either consolidate manually with a spreadsheet and the column map in Step 2, or use a tool that does cross-broker FIFO automatically. (See the FY 2025-26 tax rates reference on /learn/budget if you're cross-checking the rates.)
Step 4 — Combine into ITR figures
Once you've done portfolio-wide FIFO across all your brokers, the consolidated numbers map cleanly to ITR schedules:
| Income type | ITR schedule | FY 2025-26 rate |
|---|---|---|
| Long-term equity gains (more than 12 months) | Schedule 112A | 12.5% above ₹1.25L exemption |
| Short-term equity gains (12 months or less) | Schedule 111A | 20% |
| Non-equity STCG / LTCG | Schedule CG (other) | Per-asset rules |
| Intraday equity | Schedule BP — speculative business income | Slab rate |
| F&O (futures, options) | Schedule BP — non-speculative business income | Slab rate |
A 4% Health & Education cess applies on the combined LTCG + STCG tax (and on the slab tax on business income). Rates are the FY 2025-26 figures — the canonical reference lives on /learn/budget so you only need to update one place if Budget 2026 changes anything.
One important separation: intraday and F&O are not capital gains. They are business income and require ITR-3, not ITR-2. If any of your brokers shows intraday or F&O activity, you cannot file ITR-2 — even if delivery is the bulk of your activity. A dedicated F&O turnover and audit guide is on the F&O pillar.
What about brokers we don't yet auto-parse?
VriddhiQ today auto-parses tax P&L for Zerodha, AngelOne, Kotak Securities and Groww. If you also have an HDFC Securities, ICICI Direct, 5Paisa, Fyers or Upstox account, you can still consolidate everything in one place — add those trades manually.
The manual transaction add accepts the same fields any broker statement provides: symbol, ISIN, quantity, buy/sell date, price, charges. Once added, they participate in the same cross-broker FIFO engine — so the Step 3 example works the same whether your "second broker" is auto-parsed Kotak or manually-entered HDFC.
Pasting per-trade data from any broker report works.
Frequently asked questions
Q: Is FIFO calculated per broker or across all brokers? A: Across all brokers. The Income Tax Act treats your holdings as a single portfolio under your PAN, regardless of which demat account they sit in. Per-broker FIFO is a common mistake that leads to wrong LTCG/STCG splits.
Q: Zerodha shows LTCG but Kotak shows STCG for the same stock — which is correct? A: Both can be partially right at the per-broker level, but neither is right for ITR. Each broker only sees its own lots. The correct holding period comes from sorting all your buys of that symbol across brokers and applying FIFO portfolio-wide.
Q: Do I file one ITR or one per broker? A: One ITR per PAN. All your demats, all your brokers, all your trades roll up into a single return. The broker is the data source; the ITR is yours.
Q: What if I use HDFC, ICICI, or another broker VriddhiQ doesn't auto-import? A: Add those trades manually. VriddhiQ's manual add accepts the same fields any broker statement provides — symbol, quantity, date, price, charges — and feeds the same FIFO engine.
Q: How does AIS treat multi-broker holdings? A: AIS aggregates across brokers under your PAN, but it shows turnover and values, not realised gains by lot. Use broker P&L for the actual capital gains numbers; use AIS as a cross-check that no transactions are missing. A detailed AIS reconciliation guide is upcoming on the brokers pillar.
Further reading
- Zerodha tax P&L guide
- AngelOne tax P&L guide
- Kotak Securities tax P&L guide
- Groww capital gains report
- F&O turnover & ITR-3 walkthrough
- Section 64(1A) minor income clubbing
- LTCG ₹1.25L exemption FY 2025-26 — coming soon
Stop calculating. Start filing.
VriddhiQ imports your broker statements, applies FIFO matching, clubs minor income under Sec 64(1A), and exports ITR-ready summaries — automatically.
Try VriddhiQ freeThis article reflects rules as of FY 2025-26 (Budget 2024 amendments). Tax laws change yearly — always confirm with your CA or the income-tax portal before filing.