v1.9.2 — A secure, standalone desktop utility for bulk downloading Form 26AS, Form 168, AIS, and TIS from the Income Tax Department e-Filing portal for multiple clients in one click — and now emailing those documents directly to clients.
Built with PyQt6 + Playwright. Runs on Windows, macOS, and Linux/WSL.
- Fixed: Form 168 downloading as old Form 26AS on some installs — an install upgraded from an earlier version could keep silently fetching the old Form 26AS for TY 2026-27 instead of the new Form 168, saving it into a correctly-named folder that actually held the wrong document. Which form to fetch is now decided by the app itself rather than a setting file that could go stale after an upgrade.
- Fixed: new tax years not appearing after an upgrade — the assessment/tax year list now updates itself with anything new shipped in a release, while keeping any years you've enabled, disabled, or added yourself.
See the full CHANGELOG for details.
- Full Documentation
- Windows Build Guide — Nuitka, Inno Setup, WiX MSI
- macOS Support — setup, what changed, app-bundle build
- Development Log — design decisions & debugging history
- Changelog
git clone https://github.com/dkbholusaria/AayDocCapio.git
cd AayDocCapio
pip install -r requirements.txt
playwright install chromium
python app.pyRequires Google Chrome for AIS/TIS downloads (the app launches real Chrome via
channel="chrome"). 26AS works without it.
On macOS you can also run bash scripts/setup.sh once and then double-click
scripts/AayDocCapio.command in Finder — see the macOS guide.
| Feature | Details |
|---|---|
| Form 26AS | PDF + TXT download for all selected clients |
| AIS / TIS | Request generation + download once ready |
| Email delivery | Batch email tax docs to clients with one click |
| Provider presets | Gmail, Outlook, Office 365, Exchange, Yahoo, iCloud, Custom |
| Rich text composer | Font, size, B/I/U, placeholders, CC, BCC |
| Managing Clients | Encrypted credentials (AES-256 via Fernet) |
| Bulk import | Excel / CSV template with Name, PAN, DOB, Password, Email, CC |
| Assessment Year management | Toggle years on/off, add custom AY/TY entries |
| Download history | Last status and folder per client per AY, shown in table |
| Themes | Light and Dark Navy; extensible via themes.py |
| Resume after Stop | Retry only the clients that were not completed |
| Excel report | Per-client status, folder hyperlink, per-row timestamp |
| Headless mode | Run browser hidden or visible (for CAPTCHA handling) |
app.py — Main window and all application logic
config.py — Path helpers (_app_dir, _bundled_dir, etc.)
utils.py — Shared utilities (timestamps, etc.)
themes.py — ThemeColors dataclass, THEMES registry, build_stylesheet()
vault.py — Encrypted client vault, settings, download history
ui/
_theme.py — Shared active-theme state (avoids circular imports)
helpers.py — Widget factory helpers (_btn, _lbl, _shadow, _status_style)
widgets.py — StyledComboBox and delegates
dialogs.py — ManageYearsDialog, BatchProgressDialog, MailDocsDialog, SmtpSettingsDialog
automation/
browser.py — Playwright browser launch / auth helpers
downloader_26as.py — 26AS download + TXT → Excel/HTML converter
downloader_ais_tis.py — AIS/TIS download
emailer.py — SMTP send, batch send, session logging, document list builder
as26_converter.py — 26AS TXT parser
errors.py — Human-readable error messages
scripts/
release.sh — GitHub release automation (--dry-run, --rerun)
bump.sh — Version bump utility
AayDocCapio.command — macOS double-click launcher
resources/icons/ — All PNG icons (buttons, menus, email providers)
assessment_years.json — AY/TY list (editable via Settings → Manage Years)
- Python 3.11+
- Google Chrome (for AIS/TIS; Chromium suffices for 26AS)
- See
requirements.txtfor Python packages
Use Help -> Report Bug / Request Feature... inside the app to open a structured GitHub form for bug reports or feature requests.
AayDocCapio is licensed under the GNU Affero General Public License v3.0 or
later (AGPL-3.0-or-later) for changes and distributions after the
old-license-mit tag. See LICENSE.
Releases and commits up to and including old-license-mit remain available
under the MIT License. See legacy MIT notice.
New source files should include Copyright (C) 2026 Deepak Bholusaria and
SPDX-License-Identifier: AGPL-3.0-or-later near the top of the file.