This is an unofficial open source project.
- This project is not affiliated with or endorsed by E*TRADE, Morgan Stanley, the State Bank of India (SBI), the Reserve Bank of India (RBI), the Income Tax Department of India, or any other financial institution or government authority.
- Historical exchange rates are obtained through the sbi-tt-rates package. For dates prior to 2020, where SBI TT data is unavailable, the library automatically falls back to historical USD/INR exchange rates from Yahoo Finance.
- Dividend calculations are not supported. Any dividend income must be calculated and reported separately while filing your Income Tax Return.
- The library has only been tested with E*TRADE statement formats. Statements from other brokers are not currently supported.
- The library has only been validated for FY 2025-26 (AY 2026-27). Future Income Tax portal formats, reporting requirements, or broker statement formats may require updates.
- The generated Schedule FA should always be reviewed before filing your Income Tax Return. Users are responsible for verifying the accuracy of the generated data before submission.
The authors and contributors are not responsible for any incorrect tax filings, penalties, interest, or financial losses resulting from the use of this software.
Simple application for generating Schedule FA, FSI, capital gains, and dividend reports from supported US broker statements for the Indian Income Tax Return.
This application uses the itr-schedule-fa library to convert supported broker statements into the Schedule FA CSV format accepted by the Income Tax portal.
It also generates:
- Schedule FA
- Capital gains (STCG/LTCG)
- Dividend report
- Quarterly break-up of values
- E*TRADE
More brokers may be added in the future.
- Python 3.10 or later
git clone https://github.com/jdecodes/itr-schedule-fa-app.git
cd itr-schedule-fa-apppython -m venv .venv
.venv\Scripts\activatepython3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtCopy your broker statement files into the data folder.
Currently supported filenames are:
holdings.xlsx
gnl_within.xlsx
gnl_after.xlsx
gnl_within.xlsx and gnl_after.xlsx are optional if you do not have any transactions to report.
The application can be used through either the graphical interface or the command line.
Launch the application:
python ui.pyUsing the graphical interface you can:
- Select the supported broker.
- Choose the reporting year.
- Enter the stock ticker.
- Generate Schedule FA, capital gains, and dividend reports.
- Open the generated output folder directly from the application.
Open main.py and update the required values.
Example:
TICKER = "QCOM"
REPORTING_YEAR = 2025Then run:
python main.pyThe generated files will be written to:
data/schedule_fa.csv
data/gains.csv
data/dividend.csv
These files can then be reviewed before copying the values into the Indian Income Tax Return portal.
- Only E*TRADE statements are currently supported.
- Holdings acquired during the reporting year are automatically excluded, as they should not appear in the opening foreign asset schedule.
- Transaction files are optional. If omitted, sale-related values in the output will be zero.
This application is built on a collection of open source Python projects.
| Project | Description | GitHub | PyPI |
|---|---|---|---|
| itr-schedule-fa | Core library for converting broker statements into Schedule FA. | https://github.com/jdecodes/itr-schedule-fa | https://pypi.org/project/itr-schedule-fa/ |
| fa-inrdata-api | Downloads and prepares historical market data used to build INR datasets. | https://github.com/jdecodes/fa-inrdata-api | https://pypi.org/project/fa-inrdata-api/ |
| fa-inrdata | Historical INR market data package used during Schedule FA calculations. | https://github.com/jdecodes/fa-inrdata | NA |
| sbi-tt-rates | Historical SBI TT Buy/Sell exchange rates for currency conversion. | https://github.com/jdecodes/sbi-tt-rates | https://pypi.org/project/sbi-tt-rates/ |
Contributions are welcome!
You can help by:
- Adding support for additional US brokers.
- Improving parsing robustness for existing broker statements.
- Reporting bugs or suggesting enhancements.
- Improving documentation and examples.
- Adding or expanding unit tests.
If you would like to contribute:
- Fork the repository.
- Create a feature branch.
- Make your changes and add tests where applicable.
- Ensure all existing tests pass.
- Submit a pull request with a clear description of your changes.
For major changes or new broker support, please open an issue first to discuss the proposed approach.
