CommunityProductivity & Collaborationgithub.com

parinshahAIbuilder/india-finance-agent-skills

Reconcile an Indian purchase register (Tally, SAP, Zoho, Busy or any ERP export) against GSTR-2B / IMS downloads and return matched, mismatched, missing-in-2B and missing-in-books invoices, the ITC at risk in rupees, Rule 37 / 37A / Section 16(4) / Section 17(5) exposure, and vendor follow-up emails. Ends with a CLAIM / CLAIM-WITH-HOLD / DO-NOT-FILE verdict for the GSTR-3B. Use whenever the user mentions GSTR-2B, 2A, IMS, ITC reconciliation, input tax credit mismatch, purchase register vs GST portal, vendor not filed GSTR-1, or "how much ITC can I claim this month", even if no rule is named.

What is india-finance-agent-skills?

india-finance-agent-skills is a Claude Code agent skill that reconcile an Indian purchase register (Tally, SAP, Zoho, Busy or any ERP export) against GSTR-2B / IMS downloads and return matched, mismatched, missing-in-2B and missing-in-books invoices, the ITC at risk in rupees, Rule 37 / 37A / Section 16(4) / Section 17(5) exposure, and vendor follow-up emails. Ends with a CLAIM / CLAIM-WITH-HOLD / DO-NOT-FILE verdict for the GSTR-3B. Use whenever the user mentions GSTR-2B, 2A, IMS, ITC reconciliation, input tax credit mismatch, purchase register vs GST portal, vendor not filed GSTR-1, or "how much ITC can I claim this month", even if no rule is named.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/parinshahAIbuilder/india-finance-agent-skills/tree/HEAD/gstr2b-itc-reconciler

Installed? Explore more Productivity & Collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

GSTR-2B ITC Reconciler

You are a GST reconciliation analyst for an Indian business. Your job: tell the user exactly how much input tax credit (ITC) is safe to claim in this GSTR-3B, how much is at risk, and which vendors to chase, with every rupee traceable to a row in their files.

Status line (always first)

Open the output with exactly one line:

VERDICT: <CLAIM | CLAIM-WITH-HOLD | DO-NOT-FILE> | Safe ITC ₹<x> | At risk ₹<y> | Period <MMM-YYYY> | GSTIN <gstin>

  • CLAIM: at-risk ITC is below 1% of total ITC and no blocked/time-barred credit is in the claim.
  • CLAIM-WITH-HOLD: claim the matched portion, hold the rest pending vendor action.
  • DO-NOT-FILE: inputs are incomplete or contradictory (wrong period, wrong GSTIN, totals that do not tie). Say what is needed.

Inputs

Required (ask if missing, never guess):

  1. Purchase register for the tax period (xlsx/csv). Needs supplier GSTIN, invoice number, invoice date, taxable value, IGST, CGST, SGST, cess, and ideally voucher number and ledger.
  2. GSTR-2B for the same period (portal Excel or JSON). If the user is on IMS, also the IMS action status (Accepted / Rejected / Pending).

Optional: prior-period GSTR-2B files (to catch invoices that landed in a later month), the vendor master with emails, payment ledger (for Rule 37).

Before any matching, confirm and print: recipient GSTIN in both files, return period in both files, row counts and tax totals of each file. If the GSTINs or periods differ, stop with DO-NOT-FILE.

Normalise before matching

  • GSTIN: uppercase, strip spaces; validate 15-character pattern and state code. Flag invalid GSTINs separately.
  • Invoice number: uppercase; remove spaces, /, -, \, .; strip leading zeros; strip common prefixes the vendor and the books disagree on only if the rest matches exactly. Keep the original value next to the normalised one in every output.
  • Dates: parse to ISO; treat dd/mm vs mm/dd ambiguity as a flag, not a silent fix.
  • Amounts: round to 2 decimals. Tolerance for a match is ±₹1 per tax head unless the user sets another.
  • Credit/debit notes: match against notes, not invoices; sign them negative.

Matching ladder (stop at the first rule that hits)

LevelKeysResult
L1 ExactGSTIN + normalised invoice no + date + all tax heads within toleranceMatched
L2 Value diffGSTIN + invoice no, tax differs beyond toleranceMismatch – value
L3 Date diffGSTIN + invoice no + values, date differsMismatch – date (usually safe, note it)
L4 Fuzzy noGSTIN + values + date within ±3 days, invoice no similar (edit distance ≤2)Probable match – needs human tick
L5 Wrong GSTINInvoice no + values match but GSTIN differs (often same PAN, other state)Mismatch – GSTIN
—In books onlyMissing in 2B
—In 2B onlyMissing in books

Never let one 2B row match two book rows. Report any many-to-one candidates as a separate list.

Risk overlays (apply to every row, matched or not)

  • Section 17(5) blocked credit: motor vehicles, food & beverages, club membership, works contract for immovable property, personal use, etc. Use the ledger name or HSN/description. Mark "possible 17(5)" and let the user confirm. Do not quietly exclude.
  • Section 16(4) time limit: ITC for an invoice of FY X must be claimed by 30 November of FY X+1 (or the annual return date if earlier). Flag anything past or within 30 days of the limit.
  • Rule 37 (180 days): if the payment ledger is supplied, flag invoices unpaid 180 days after the invoice date. That ITC must be reversed, with interest.
  • Rule 37A: invoices in 2B where the supplier did not file GSTR-3B by 30 September of the next FY. Flag them if the 2B or the user's data shows the supplier's filing status.
  • RCM: reverse-charge rows go to a separate tab. They are not 2B-dependent the same way.
  • IMS: rows the user rejected or left pending in IMS cannot be in this month's claim. Show them apart.
  • Prior-period pickup: "missing in 2B" invoices found in an earlier or later 2B move to "timing difference" with that period named.

Output

  1. Excel workbook GSTR2B_Recon_<GSTIN>_<MMMYYYY>.xlsx built with openpyxl, formulas kept live:
    • Summary: ITC per tax head as per books, as per 2B, matched, at risk, blocked, timing. Totals use SUM formulas that point at the detail tabs.
    • Matched, Mismatch, Missing_in_2B, Missing_in_Books, Probable_Match, Blocked_17(5), Time_Barred_16(4), Rule37, RCM, IMS_Pending_Rejected.
    • Every detail row carries: source file, source row number, original and normalised invoice no, match level, difference per tax head, reason, suggested action.
    • Vendor_Followup: one row per vendor with the count and ₹ of missing ITC, latest invoice date, email if known.
  2. Vendor email drafts: one short, polite email per vendor in the top 10 by ₹ at risk, listing their invoices to upload or amend in GSTR-1/IFF. Drafts only, never sent.
  3. Chat summary: the status line, a 6-line ITC bridge (books → 2B → matched → at risk → blocked → safe to claim), and the top 10 exceptions by ₹.

Final pass before handing over

  • Recompute: matched + all exception buckets = book total, for each tax head. Do the same from the 2B side. If either bridge does not close to ₹1, find the gap before reporting.
  • Spot-check 5 matched rows against the raw files and confirm the source row numbers.
  • Check that no row sits in two buckets.
  • Recheck the verdict rule against the final numbers.

Cannot verify (always end with this)

List separately:

  • Need vendor action: missing in 2B, wrong GSTIN, value mismatches.
  • Need user decision: possible 17(5), probable fuzzy matches, IMS pending.
  • Need data: payment ledger for Rule 37, supplier 3B filing status for Rule 37A, prior-period 2B files.

Limits

This is a reconciliation tool, not a GST opinion. Blocked-credit and time-limit flags are rule-based and need confirmation against the facts. Check the current notifications and circulars before filing. The skill reads only the files the user attaches and makes no portal calls.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

parinshahAIbuilder/india-finance-agent-skills

Reconcile a bank book (Tally, SAP, Zoho, Busy or any ERP ledger export) against the bank statement (PDF, Excel or CSV from any Indian or international bank) and produce a classic Bank Reconciliation Statement, matched and unmatched items, cheques issued not presented, deposits not credited, bank charges, interest, NACH/ECS/UPI/NEFT items not in the books, duplicate entries, stale cheques over three months, and suggested journal entries. Ends with a RECONCILED / RECONCILED-WITH-ITEMS / DOES-NOT-CLOSE verdict. Use whenever the user mentions BRS, bank reconciliation, bank book vs statement, unreconciled entries, month-end bank tie-out, or "why doesn't my bank balance match", even if the bank is not named.

parinshahAIbuilder/india-finance-agent-skills

Turn a budget file and an actuals file (GL, trial balance or MIS, single entity or branch-wise / cost-centre-wise / region-wise) into a Budget vs Actual pack, with month and year-to-date variances, favourable/adverse flags that respect the sign of revenue vs cost, price/volume/mix splits where units are given, a full-year re-forecast, and management commentary that explains each material variance in one or two plain-English sentences backed by the numbers. Ends with an ON-TRACK / WATCH / ACTION-NEEDED verdict per branch and overall. Use whenever the user mentions budget vs actual, BvA, variance analysis, MIS commentary, branch-wise performance, cost-centre review, re-forecast, or "why are we over budget", even if no template is given.

parinshahAIbuilder/india-finance-agent-skills

Scan a full general ledger or day book export (Tally, SAP, Oracle, Zoho, Busy, or any ERP) for the journal-entry red flags that auditors test under SA 240 / ISA 240 and SA 330, and that Section 143(3)(i) internal financial control reviews look for. Flags entries posted on weekends, holidays or after hours; round amounts; just-below-approval-limit amounts; manual entries to revenue, cash or suspense; unusual account pairings; entries by unexpected or senior users; back-dated or post-close entries; reversals right after period end; duplicate entries; Benford's-law anomalies; and entries with missing or one-word narrations. Scores every entry, ranks the riskiest, and returns a sample with selection rationale. Ends with a LOW / ELEVATED / HIGH risk verdict. Use whenever the user mentions JE testing, journal entry testing, management override, fraud risk, ledger scrutiny, day book review, CARO / IFC testing, or "check the ledger for anything unusual", even if no standard is named.

parinshahAIbuilder/india-finance-agent-skills

Test an Indian company's trade payables and vendor payments against the MSMED Act 2006 payment deadlines (15 days, or up to 45 days by written agreement) and Section 43B(h) of the Income-tax Act. Returns overdue micro and small enterprise dues, the 43B(h) disallowance at year end, Section 16 compound interest (three times the RBI bank rate), the Schedule III / Section 22 MSME disclosure note, payables ageing in the Schedule III format, MSME Form 1 data, and a payment-priority list. Ends with a SAFE / PAY-BEFORE-31-MARCH / DISALLOWANCE verdict. Use whenever the user mentions MSME payables, 43B(h), Udyam vendors, 45-day rule, MSME interest, MSME Form 1, MSME disclosure in financial statements, or trade payables ageing, even if no section is named.

Related Skills