bank-reconciliation

Reconcile bank accounts against QuickBooks Online (QBO) for monthly close, discrepancy investigation, or audit workpapers. Use when a client needs GL vs bank balance matched, unrecorded items caught, or a reconciliation workpaper produced. NOT for payroll reconciliation, AR/AP aging, investment accounts, or intercompany eliminations.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "bank-reconciliation" with this command: npx skills add samledger67-dotcom/bank-reconciliation

Bank Reconciliation Skill

Pipeline: scripts/pipelines/bank-reconciliation.py
Day: 2 of 14-Day Deterministic Pipeline Build


When to Use This Skill

Use when a client needs their bank account reconciled against QBO:

  • Monthly close reconciliation
  • Investigating GL/bank balance discrepancies
  • Catching unrecorded bank fees, interest, or deposits
  • Producing auditor-ready reconciliation workpapers
  • Tracking outstanding checks or deposits in transit

NOT for:

  • Payroll reconciliation (use payroll-recon pipeline)
  • AR/AP aging (use ar-collections pipeline)
  • Investment/brokerage accounts
  • Intercompany eliminations

Requirements

pip install openpyxl
# Node.js QBO client must be connected:
node integrations/qbo-client/bin/qbo connect <slug>

Usage Patterns

1. Standard Run (Chase, auto-detected)

python3 scripts/pipelines/bank-reconciliation.py \
    --slug sb-paulson \
    --end-date 2026-02-28 \
    --bank-csv ~/Downloads/chase_feb2026.csv \
    --bank-ending-balance 42531.87

2. Specific Account Name

python3 scripts/pipelines/bank-reconciliation.py \
    --slug glowlabs \
    --end-date 2026-02-28 \
    --bank-csv ~/Downloads/boa_feb2026.csv \
    --account "Business Checking" \
    --bank-ending-balance 18250.00

3. Wells Fargo (separate debit/credit columns)

python3 scripts/pipelines/bank-reconciliation.py \
    --slug sb-paulson \
    --end-date 2026-02-28 \
    --bank-csv ~/Downloads/wf_feb.csv \
    --bank-format wellsfargo \
    --bank-ending-balance 55000.00

4. Custom Column Mapping (unknown CSV format)

python3 scripts/pipelines/bank-reconciliation.py \
    --slug sb-paulson \
    --end-date 2026-02-28 \
    --bank-csv ~/Downloads/stmt.csv \
    --col-date "Trans Date" \
    --col-desc "Narrative" \
    --col-amount "Net Amount" \
    --bank-ending-balance 28000.00

5. Wider Date Window + Custom Output

python3 scripts/pipelines/bank-reconciliation.py \
    --slug sb-paulson \
    --end-date 2026-02-28 \
    --bank-csv ~/Downloads/chase_feb.csv \
    --date-window 5 \
    --bank-ending-balance 42531.87 \
    --out ~/Desktop/recon

Arguments Reference

ArgumentRequiredDescription
--slugCompany slug (must be connected in qbo-client)
--end-dateReconciliation as-of date (YYYY-MM-DD)
--bank-csvPath to bank statement CSV file
--bank-ending-balanceRecommendedBank statement ending balance (float)
--accountOptionalAccount name to match on Balance Sheet
--bank-formatOptionalauto (default), chase, bofa, wellsfargo, generic
--col-dateOptionalOverride date column header
--col-descOverrideOverride description column header
--col-amountOptionalOverride single amount column header
--col-debitOptionalOverride debit/withdrawal column header
--col-creditOptionalOverride credit/deposit column header
--date-windowOptionalDays for exact match window (default: 3, fuzzy: 2×)
--outOptionalOutput directory (default: ~/Desktop)
--sandboxOptionalUse QBO sandbox environment

Supported Bank CSV Formats

FormatDate ColumnAmount ColumnNotes
chaseTransaction DateAmountNegative = withdrawal
bofaDateAmountNegative = withdrawal
wellsfargoDateWithdrawals + DepositsTwo separate columns
genericTries common namesTries common namesUse --col-* if fails

Auto-detection reads column headers and picks the best format. Use --bank-format to override.


Matching Logic

Pass 1 — Exact: Amount match within ±$0.01, date within ±date-window days (default 3).

Pass 2 — Fuzzy Date: Amount match within ±$0.01, date within ±2×date-window days (default 6).

Pass 3 — Fuzzy Vendor: Amount within ±$1.00, vendor key substring match (strips check numbers, dates, ref numbers), any date.

Unmatched after all 3 passes → flagged in Unmatched tabs.


Reconciliation Equation

Book Balance (QBO BS)
+ Deposits in Transit     (book has it, bank hasn't cleared it)
- Outstanding Checks      (book has it, bank hasn't cleared it)
= Adjusted Book Balance

Bank Statement Ending Balance
+ Bank Credits Not in Book  (bank has it, not yet in QBO)
+ Bank Charges Not in Book  (negative; bank has it, not yet in QBO)
= Adjusted Bank Balance

Adjusted Book Balance = Adjusted Bank Balance → RECONCILED ✅

Adjusting Entry Auto-Suggestions

The pipeline auto-classifies unmatched bank transactions into:

CategoryKeywordsSuggested Entry
Bank Fee"service charge", "monthly fee", "wire fee", "nsf fee"DR Bank Service Charges / CR Checking
Interest Earned"interest", "dividend"DR Checking / CR Interest Income
Direct Deposit"payroll", "ach credit", "zelle"DR Checking / CR AR/Revenue
Payment Processor"stripe", "square", "paypal"DR Checking / CR Undeposited Funds
NSF Returned"returned item", "returned check"DR Returned Check Expense / CR Checking
Unclassified(no keyword match)TBD — review manually

Output: Excel Workbook

File: BankRecon_{slug}_{YYYYMMDD}.xlsx (saved to --out or ~/Desktop)

TabContents
Reconciliation SummaryBook/bank balance sections, stats, reconciled status badge
MatchedAll matched pairs with match type (exact/fuzzy), amounts, date diff
Unmatched (Book)Outstanding checks + deposits in transit (in QBO, not cleared)
Unmatched (Bank)Bank items not in QBO (fees, interest, unrecorded deposits)
Adjusting EntriesSuggested DR/CR journal entries for each unmatched bank item
CDC LogChanges since last reconciliation run (book balance, diff, etc.)

CDC (Change Data Capture)

Cache stored at: .cache/bank-reconciliation/{slug}.json

Tracks changes in:

  • Book Balance
  • Adjusted Book/Bank Balance
  • Deposits in Transit
  • Outstanding Checks
  • Reconciling Difference

On first run: "First run — snapshot saved." On subsequent runs: only changed fields shown. Saves 90%+ API calls on recurring monthly reconciliations.


Design Notes

  • All financial math uses Python Decimal — no float drift
  • Amount sign convention: positive = deposit/inflow, negative = payment/outflow (both book and bank)
  • GL pull uses QBO GeneralLedger report filtered to the reconciliation period
  • If GL pull fails (e.g. permissions), pipeline falls back to Balance Sheet only (matching disabled)
  • Bank CSV preamble rows (Chase header lines before data) are auto-skipped

Typical Workflow

1. Client sends bank statement PDF → export as CSV from bank website
2. Run pipeline with --slug, --end-date, --bank-csv, --bank-ending-balance
3. Review Reconciliation Summary tab — check RECONCILED badge
4. If difference exists: check Unmatched (Book) for outstanding items, Unmatched (Bank) for unrecorded items
5. Post adjusting entries from Adjusting Entries tab
6. Re-run pipeline — difference should clear to $0.00
7. Save Excel to client Google Drive folder

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

S³ Security Audit

Run security audits on codebases using static analysis, dependency scanning, and manual code review patterns. Covers OWASP Top 10, secrets detection, depende...

Registry SourceRecently Updated
Security

Skill

Security check for OpenClaw skills. Scan any ClawHub skill for malware, prompt injection, data theft, wallet stealing, and dangerous permissions BEFORE insta...

Registry SourceRecently Updated
Security

代码沙箱

代码沙箱 - 原创技能。安全执行未验证的AI生成代码,防止恶意代码、系统破坏或意外损害。适用于代码审查、安全验证、AI编程辅助等场景。

Registry SourceRecently Updated
Security

Git Security Scanner

Unified security scanner that catches leaked secrets, credentials, and code vulnerabilities before they reach your remote. Wraps gitleaks (400+ secret patter...

Registry SourceRecently Updated
2361Profile unavailable