Bank Reconciliation

v1.0.0

Reconcile bank accounts against QuickBooks Online (QBO) for monthly close, discrepancy investigation, or audit workpapers. Use when a client needs GL vs bank...

0· 194·1 current·1 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for samledger67-dotcom/bank-reconciliation.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Bank Reconciliation" (samledger67-dotcom/bank-reconciliation) from ClawHub.
Skill page: https://clawhub.ai/samledger67-dotcom/bank-reconciliation
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install bank-reconciliation

ClawHub CLI

Package manager switcher

npx clawhub@latest install bank-reconciliation
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (bank reconciliation vs QBO) align with the instructions: running a local Python pipeline that reads bank CSVs and queries QBO via a Node qbo-client. Required packages (openpyxl) and the qbo-client connect step are consistent with producing Excel output and accessing QBO.
Instruction Scope
Instructions tell the operator to run scripts/pipelines/bank-reconciliation.py with a local bank CSV and to use a connected qbo-client. The skill expects access to local files (bank CSVs) and to QBO account data via the qbo-client. It also writes an Excel file to disk. Recommend reviewing the referenced script (scripts/pipelines/bank-reconciliation.py) before running to confirm it only does reconciliation and no unexpected I/O or network calls.
Install Mechanism
No automated install spec; instruction-only. The README asks to pip install openpyxl and to ensure a Node qbo-client is connected. Both are reasonable and low-risk by themselves; there is no arbitrary download URL or archive extraction in the skill.
Credentials
The skill declares no environment variables or credentials. It relies on a pre-existing Node qbo-client connection for QBO access, which is proportionate to the task. There are no requests for unrelated secrets or system config paths.
Persistence & Privilege
always is false and the skill is user-invocable. It does not request permanent/always-on presence or modification of other skill configs. Autonomous invocation is allowed by default but is not combined with other red flags here.
Assessment
This instruction-only skill appears coherent, but before running it: (1) inspect scripts/pipelines/bank-reconciliation.py locally to confirm it only reads your bank CSV and QBO data and writes the Excel file (look for unexpected network or file operations); (2) ensure the Node qbo-client you connect is a trusted integration because it will hold tokens that grant access to QBO data; (3) run in a safe environment or sandbox first if you are unsure; (4) back up sensitive files before running and verify output goes to a safe --out path. If you want additional assurance, share the referenced pipeline file for a deeper review.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🏦 Clawdis
latestvk979636z8z58yrdwsvtpezr1eh835gzg
194downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

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

Comments

Loading comments...