This tool reads messy broker, demat and mutual-fund statements and compiles them into an ITR-shaped capital-gains working: a Schedule CG summary, a scrip-wise Schedule 112A, an AIS reconciliation, and a one-page review memo. It is built on one principle — the AI only reads; the tax arithmetic is done in fixed code. No figure on screen is a language-model guess.
The workflow is a pipeline with reviewable stops at every stage: extract → review → compute → reconcile → render.
Have these ready (any combination — the tool accepts partial inputs and flags gaps):
.csv / .xlsx — spreadsheets are read and converted to text automatically.Prefer to skip the AI entirely? Go straight to the ledger and use + Add row for fully manual entry. The tool then works as a pure calculator.
Every cell is editable. Reconcile each row against your source and AIS/TIS before compiling. Field guide:
| Field | What to enter |
|---|---|
| Scrip / Unit | Security or scheme name. |
| ISIN | The ISIN if available — it is the strongest key for AIS matching. |
| Asset type | Drives the whole classification. See the dropdown options in Section 9. |
| Qty | Number of shares/units in this lot. Needed for grandfathering (FMV × qty). |
| Buy / Sell date | YYYY-MM-DD. Determines the holding period. |
| Buy value | Total acquisition cost for the quantity (include charges if your source does). Leave blank if genuinely unknown — it will be flagged, not silently assumed. |
| Sell value | Total net sale consideration for the lot. |
| STT | Tick if Securities Transaction Tax was paid (normal on-exchange delivery). Un-tick for off-market sales — this changes the section (see note below). |
| FMV/unit 31-01-18 | Per-unit FMV on 31-Jan-2018. Enter only for STT-paid equity bought before 01-Feb-2018; otherwise leave blank. |
| Gain (source) | Optional. The gain your broker states. The tool recomputes independently and flags any difference, so you can see grandfathering/charge effects. |
When the ledger is correct, click Compile.
The output mirrors the ITR:
If any row has a hole (missing date, cost, sale value, or unresolved type), the summary shows provisional totals up top and confirmed totals (resolved rows only) beneath. Resolve the flagged rows to make them equal.
STCG (slab) marginal rate — slab-rate short-term gains are added to total income, not taxed at a flat rate. Leave as "Add to total income" or pick a rate for an indicative estimate.
Surcharge — depends on total income; capped at 15% for 111A/112A/112. Set it if it applies.
The agent reads the AIS; fixed code then aggregates both sides by ISIN (AIS reports one line per security, your ledger is lot-wise) and compares. The flags:
| Flag | Meaning | What to do |
|---|---|---|
| Matched | Present in both, sale value agrees within tolerance. | Nothing. |
| Value mismatch | Same security, different sale consideration. | Check for a missed lot, charges, or a wrong figure. |
| In AIS, not in ledger | A disposal the department sees that your working misses. | Investigate — likely omission. |
| In ledger, not in AIS | In your working but not reported in AIS. | Often fine (off-market, non-reporting broker) — or a duplicate to remove. |
After compiling, click Generate review memo (PDF). You get a one-page, RMA-letterhead document carrying the client/PAN/AY block, the section-wise computation and tax, any business income, the AIS reconciliation verdict with the actual omissions and mismatches listed, and the full exception list. The file is named with the client's name, e.g. CapitalGains_ReviewMemo_T_Sreedhar_AY2026-27.pdf.
For AY 2026-27 the full year falls on/after 23-Jul-2024, so one rate set applies throughout. How each asset type is treated:
| Asset type | Long-term if held | Short-term head | Long-term head |
|---|---|---|---|
| Listed equity (STT) | > 12 months | 111A · 20% | 112A · 12.5%* |
| Equity mutual fund | > 12 months | 111A · 20% | 112A · 12.5%* |
| REIT / InvIT / business trust | > 12 months | 111A · 20% | 112A · 12.5%* |
| Listed bonds / debentures | > 12 months | slab | 112 · 12.5% |
| Unlisted shares | > 24 months | slab | 112 · 12.5% |
| Debt MF bought < 01-Apr-23 | > 24 months | slab | 112 · 12.5% |
| Debt MF bought ≥ 01-Apr-23 | always short-term (Sec 50AA) | slab | — |
| Other asset | > 24 months | slab | 112 · 12.5% |
| Intraday equity | Speculative business income — not capital gains. Sets off only against speculative income; carry-forward 4 years. | ||
| F&O / derivatives | Non-speculative business income — not capital gains. Normal business set-off; carry-forward 8 years. | ||
* LTCG u/s 112A is taxed at 12.5% only on the amount above the ₹1,25,000 annual exemption. Equity sold without STT moves to slab / 112. Grandfathering (cost stepped up to the 31-Jan-2018 FMV, capped at sale value) applies only to STT-paid equity acquired before 01-Feb-2018. Health & Education cess of 4% applies on the tax. Section 87A rebate is not available against these special-rate gains.
| Symptom | Fix |
|---|---|
| "Could not parse" after Extract / Reconcile | The statement was too large for one pass. Split it into smaller blocks, or enter rows manually. |
| "No disposals detected" | The text had no recognisable sale rows. Paste the transaction section specifically, or add rows by hand. |
| A row sits in the wrong section | Check the Asset type and the STT tick — together they decide the head. Edit and re-Compile. |
| Totals look too high | Look for rows flagged "missing cost base" — a blank buy value makes the gain overstated. These appear under provisional, not confirmed. |
| Amounts show "Rs" not ₹ in the memo | Expected — the PDF font lacks the ₹ glyph. Screen and CSV keep ₹. |
| On rmaaca.in: "API 500 / could not parse" | The proxy is not reaching Anthropic. Confirm ANTHROPIC_API_KEY is set in Netlify and that CLAUDE_ENDPOINT points to /.netlify/functions/claude. |