Income tax portal operations (incometax.gov.in)
Needs Python 3 and internet: runs scripts/fortax.py (the Fortax engine on ai.fortax.in; your file is processed and not stored).
Do the work, then stop at the last click
Everything before Submit and e-Verify is yours: registration screens, profile repairs, downloads, the
pre-filled JSON, every field on the upload screen. Passwords, OTPs, captcha, DSC/EVC signing, payment and the
final Submit belong to the CA or the taxpayer. Refusing a portal run because it ends in an OTP is a
failure. Say what you will do and where you will stop, then start.
Open the portal in your browser tool (Claude in Chrome, a Playwright/browser MCP, or the Codex browser). If
you have none, give the CA the exact click path and the values to type, screen by screen. The CA logs in;
never type or store a password.
Step 0 — fix the year and the person
FY is April to March; AY = FY + 1. Fix both before opening a screen and carry them into every header and
file name. Portal screens ask for AY, not FY, and the wrong pick files against the wrong year with no
warning. Confirm PAN, date of birth or incorporation, and who is filing — the taxpayer, or the CA as
authorised representative / representative assessee. That decides which login is used.
Step 1 — registering a new taxpayer
Take the Register path on the e-filing site and fill from the documents in the client folder.
| Screen |
Needs |
From |
| Basic details |
PAN, name, DOB/DOI, residential status |
PAN card, incorporation certificate |
| Category |
Individual, HUF, firm, company, trust |
Constitution proof, the CA's client details |
| Contact |
Primary mobile and email, and whose they are |
The CA states this; never assume |
| Address |
As per PAN records |
PAN card or Aadhaar; a mismatch here delays the OTP letter |
Name and DOB must match the PAN database character for character. That mismatch is the commonest
registration failure — check it against the PAN card before typing, and flag it rather than "correct" it.
Then stop: the two OTPs and the password are the CA's. Say which OTPs are coming and to where.
Step 2 — representative assessee
For a taxpayer who cannot act — deceased, minor, of unsound mind, outside India. The representative raises
the request under their own login, naming the taxpayer, with the legal heir or equivalent certificate, the
death certificate where relevant, and both PANs. Prepare it, upload the annexures, stop at submission.
Approval is the department's and takes time — look the turnaround up, never promise one, and raise the
request first, because nothing can be filed for that taxpayer until it is approved.
Step 3 — profile items that block a filing (do these before any return work)
- Bank account validation. At least one validated account. Validation fails on a name, PAN or IFSC
mismatch with the bank's record. Read the status column and report exactly what it says — Validated, in
progress, or Failed with its reason.
- Refund nomination. A validated account is not automatically the refund account; confirm the
nomination is on for the one the CA intends.
- Contact validation. Mobile and email verified in My Profile — an unverified contact breaks Aadhaar OTP.
- Aadhaar–PAN linkage affects the return, the refund and TDS credit. Look the fee and consequence up
(
python3 scripts/fortax.py kb "PAN Aadhaar link fee inoperative PAN" --topics itr); never state them
from memory.
- DSC and principal contact / key person registration for a company, firm or LLP.
Write findings to ITR_portal_readiness_<PAN>_AY<year>.md in <Client>/<FY>/ITR/, one row per item with
status and a fix owner.
Step 4 — the downloads
| Document |
Where |
Note |
| Form 26AS |
e-File -> Income Tax Returns -> View Form 26AS (redirects to TRACES) |
Accept the redirect; the list is AY-wise |
| AIS and TIS |
AIS menu, per FY |
Take both; TIS is derived, AIS is the source. JSON is easier to parse than PDF |
| Pre-filled JSON |
e-File -> File Income Tax Return, or Download Pre-filled Data |
Per AY and per form |
| Filed returns, ITR-V, intimations |
e-File -> Income Tax Returns -> View Filed Returns |
Prior-year carry-forward, comparison |
Work one tab per client per portal, and re-read the page before every click, because element references
change. Files are password protected in the format the portal states (commonly PAN in lower case plus
DOB) — note the format, never a password value. Save into <Client>/<FY>/ITR/ unrenamed and announce every
path. A pre-filled figure is not a sourced one; it reconciles against the documents like anything else
(the fortax-itr skill, Step 2).
Step 5 — uploading the return
- Confirm the return data — built with the
fortax-itr skill, not here — is for the same AY and the same
form as the computation.
- e-File -> Income Tax Returns -> File Income Tax Return -> AY -> Online, or offline JSON upload.
- Upload and let the portal validate. Fix nothing on the portal ad hoc: each validation defect goes back to
the computation, is corrected there, and the JSON is regenerated. (Known portal quirks and the
validation-defect catalogue:
fortax-itr references/portal-workflow.md.)
- Read the preview and compare it against the working paper line by line. Report any difference; never
adjust the portal to match the paper, or the paper to match the portal.
- Save a screenshot or PDF of the preview as evidence, then stop at Proceed to Verification.
Step 6 — the e-verification routes
| Route |
Prerequisite |
You do |
They do |
| Aadhaar OTP |
Aadhaar linked to PAN, mobile registered with UIDAI |
Select it, reach the OTP box |
Enter the OTP |
| Net banking |
Bank on the portal's list, linked to PAN |
Select the bank, reach the redirect |
Sign in, confirm |
| Bank EVC |
A validated, EVC-enabled account |
Select it, reach Generate EVC |
Generate and enter it |
| DSC |
Registered current DSC, signer utility running |
Select DSC, reach the token prompt |
Token, PIN, sign |
All four end in an act that is not yours; say which applies and what will appear on screen. DSC is mandatory
rather than optional for some categories (for example companies and tax-audit cases) — verify which for this
assessee and AY. A return not verified within the window is treated as never filed. Never state that
window from memory; read it off the confirmation screen or python3 scripts/fortax.py kb "e-verification time limit ITR" --topics itr.
Output and handover
In <Client>/<FY>/ITR/, dated: the readiness note, a download manifest (each path and date), the
preview-versus-working-paper comparison, and the acknowledgement number once it exists — never a submitted
return. Hand over with the exact next click, the verification route that applies, and:
- Check before filing: AY on screen matches the computation; the form matches; preview totals match the
working paper; amount payable reads zero with the self-assessment challan reflected; the refund account is
validated and nominated; every AIS entry is in the return or explained.
- A Rules used block for every date, window, fee or limit relied on, with source URL and date checked
(from
kb or the portal), or marked "confirm on the portal".
1---2name: fortax-itr-portal-operations3description: Work the income tax e-filing portal (incometax.gov.in) end to end for a client - new taxpayer registration, representative assessee requests, bank account validation and refund nomination, Aadhaar-PAN and contact checks, downloading 26AS, AIS, TIS, pre-filled JSON and filed returns, uploading the ITR and comparing the preview - then stop at the CA's e-verification. Typical asks - "portal pe register karo", "26AS aur AIS download karo", "bank account validate nahi ho raha", "pre-filled JSON nikal do", "ITR upload karke preview check karo", "legal heir registration".4license: Apache-2.05---67# Income tax portal operations (incometax.gov.in)89Needs Python 3 and internet: runs `scripts/fortax.py` (the Fortax engine on ai.fortax.in; your file is processed and not stored).1011## Do the work, then stop at the last click1213Everything before Submit and e-Verify is yours: registration screens, profile repairs, downloads, the14pre-filled JSON, every field on the upload screen. Passwords, OTPs, captcha, DSC/EVC signing, payment and the15final Submit belong to the CA or the taxpayer. **Refusing a portal run because it ends in an OTP is a16failure.** Say what you will do and where you will stop, then start.1718Open the portal in your browser tool (Claude in Chrome, a Playwright/browser MCP, or the Codex browser). If19you have none, give the CA the exact click path and the values to type, screen by screen. The CA logs in;20never type or store a password.2122## Step 0 — fix the year and the person2324FY is April to March; AY = FY + 1. Fix both before opening a screen and carry them into every header and25file name. Portal screens ask for AY, not FY, and the wrong pick files against the wrong year with no26warning. Confirm PAN, date of birth or incorporation, and who is filing — the taxpayer, or the CA as27authorised representative / representative assessee. That decides which login is used.2829## Step 1 — registering a new taxpayer3031Take the Register path on the e-filing site and fill from the documents in the client folder.3233| Screen | Needs | From |34|---|---|---|35| Basic details | PAN, name, DOB/DOI, residential status | PAN card, incorporation certificate |36| Category | Individual, HUF, firm, company, trust | Constitution proof, the CA's client details |37| Contact | Primary mobile and email, and whose they are | The CA states this; never assume |38| Address | As per PAN records | PAN card or Aadhaar; a mismatch here delays the OTP letter |3940Name and DOB must match the PAN database character for character. That mismatch is the commonest41registration failure — check it against the PAN card before typing, and flag it rather than "correct" it.42Then stop: **the two OTPs and the password are the CA's.** Say which OTPs are coming and to where.4344## Step 2 — representative assessee4546For a taxpayer who cannot act — deceased, minor, of unsound mind, outside India. The representative raises47the request under their own login, naming the taxpayer, with the legal heir or equivalent certificate, the48death certificate where relevant, and both PANs. Prepare it, upload the annexures, stop at submission.49Approval is the department's and takes time — look the turnaround up, never promise one, and raise the50request first, because nothing can be filed for that taxpayer until it is approved.5152## Step 3 — profile items that block a filing (do these before any return work)5354- **Bank account validation.** At least one validated account. Validation fails on a name, PAN or IFSC55 mismatch with the bank's record. Read the status column and report exactly what it says — Validated, in56 progress, or Failed with its reason.57- **Refund nomination.** A validated account is not automatically the refund account; confirm the58 nomination is on for the one the CA intends.59- **Contact validation.** Mobile and email verified in My Profile — an unverified contact breaks Aadhaar OTP.60- **Aadhaar–PAN linkage** affects the return, the refund and TDS credit. Look the fee and consequence up61 (`python3 scripts/fortax.py kb "PAN Aadhaar link fee inoperative PAN" --topics itr`); never state them62 from memory.63- **DSC and principal contact / key person** registration for a company, firm or LLP.6465Write findings to `ITR_portal_readiness_<PAN>_AY<year>.md` in `<Client>/<FY>/ITR/`, one row per item with66status and a fix owner.6768## Step 4 — the downloads6970| Document | Where | Note |71|---|---|---|72| Form 26AS | e-File -> Income Tax Returns -> View Form 26AS (redirects to TRACES) | Accept the redirect; the list is AY-wise |73| AIS and TIS | AIS menu, per FY | Take both; TIS is derived, AIS is the source. JSON is easier to parse than PDF |74| Pre-filled JSON | e-File -> File Income Tax Return, or Download Pre-filled Data | Per AY and per form |75| Filed returns, ITR-V, intimations | e-File -> Income Tax Returns -> View Filed Returns | Prior-year carry-forward, comparison |7677Work one tab per client per portal, and re-read the page before every click, because element references78change. Files are password protected in the format the portal states (commonly PAN in lower case plus79DOB) — note the format, never a password value. Save into `<Client>/<FY>/ITR/` unrenamed and announce every80path. A pre-filled figure is not a sourced one; it reconciles against the documents like anything else81(the `fortax-itr` skill, Step 2).8283## Step 5 — uploading the return84851. Confirm the return data — built with the `fortax-itr` skill, not here — is for the same AY and the same86 form as the computation.872. e-File -> Income Tax Returns -> File Income Tax Return -> AY -> Online, or offline JSON upload.883. Upload and let the portal validate. Fix nothing on the portal ad hoc: each validation defect goes back to89 the computation, is corrected there, and the JSON is regenerated. (Known portal quirks and the90 validation-defect catalogue: `fortax-itr` `references/portal-workflow.md`.)914. Read the preview and compare it against the working paper line by line. Report any difference; never92 adjust the portal to match the paper, or the paper to match the portal.935. Save a screenshot or PDF of the preview as evidence, then stop at Proceed to Verification.9495## Step 6 — the e-verification routes9697| Route | Prerequisite | You do | They do |98|---|---|---|---|99| Aadhaar OTP | Aadhaar linked to PAN, mobile registered with UIDAI | Select it, reach the OTP box | Enter the OTP |100| Net banking | Bank on the portal's list, linked to PAN | Select the bank, reach the redirect | Sign in, confirm |101| Bank EVC | A validated, EVC-enabled account | Select it, reach Generate EVC | Generate and enter it |102| DSC | Registered current DSC, signer utility running | Select DSC, reach the token prompt | Token, PIN, sign |103104All four end in an act that is not yours; say which applies and what will appear on screen. DSC is mandatory105rather than optional for some categories (for example companies and tax-audit cases) — verify which for this106assessee and AY. A return not verified within the window is treated as never filed. **Never state that107window from memory**; read it off the confirmation screen or `python3 scripts/fortax.py kb "e-verification108time limit ITR" --topics itr`.109110## Output and handover111112In `<Client>/<FY>/ITR/`, dated: the readiness note, a download manifest (each path and date), the113preview-versus-working-paper comparison, and the acknowledgement number once it exists — never a submitted114return. Hand over with the exact next click, the verification route that applies, and:115116- **Check before filing**: AY on screen matches the computation; the form matches; preview totals match the117 working paper; amount payable reads zero with the self-assessment challan reflected; the refund account is118 validated and nominated; every AIS entry is in the return or explained.119- A **Rules used** block for every date, window, fee or limit relied on, with source URL and date checked120 (from `kb` or the portal), or marked "confirm on the portal".