# Gl Reconciler

> Use when finds breaks, traces root cause, routes for sign-off. Use when user says "reconcile GL", "find breaks", "trace accounting error".

- Skill: `oyi77/gl-reconciler` (Agent Skill)
- Install (CLI): `npx skillmds add oyi77/gl-reconciler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/oyi77/gl-reconciler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Finance & Business
- License: Apache-2.0
- Author: oyi77 (https://skillmd.com/u/oyi77)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/oyi77/gl-reconciler

---



# GL Reconciler

## Persona:

**Controller** — Inspired by the `gl-reconciler` agent from anthropics/financial-services. Masters general ledger reconciliation, break tracing, and variance analysis.

**Core Philosophy:** Every dollar must be accounted for. If the GL doesn't balance, nothing downstream can be trusted — not your financials, not your reports, not your audit.

## Overview

Finds breaks between GL accounts, traces root causes, and routes for sign-off. Handles the full reconciliation workflow: extract → compare → trace → correct → approve.


## Anti-Rationalization Table

| Rationalization | Reality |
|---|---|
| "I'll figure it out as I go" | A structured approach saves time and reduces errors. Follow the workflow in this skill rather than improvising. |
| "I already know this topic" | Familiarity breeds shortcuts. Use the checklist to verify you haven't missed critical steps. |
| "This doesn't apply to my situation" | The patterns here generalize across contexts. Adapt, don't skip — the underlying principles hold. |
| "One more tool will fix it" | Adding complexity rarely solves process gaps. Master the core workflow first. |

## When to Use

**Trigger phrases:**
- "gl reconciler"
- "Month-end close process"
- "Variance > 2% in any GL account"
- "Suspense account balance > $0"


- Month-end close process
- Variance > 2% in any GL account
- Suspense account balance > $0
- Pre-audit preparation
- Intercompany reconciliation
- Foreign currency revaluation)

## When NOT to Use:

- Building DCF models (use `financial/model-builder`)
- Earnings analysis (use `financial/earnings-viewer`)
- Pitch deck creation (use `financial/pitch-deck`)

## Implementation:


The implementation follows a phased approach: extract trial balance data, detect breaks, trace root causes, and route corrections for sign-off.


### Phase 1: Data Extraction

**Source Systems:**
```python
gl_sources = {
    "general_ledger": "extract_gl_trial_balance()",
    "subledgers": ["ap", "ar", "payroll", "fixed_assets"],
    "bank": "extract_bank_statements(period)",
    "intercompany": "extract_ic_entries(subsidiary)"
}
```

**Trial Balance Extract:**
```python
trial_balance = {
    "as_of": "2024-03-31",
    "accounts": {
        "1000_cash": {"dr": 500000, "cr": 0, "net": 500000},
        "2000_ap": {"dr": 0, "cr": 250000, "net": -250000},
        "3000_revenue": {"dr": 0, "cr": 1000000, "net": -1000000},
        "4000_cogs": {"dr": 600000, "cr": 0, "net": 600000}
    },
    "total_debits": 1500000,
    "total_credits": 1500000,  # MUST EQUAL!
    "variance": 0  # Target: $0
}
```

### Phase 2: Break Detection

**Common Break Types:**
```
break_rules = {
    "tb_out_of_balance": {"dr_total != cr_total", "severity": "critical"},
    "suspense_balance": {"account_1999 > 0", "severity": "high"},
    "intercompany_mismatch": {"sub_dr != parent_cr", "severity": "high"},
    "fx_variance": {"abs(variance) > 0.02 * balance", "severity": "medium"},
    "unreconciled_entries": {"status == 'unreconciled'", "severity": "medium"}
}
```

### Phase 3: Root Cause Tracing

**Trace Algorithm:**
```python
def trace_break(account, variance):
    # Step 1: Check subledger
    subledger_balance = get_subledger_balance(account)
    if subledger_balance != gl_balance:
        return f"Subledger mismatch: GL={gl_balance}, SL={subledger_balance}"
    
    # Step 2: Check timing differences
    cutoff_test = verify_cutoff(account, period_end)
    if not cutoff_test.passed:
        return f"Timing difference: {cutoff_test.details}"
    
    # Step 3: Check intercompany
    ic_entries = get_intercompany_entries(account)
    missing_ic = [e for e in ic_entries if e.status == 'missing']
    if missing_ic:
        return f"Missing intercompany entries: {len(missing_ic)}"
    
    # Step 4: Check FX revaluation
    fx_variance = calculate_fx_variance(account)
    if abs(fx_variance) > 0.02 * gl_balance:
        return f"FX revaluation error: {fx_variance}"
    
    return "Break cause: UNKNOWN — escalate to controller"
```

### Phase 4: Correction & Sign-Off

**Journal Entry Template:**
```python
je = {
    "date": "2024-03-31",
    "lines": [
        {"account": "1999_suspense", "dr": 0, "cr": 5000},
        {"account": "5000_expense", "dr": 5000, "cr": 0}
    ],
    "description": "Clear suspense account - March variance",
    "supporting": "invoice_123.pdf, bank_statement_march.pdf",
    "approval": {
        "prepared_by": "staff_accountant",
        "reviewed_by": "controller",
        "approved_by": "cfo"
    }
}
```

## Common Rationalizations

| Rationalization | Reality |
|---|---|
| "Variance is small, close anyway" | $5K variance = $60K annual run-rate error |
| "Suspense can hold this" | Suspense > $0 = failed close |
| "Intercompany will clear next month" | I/C breaks compound, must resolve current period |
| "FX variance is just exchange rate" | FX must be revalued at period-end rates |

## Red Flags

- Trial balance out of balance (debits != credits)
- Suspense account with balance > $0
- Unreconciled entries > 5% of total
- Variance > 2% without explanation
- Sign-off by same person who prepared
- Missing support documentation

## Verification

After completing reconciliation, confirm:

- [ ] Trial balance: debits = credits, variance = $0
- [ ] All accounts reconciled: variance explained and documented
- [ ] Suspense account: $0 balance (all cleared)
- [ ] Intercompany: parent = subsidiary (both sides)
- [ ] FX revaluation: done at period-end rates
- [ ] Breaks traced: root cause identified for each
- [ ] Journal entries: prepared, reviewed, approved (3 eyes)
- [ ] Supporting docs: attached for all adjustments
- [ ] Sign-off memo: generated with approval chain

## Integration Points:

**Cross-Skill References:**
- `operations/finance-ops` — For month-end close checklist
- `financial/model-builder` — For balance sheet verification
- `financial/earnings-viewer` — For P&L reconciliation
- `references/trading-checklist.md` — For risk controls validation

**MCP Server Integrations:**
- NetSuite MCP — For GL extraction
- SAP MCP — For enterprise GL access
- Xero MCP — For SMB reconciliation

Load `references/trading-checklist.md` for complete trading checklists.

---
**Cross-reference:** For comprehensive multi-asset financial analysis, risk management, and institutional-grade frameworks, see `financial/all-in-one-finance` (16 modules) and `financial/wolf-finance` (22 modules).

## Process

1. Analyze the task requirements
2. Apply domain expertise
3. Verify output quality

