Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Fortax Reconciliation

ASecurity

Reconcile two sets of records that should agree and explain every difference before any adjustment - books vs return (GSTR-1/3B/2B vs registers, 26AS/AIS vs books), control account vs subledger (debtors, creditors, fixed asset register, stock), bank vs books, related-party / group balances, a trial balance that does not tie. Narrows the gap to rows, tests one cause at a time, categorises reconciling items, ages them and states what stays open. Typical asks - "difference nikalo", "2B aur books...

2 stars
0 votes
0 copies
0 views
Added 9/28/2026
ai-agentspythongogit

Works with

cli

Security Analysis

A100/100

Scanned 9/28/2026

Install to Claude Code

$npx -y skills add amit-voais/fortax-skills --skill fortax-reconciliation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fortax Reconciliation?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Fortax Reconciliation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/amit-voais-fortax-reconciliation/badge)](https://www.skillsdirectory.com/skills/amit-voais-fortax-reconciliation)

More formats (shields.io, HTML) on the badges page.

Files
SKILL.md
---
name: fortax-reconciliation
description: Reconcile two sets of records that should agree and explain every difference before any adjustment - books vs return (GSTR-1/3B/2B vs registers, 26AS/AIS vs books), control account vs subledger (debtors, creditors, fixed asset register, stock), bank vs books, related-party / group balances, a trial balance that does not tie. Narrows the gap to rows, tests one cause at a time, categorises reconciling items, ages them and states what stays open. Typical asks - "difference nikalo", "2B aur books me farak kyun hai", "26AS match nahi ho raha", "TB tally nahi ho raha", "debtors ledger aur control account alag hai".
license: Apache-2.0
metadata:
  author: Fortax
  version: "1.0.0"
  homepage: https://github.com/amit-voais/fortax-skills
  credits: "Reconciliation types, item categories, ageing and escalation adapted from anthropics/knowledge-work-plugins, https://github.com/anthropics/knowledge-work-plugins (Apache-2.0)"
---

# Reconciliation — find the difference, then explain it

Needs Python 3 and internet: runs `scripts/fortax.py` (the Fortax engine on ai.fortax.in; your file is processed and not stored).

Verdict first: two records agree, or they differ by an exact amount made of named items plus an
unexplained balance. This skill helps prepare the working; the CA reviews and signs it off.

## The rule

**No adjustment before the cause is known.** A difference that is plugged, rounded away, or
"adjusted to match" is not reconciled — it is hidden, and it will surface in a notice.

This applies hardest when the difference is small. A Rs 118 gap is a wrong tax rate somewhere; a Rs 1
gap is a rounding rule you have not identified yet. Size is not evidence of harmlessness.

## Use an engine where one exists

| Pair | Do this |
|---|---|
| GSTR-2B vs purchase register | `fortax-gstr2b-reconciliation` (`fortax.py gstr2b`) — it matches; you judge its `_pairs_to_judge.json` |
| GSTR-1 / 3B vs sales register | `fortax-gstr1-and-3b` (`fortax.py gstr1`) |
| Bank statement vs books | `fortax-bank-statement-to-books` (`fortax.py bank`, then its BRS part) |
| Everything else | this skill, with the matching done in a script or a workbook with formulas (`fortax-xlsx-manipulation`) |

Numbers come from code: never add a column, compute a difference or count items by eye.

## When to use

Any two records that should agree and do not:

- GSTR-2B against the purchase register; GSTR-1 against the sales register; 3B against both.
- 26AS / AIS / TIS against the books or the computation.
- A trial balance that does not tie; a control account against its subsidiary ledger.
- A portal figure that differs from the working paper.
- Balances between related entities (holding / subsidiary, group companies, branches).
- A total that changed between two versions of your own file.

## Step 1 — state the difference exactly

Before anything else, write one line:

> As per <source A> Rs X; as per <source B> Rs Y; difference Rs Z (A - B), for <entity>, <period>.

Get the period, the entity and the sign right. Half of all "differences" are two documents covering
different months, or one figure inclusive of tax and the other not.

## Step 2 — narrow it before you explain it

Split the difference until it is a small set of rows, not one number:

- By month, then by party, then by invoice.
- By tax head — IGST, CGST, SGST, cess separately. A gap that vanishes when heads are separated is a
  classification issue, not a value issue.
- By status — matched, unmatched in A, unmatched in B, matched but different value.

Stop splitting when each remaining row can be explained on its own.

## Step 3 — the usual causes, checked in order

Check these before inventing a theory. Each is a fact you can confirm from the files:

| Cause | How you confirm it |
|---|---|
| Timing | The invoice exists in both, in different periods |
| Not filed by the supplier | Present in the register, absent from 2B; the supplier's return status says so |
| Wrong GSTIN or PAN | The party's identifier differs between the two records |
| Reverse charge, or ineligible credit | The entry is correctly excluded from one side by rule |
| Rate or head applied differently | Same taxable value, different tax split |
| Debit or credit note not carried through | One side nets it, the other does not |
| Rounding | The gap is under Rs 1 per line and matches the line count |
| Duplicate | The same invoice number appears twice on one side |

Typical causes by type of reconciliation are in the next section.

## Step 4 — one hypothesis at a time

State it in writing: "I think Rs Z is <cause>, because <the rows that show it>." Then test only that,
against the source document — not against your own earlier working. If it does not hold, say so and
take the next hypothesis. Never stack two guesses.

## Step 5 — when it still does not tie

After three explanations that do not hold, stop. Do not keep adjusting. Write the CA a short note: the
exact difference, the rows you isolated, what you ruled out and how, and what you would need to settle
it — usually a document, a supplier or party confirmation, or a portal download. An honest open
difference is a working paper. A forced tie is a liability.

## Reconciliation types

### Control account vs subledger

Compare the ledger control balance to the detailed subsidiary balance at the same date.

- Sundry debtors (control vs party-wise ageing), sundry creditors (control vs party-wise ageing).
- Fixed assets (ledger vs fixed asset register — Companies Act and Income-tax blocks separately).
- Inventory (stock ledger vs valuation / stock statement given to the bank).
- Prepaid expenses (ledger vs amortisation schedule); provisions and outstanding expenses (ledger vs
  the detail schedules).

Process: pull the control balance at period end; pull the subledger detail at the same date; compare
totals (they should match if posting is real-time); investigate differences.

Common causes: a journal passed directly to the control account and not in the subledger; subledger
transactions not yet posted to the ledger; timing of batch posting; a reclassification in the ledger
without the subledger; an import or interface error.

### Bank vs books

Use `fortax-bank-statement-to-books` Part B. In brief: bank balance; add deposits in transit; less
cheques issued not presented; add/less bank errors = adjusted bank balance. Book balance; add interest
and credits not recorded; less charges not recorded; add/less book errors = adjusted book balance.
Difference must be 0.00.

### Related-party and group balances

Balances between related entities should net to zero on consolidation and agree for the related-party
disclosure (AS 18 / Ind AS 24, s.188 Companies Act).

1. Pull the receivable/payable for each entity pair.
2. Compare A's receivable from B with B's payable to A.
3. Identify and resolve differences; confirm every transaction is recorded on both sides.
4. Check the elimination entries used for consolidation.

Common causes: one entity recorded it, the other has not yet (timing); different exchange rates;
classified as third-party on one side; disputed amounts or unapplied payments; different cut-off
practice; TDS deducted by the payer shown net on one side and gross on the other.

### Tax records vs books

- 26AS / AIS vs books: TDS credit by deductor TAN and section; income shown in AIS that is not in books;
  a deductor who deducted but filed against a wrong PAN. Confirm with the deductor's Form 16A.
- GST returns vs books: see the table above; for the annual view see `fortax-gst-annual-return`.

## Categorise every reconciling item

**Category 1 — timing differences.** Clear on their own in the normal cycle; no entry needed:
cheques issued not presented, deposits in transit, items posted in one system and pending in the other,
transactions awaiting approval. Expected to clear within a few working days.

**Category 2 — adjustment required.** Need a journal entry (prepare it with `fortax-journal-entry`):
unrecorded bank charges, unrecorded interest, recording errors (wrong amount, wrong ledger, duplicate),
missing entries, classification errors.

**Category 3 — requires investigation.** Cannot be explained yet: unidentified differences, disputed
items, aged items that should have cleared, the same unexplained difference every period. Investigate
the root cause, document it, escalate if unresolved.

## Ageing of open items

| Age | Status | Action |
|---|---|---|
| 0-30 days | Current | Monitor — within the normal cycle |
| 31-60 days | Ageing | Investigate — why has it not cleared |
| 61-90 days | Overdue | Escalate to the reviewer; document the investigation |
| 90+ days | Stale | Escalate to the CA / management; possible write-off or adjustment |

Report format:

| Item # | Description | Amount (Rs) | Date originated | Age (days) | Category | Status | Owner |
|---|---|---|---|---|---|---|---|

Compute the age with a formula (`=<period end> - <date>`), not by counting.

Trending: compare total open items with last period; flag if the total exceeds the materiality level,
if the count grows period on period, or if the same item recurs every period (a process problem).

## Escalation thresholds (illustrative — set with the CA for each client's size)

| Trigger | Example threshold | Escalate to |
|---|---|---|
| Single item | above Rs 1 lakh | Reviewer |
| Single item | above Rs 10 lakh | CA / partner |
| Total reconciling items | above Rs 25 lakh | CA / partner |
| Item age | over 60 days | Reviewer follow-up |
| Item age | over 90 days | CA / management |
| Unexplained difference | any amount | Cannot close — resolve or document as open |
| Growing trend | 3+ consecutive periods | Process fix |

## Good practice

1. **On time:** finish within the close timetable (typically 3-5 working days after period end, and
   before the return that depends on it).
2. **Complete:** reconcile every balance sheet account on a set frequency — monthly for material ones,
   quarterly for the rest.
3. **Documented:** preparer, reviewer, date, and a clear explanation of every reconciling item.
4. **Segregated:** whoever reconciles should not be the person who posts to that account.
5. **Followed through:** track open items to resolution; do not carry them forward indefinitely.
6. **Root cause:** for recurring items, fix the process that causes them.
7. **Standard:** the same template for every account.
8. **Retained:** keep reconciliations and support for the statutory period (books of account: 8 years
   under s.128 Companies Act; confirm for the entity and the tax law).

## Output

Into the client folder next to the inputs (`<Client>/<FY>/<GST|ITR|Bank|Audit>/`), with entity and
period in the name:

- A reconciliation sheet: matched, unmatched each way, value differences, with a `Source` column on
  every row and the category and age of every open item.
- A difference statement: opening gap, each explained item with its cause and amount, closing
  unexplained gap — all by formula.
- **Any unexplained balance is a blocker in your summary to the CA, not a footnote.**

## Credit

Reconciliation types, item categories, ageing and escalation are adapted from
anthropics/knowledge-work-plugins (Apache-2.0). Changed by Fortax: rewritten for Indian practice
(GST, 26AS, Companies Act, rupee thresholds) and merged with Fortax's find-the-difference method.

Attribution

amit-voaisamit-voais
View sourceMore from amit-voais →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

695601 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →