Reconcile a Bank Statement to the GL in Excel Using Sandboxed Python

Prefer YouTube? Watch this walkthrough on YouTube →

This short demo shows a full bank reconciliation done inside Excel, without leaving the workbook. HISAB 360's chat agent reads your bank statement and general ledger from two sheets, runs sandboxed Python (pandas) to match transactions by date, amount and reference, and writes the matched rows, unmatched items and a clean exceptions list back into the workbook.

The point isn't a one-off match. At the end the agent saves the matching logic as a repeatable offline script, so next month you drop in fresh data and re-run the same reconciliation in seconds. Everything stays on your machine, and every write is recorded in the audit log.

Lay out the two sources on separate sheets

Put the bank statement on one sheet (date, description, amount) and the GL or cash-book entries on another. Headers and a few sample rows are all the agent needs to understand the shape of each table — the full workbook never leaves your PC. If columns are named differently (Debit/Credit vs. a single signed Amount), that's fine; you'll tell the agent how to read them in the next step.

Ask the agent to match the statement to the GL

In the chat panel, ask it to reconcile the bank statement against the GL. Be specific about the match keys: typically amount plus date within a tolerance (say ±2 days for cleared timing), with reference or cheque number as a tie-breaker. The agent reads your headers and sample rows, then plans the matching approach before touching anything.

Run the matching in the Python sandbox

HISAB runs the logic as sandboxed Python using pandas — joining the two tables, handling one-to-many and partial matches, and normalising signs and date formats. Because it's real Python rather than a wall of nested formulas, fuzzy reference matching and amount tolerances are handled cleanly, and the script is auditable.

Review matched, unmatched and exceptions

The agent writes three outputs back to the workbook: matched pairs, items only in the bank statement (e.g. bank charges, uncleared deposits), and items only in the GL (e.g. unpresented cheques, timing differences). Each is approval-gated — you see exactly which ranges will be written before they land, so nothing changes in your file until you accept it.

Investigate the flagged exceptions

Work the exceptions list as your reconciling items: confirm bank fees and interest, chase unpresented cheques, and note deposits in transit. These are the only rows that need a human, which is the whole idea — the agent clears the routine matches so you spend your time on genuine differences, then tie out to the closing balance.

Save it as a repeatable offline script

Ask the agent to save the reconciliation as a reusable script. Next period you paste in the new bank statement and GL extract and re-run it — same match rules, same exception report — turning a recurring manual close task into a one-click step. The saved logic runs offline against your local data.

Why this matters for finance teams

Bank reconciliation is one of the most repetitive close tasks, and doing it with VLOOKUP or manual ticking is slow and easy to get wrong when timing differences and partial matches creep in. Sandboxed Python does the matching properly — tolerances, sign handling, fuzzy references — while you keep judgement over the exceptions. Saving it as a script means the work compounds: you build the logic once and reuse it every period.

For finance teams the controls matter as much as the speed. Your workbook data stays local — only sheet names, headers and a few sample rows are sent to the AI to understand structure. Writes back into the sheet are approval-gated, and every change is journalled to an audit log you can review. You also bring your own AI key (Anthropic Claude or OpenAI) with no markup, so usage stays transparent and under your control.

Frequently asked questions

How do I reconcile a bank statement to the general ledger in Excel?

Put the bank statement and the GL on separate sheets, then match transactions by amount and date (with a small date tolerance) using reference or cheque number as a tie-breaker. In HISAB 360 you ask the chat agent to do this; it runs sandboxed Python with pandas to produce matched pairs plus two unmatched lists, and writes the results back into the workbook for review. You then work the unmatched items as reconciling differences.

Why use Python instead of VLOOKUP or XLOOKUP for reconciliation?

Lookups assume an exact key and struggle with timing differences, partial matches, sign conventions and slightly different references. Python (pandas) can match on amount with a date tolerance, handle one-to-many matches, normalise formats, and output a clean exceptions list. In HISAB the Python runs in a sandbox against your local data and the logic is saved as a script you can re-run each period.

Is my workbook data sent to the AI?

No. Only sheet names, ranges, headers and a few sample rows are sent so the agent can understand the structure of your tables. The full workbook stays local on your machine, the reconciliation runs in a sandbox on your PC, and every write back to the sheet is approval-gated and recorded in an audit log.

Can I reuse the same reconciliation next month?

Yes. After the first run you ask the agent to save the matching logic as a repeatable offline script. Next period you paste in the new bank statement and GL extract and re-run it with the same match rules and exception report, so a recurring close task becomes a one-click step that runs offline against your local data.

Try it on your own workbook

The 14-day trial is the full product — no card, no feature gates. The fastest way to evaluate HISAB 360 is on a real file from your own month-end.

Start free → See pricing