Schedule FA from Interactive Brokers — Step-by-Step
Updated 5 August 2026 · For ROR Indian residents · AY 2026-27
Interactive Brokers is the hardest broker to file Schedule FA from, and not because the data is missing. It is because IBKR gives you a report builder rather than a report — and the one setting that decides whether your export is usable at all is buried three levels down.
Watch: Schedule FA in 2 minutes — Interactive Brokers
1. Why IBKR is different from a stock-plan broker
If you hold RSUs through Fidelity NetBenefits or Charles Schwab, your account contains one company's shares, priced in dollars, administered by your employer. Almost every Schedule FA guide is written for that case.
An IBKR account breaks three of those assumptions at once:
- Many securities, not one. You chose them, so there is no employer record to fall back on.
- Many currencies. A euro ETF on Xetra and a US stock can sit side by side, and each converts to rupees at its own rate.
- Many asset classes. Options, futures, bonds and forex live in the same account as your shares, and they do not all go in the same Schedule FA table.
There is also no employer stock-plan trust, so Table F does not apply to an IBKR account. That one is a relief rather than a complication.
2. Building the Flex Query
IBKR has no one-click "download my holdings" export. You build a Flex Query once, and it is reusable every year afterwards — about ten minutes of setup that you never repeat.
- Log in to interactivebrokers.com
- Performance & Reports → Flex Queries → Activity Flex Query → +
- Add the Trades, Open Positions and Cash Transactions sections
- Set each section's Level of Detail — see the next section, this is the step that matters
- In each section tick: Symbol, ISIN, Asset Class, Currency, Listing Exchange, Date, Quantity, Proceeds, Cost Basis, Realized P/L and Open Date Time
- Set Format to CSV and Period to 1 January – 31 December of the year you are filing for
- Save, Run, download
The single CSV that comes out carries holdings, sales, dividends and cash interest together — there is nothing else to download.
3. The Level of Detail setting everyone misses
Schedule FA needs a date of acquisition for every holding. IBKR will give you one — but only if you ask correctly.
Open Date Time column but leaves every value blank.Trades → tick "Closed Lots". An execution-level trade row has no acquisition date even when it closes a position; only the closed-lot rows carry one.
This is the single most common reason an IBKR export cannot be used. The file looks complete — the columns are all there — and every acquisition date in it is empty.
What a Summary-level export looks like (note the trailing empty field):
Symbol,ISIN,Quantity,CostBasisPrice,LevelOfDetail,OpenDateTime
VWCE,IE00BK5BQT80,1,142.78,SUMMARY,
The same query at Lot level:
Symbol,ISIN,Quantity,CostBasisPrice,LevelOfDetail,OpenDateTime
VWCE,IE00BK5BQT80,1,142.78,LOT,12/05/2024;11:17:45
Same query, same fields, one checkbox apart. If you have already downloaded a file and the dates are blank, you do not need a different report — tick those two boxes and run the same query again.
4. Which table each holding goes in
| Table | What goes in it | Needs peak value? |
|---|---|---|
| A2 | The IBKR account itself — one row-set, with peak and closing balance and the income credited | Yes |
| A3 | Each equity holding, one row per lot | Yes |
| D | Options, futures, warrants — capital assets that are not equity or debt | No |
| F | Not applicable to IBKR — there is no stock-plan trust | — |
Table A2 describes the account, A3 itemises the shares inside it. Both are required; they are not alternatives.
5. Multi-currency: one rate per currency
Rule 115 converts foreign income at the SBI telegraphic transfer buying rate for the currency the income is actually in. A euro holding uses SBI's EUR rate. A Hong Kong listing uses the HKD rate.
Converting everything through the dollar is a silent error: a euro figure billed at the USD rate is wrong by the whole cross-rate difference, and nothing on the face of the return shows it. If a currency has no SBI TTBR published at all, the honest answer is to report that holding separately with your CA rather than approximate it.
One more subtlety: the peak value Schedule FA asks for is the highest rupee value the holding reached. The rupee moves independently of the share price, so for a stable-NAV holding — a short-bond ETF, say — the peak is driven almost entirely by the exchange rate, not the price. More on Rule 115 →
6. The country is the issuer's, not the exchange's
Table A3 asks for the country where the company is registered. Not where the share trades, and not the currency you paid in. Three real examples from one account:
| Holding | Country reported | Listed on | Currency |
|---|---|---|---|
| Accenture plc | Ireland | NYSE | USD |
| Endeavour Mining | Cayman Islands | Toronto | CAD |
| iShares Core MSCI World | Ireland | Xetra | EUR |
All three differ across all three columns. The ISIN is what settles
it — the first two characters are the country of registration, so
IE00B4L5Y983 is Ireland whatever exchange or currency it traded in. That
is why the Flex Query field list above includes ISIN.
Most low-cost world ETFs held by Indian investors are Irish or Luxembourgish, chosen deliberately to limit US estate-tax exposure. Reporting them as US holdings is a common and avoidable error.
7. Options and futures
Options and futures are foreign capital assets and carry the same disclosure obligation as shares — but they belong in Table D, not A3. An option is neither equity nor debt interest.
Table D is, helpfully, the easier table: it asks for no peak balance and no closing value, only the date of acquisition, the amount invested and the income derived. That matters, because an expired contract has no price history to compute a peak from.
8. Three files look similar — which one you have
IBKR can hand you three different CSV layouts, and they are easy to confuse. Check the first two columns of your file:
| First line looks like | What you have | Usable? |
|---|---|---|
Statement,Header,... | Default Activity Statement | Usable, but often lacks Open Date Time |
HEADER,TRNT,... | Flex Query, several sections | Yes — this is the one |
ClientAccountID,Currency,... | Flex Query, single section | Yes, but only covers that one section |
All three are accepted. The thing that matters is not which layout you have, but
whether OpenDateTime has values in it.
9. A worked example, in rupees
One euro holding, start to finish, so you can check the arithmetic against your own file. VWCE, an Ireland-domiciled world ETF, bought on Xetra:
| ISIN | IE00BK5BQT80 → country reported: Ireland (not Germany, not the US) |
| Acquired | 12 May 2024 — cost €142.78 |
| Initial value | €142.78 × SBI EUR TTBR on 12 May 2024 |
| Peak value | Highest rupee value across the year — see below |
| Closing value | Units × 31 Dec price × SBI EUR TTBR on 31 Dec |
Every rate here is the EUR TTBR. Using the USD rate — even correctly looked up — gives a figure that is wrong by the whole EUR/USD cross rate, and nothing on the return would show it.
Why the peak is a rupee number, not a price number
Schedule FA asks for the peak value, and value is measured in rupees. Since the rupee moves independently of the share price, the day your holding was worth the most in rupees is often not the day the price peaked.
This matters most for stable-NAV holdings. A short-duration bond ETF barely moves in price, so its rupee peak is driven almost entirely by the exchange rate — checking a sample of these across 2025, taking the price peak instead of the rupee peak understated the figure by up to 7%. For a volatile stock the two usually coincide; for a treasury ETF they rarely do.
10. Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| No holdings found in the file | Query has no Open Positions section, or it is at Summary level | Add the section, set Level of Detail to Lot |
| Holdings appear but sales are missing | Trades section is at Execution level | Tick Closed Lots under Trades |
| A holding shows a value of zero | No price could be retrieved — usually a company delisted or acquired mid-year | Enter its share price from your statement when prompted |
| A holding is missing entirely | Its currency has no SBI TTBR, or its exchange could not be priced | Check the notes on the review page — each exclusion is named |
| Country looks wrong | ISIN field was not included in the query | Add ISIN, or correct the country on the review page |
| Dates are seven months out | Ambiguous slash dates (12/05 is 12 May or 5 Dec) | Set the Flex Query date format to yyyyMMdd |
11. Common mistakes
- Running the Flex Query at Summary level — no acquisition dates, unusable file.
- Using 31 March as the closing date — Schedule FA follows the calendar year, so it is 31 December.
- Converting everything at the USD rate — each currency has its own SBI TTBR.
- Reporting an Irish ETF as a US holding — the ISIN, not the exchange, decides the country.
- Leaving options out entirely — they are disclosable in Table D.
- Skipping Table A2 — the account itself is disclosed separately from the holdings in it.
- Assuming no income means no disclosure — Schedule FA is a disclosure obligation, not an income one. A holding that paid nothing is still reported.