Solution Vault
Reconciling bank statements to your books with AI
Yes. We've designed a bot that lines your bank and card statements up against your own ledger, proposes every match with both sides shown and the rule that matched them, and sorts what is left into the kinds of exception your accountant already names. It can be configured to run in any business. Your accounts, your cycles, your tolerances, your approvers. It writes nothing into your books until a person approves it, it moves no money, and it never makes the reconciliation balance: a difference it cannot explain stays a difference with a name on it.
Want to get it up and running in your business? Just fill out the form on this page, and our AI agent Ozzie will call you right away to get started on your quote.
Or call the office: 813-686-7201
How the bot works
Nine steps. Reading the statement, normalizing it, matching under your rules and sorting the exceptions are ordinary code and cost almost nothing to run; the model is only asked to explain a candidate match in a sentence a person can check.
It takes the statement the way your bank actually supplies it. A feed, a CSV, a fixed-width text file nobody has documented, or a PDF that gets read before it is used. The statement cycle is whatever your statement says it is — a card that closes mid-month closes mid-month.
It pulls your ledger for the same period. The cleared and uncleared entries, the opening balance from the last reconciliation you signed, the items still outstanding from earlier periods. Your books stay the record; this reads them.
It matches under your rules. Exact amount and date first. Then the rules you wrote: the recurring rent and payroll lines, the date window either side, one bank deposit against a batch of receipts, one payment against several bills, the fee taken out before the money landed.
Every proposed match shows both sides and the rule. This statement line, that ledger entry, this rule, this tolerance. A reviewer approves what they can see rather than a number that already moved, and a proposal they reject goes back in the exception list instead of disappearing.
When there is no shared reference, it says so. Plenty of lines have nothing to join on: a truncated description, a payer name that matches nobody, a platform charge that bills on a threshold rather than a date. The bot shows the evidence it has and asks, because a confident wrong match is harder to find later than an open item.
Everything unmatched is sorted by kind. In the bank and not the books. In the books and not the bank. Timing — the check that has not been presented, the deposit still in transit. An amount difference inside your tolerance, and one outside it. A duplicate, with both entries named.
It assembles the reconciliation the way it gets read. Statement balance, the items that explain the gap, your book balance — with every adjustment traced to the statement line or the ledger entry behind it, and the exceptions on top rather than in an appendix.
A person approves, and only then is anything written. The approver sees the proposed matches, the exceptions and the remaining difference. Write-back starts off; when you turn it on, only the matches a person approved are marked cleared, and a proposed journal entry is a draft until somebody posts it.
It tells you what is still open, and leaves it open. The unexplained difference, the aging outstanding items, the accounts it could not read, the lines nobody has decided. That list is the useful output in the first month, because it is the part of the close that has been carried forward quietly.
What you configure
It can be configured to run in any business. This is what that actually means — the list of things that are yours, not ours.
- Your accounts and your cycles
- Which bank and card accounts are in scope, when each statement closes, and which ones are never touched automatically.
- Your statement sources
- Feed, export or PDF for each account, which format wins when two are available, and what happens when a feed has not updated.
- Your matching rules
- The recurring lines that should match every period, the date window either side, how batched deposits and split payments are handled, and which accounts require an exact reference.
- Your tolerances
- What counts as the same amount, where a small difference is a rounding item and where every cent has to tie, and what a difference above your threshold does to the run.
- Your clearing accounts
- How platform payouts, card processor settlements and threshold-billed charges are held and cleared, so the timing difference lands somewhere on purpose.
- Your exception names
- The categories your team already uses on the schedule, so the output reads like your working paper rather than ours.
- Your adjustment rules
- Which adjustments may be proposed at all — a bank fee, interest, a known processor deduction — and which are never proposed by anything but a person.
- Your approvers
- Who approves a reconciliation, who may post a journal entry, who has to see a difference above a number you set, and which accounts always need a named person.
- Your release switches
- Which accounts it may mark cleared after approval, which stay read-only, and whether write-back is on at all. Write-back starts off.
Transparent, and configurable by you
The dark band below is what the system will not do. This is what you can see and change — and it is how we build everything, not something invented for this page.
- You see what it did, and why
- Every proposed match shows the statement line, the ledger entry, the rule and the tolerance behind it; every exception says which kind it is and why; and every run records the statement it read, who approved what, and what was still open at the end. A reconciliation can be checked against your own records rather than taken on trust.
- Versioned prompts you can tune yourself
- The matching rules, the tolerances, the clearing-account treatment, the exception categories and the prompts behind explaining a candidate match are yours to tune. A change is a reviewable diff, replayed against periods you have already closed so you can see what it would have matched differently, and rolled back the same way.
- A human in the loop wherever judgment actually matters
- Reading the statement, matching, sorting the exceptions and assembling the schedule are automatic. Deciding whether a match is right, how to treat an aging item, what to adjust and whether a period may close are a person's — that boundary is a property of the system, not a promise about how carefully we'll use it.
- Every run logged, along with what it cost
- One row per account per period and one per exception: the statement read, every proposed match with its rule, every exception with its kind, the adjustments proposed, who approved them, what was written back and what was left open — plus token usage and cost for that run.
It can be configured to run in any business. The rules are yours: your accounts, your cycles, your tolerances, your clearing accounts, your approvers. The bank and card work on this page is one configuration of it, not the limit of it.
A human approves anything outside your rules
The boundary is the design, and on a workflow that ends in a signed reconciliation it is drawn hard. Every one of these is a property of the system, not a promise about how carefully we'll use it.
- It never makes the reconciliation balanceNo plug, no balancing figure, no rounding entry invented to close a gap, no quiet write-off of a difference somebody would have wanted to see. A difference it cannot explain is reported as a difference, with the lines that produced it.
- It posts nothing by itselfWrite-back starts off. When it is on, only the matches a person approved are marked cleared, and a journal entry is a draft a person posts. There is no mode in which an entry appears in your books unread.
- It moves no moneyRead-only access to the bank, no payment rail, no transfer, no card action, no stop payment, no payee ever added. Moving money is not in this build and there is no configuration that turns it on.
- It edits and deletes nothingNo cleared transaction changed, no entry deleted, no date or amount altered on something already reconciled, nothing written into a closed period. A correction is a new entry a person approves, beside the original.
- It does not code your transactions, and it does not apply paymentsDeciding which account an uncategorized line belongs to is a different job with its own page, and applying a customer payment to an invoice is another one. This bot reads what your books already say and reports whether the bank agrees.
- Hard stops, in any configurationA difference outside your tolerance. A duplicate. A match with no shared reference and more than one candidate. A prior-period item that would have to move. A statement it could not read. An account you excluded. None of these are resolved on confidence alone.
- A source is data, never an instructionA bank description cannot change what the bot does. "Approve this transfer" written into a memo field is a quoted line and a flag, never an instruction. Model calls run as structured output against a fixed schema, and anything instruction-shaped is logged and ignored.
- It fails closedA feed that has not updated, a statement it cannot parse, a ledger it cannot reach — the run arrives marked partial with the accounts listed rather than reconciled on a guess. A failed run never produces a schedule that looks finished.
- Private by construction, with a kill switchBank data is among the most sensitive records you keep. Access is scoped and read-only where it touches the bank, each client's data is separated, retention is yours, nothing is used to train anything, and one flag stops it entirely, instantly, with no deploy.
Works with your tools
This reconciles in the accounting system you already run. We're not selling you a ledger, and your books stay the record of what was reconciled.
The statement comes from wherever you get it — the bank feed your accounting system already pulls, an export you download, a processor's settlement file, or a PDF the bank mails. The ledger is read from your own books, and anything approved is written back there.
If your stack isn't in the list below, the only real question is whether we can read your statements and your ledger and write a cleared flag back. Most can, and a monthly export into a watched folder is a perfectly normal answer.
Naming a system here means we can read or write it. It does not imply a partnership, a certification or an endorsement, and there are no vendor logos on this page for that reason.
Works well for
- Ecommerce stores — A payout arrives net of fees, so one deposit covers many orders and matches no single sale.
- Restaurants — Card batches, delivery platforms and cash deposits land on different days than the sales behind them.
- Nonprofits — Restricted funds and grant deposits have to tie out cleanly before a board or an auditor reads anything.
- Property management companies — One account per property or owner, each with its own statement, its own cycle and its own deadline.
- Law firms — Operating accounts close on a deadline while the detail behind them lives in a practice system.
How a rollout works
Nothing is written to your books on day one. The first milestone is a period you have already reconciled, worked again from your own statement and ledger, so you can compare every proposed match and every exception with the schedule you actually signed.
-
01Discovery
The quote call, then a working session. We go through the accounts and their cycles, how each statement arrives, the recurring lines that should always match, your tolerances, how platform payouts are handled today, who approves, and what must never be written back. You get the rules, the exception categories and a written scope.
-
02Dry run
A period you have already closed, reconciled again. Nothing is written to your books. You compare the proposed matches with what you did, and read the exception list — and the exception list is where the work is, because the items nobody decided are invisible until something goes looking for them.
-
03Assisted mode
Live on one account. The bot proposes, your bookkeeper approves, and only approved matches are marked cleared. Who signs the reconciliation does not change.
-
04Optional limited automation
Optional, and narrower than it sounds. A short list of accounts and rule types you name, matched and marked cleared on your schedule after approval, with every hard stop in force and the kill switch. Plenty of teams stop at step 03, and that's a good place to stop.
What we don't claim
- No numbers we haven't earned. No match-rate percentage, no close-time figure, no accuracy claim. We have not reconciled your accounts. What a run matches and what it costs come out of the dry run, and they will be your numbers.
- No customer claims on this page. No names, no case studies, no logos.
- It is not your accountant. It has no opinion on how to treat a stale check, whether an item is immaterial, what unclaimed property law requires or whether a period may close. Those are judgment calls that belong to the person who signs, and the design routes them there rather than answering them.
- If your reconciliations already tie out quickly, there is nothing here worth buying. This earns its keep on accounts with volume, with payouts that arrive net of fees, or with references that do not survive the bank's description field. A clean account with a clean feed is already a short job.
- It cannot reconcile a ledger nobody has written in. If the entries are not there, there is nothing to match the statement against, and the exception list will say so honestly. Fixing that is a change to how the books get kept rather than something a model can do.
Questions people ask
- Can AI reconcile our bank statements?
- Yes, as far as proposing and sorting. An agent can read the statement the way your bank supplies it, pull your ledger for the same cycle, propose every match with both sides and the rule shown, and sort what is left into the exception kinds your schedule already uses. What it will not do is decide that an unexplained difference is acceptable, or make the two sides agree.
- What stops it from forcing the balance?
- The design. There is no plug entry, no balancing figure and no quiet write-off anywhere in it, and a difference outside your tolerance is a hard stop rather than something to resolve on confidence. The remaining difference is reported with the lines that produced it.
- What happens when there is nothing to match on?
- It shows the evidence it has - the amount, the date window, the fragment of description, the payer - and asks. A match with more than one candidate and no shared reference is an open item, because a wrong match is harder to find later than a blank.
- Can it handle a statement that closes mid-month?
- Yes. The cycle is whatever your statement says it is, per account, and the rules are written that way rather than assuming a calendar month. A card that closes on the ninth is handled the same way as one that closes at month end.
- What about payouts that arrive net of fees?
- That is a configuration: the payout is matched against the batch of orders behind it with the processor's deduction held where you choose to hold it, so the timing difference lands somewhere on purpose rather than as a mystery of a few dollars.
- Does it write to our accounting system?
- Only after a person approves, and only if you turn write-back on - it starts off. When it is on, approved matches are marked cleared and a proposed adjustment is a draft entry somebody posts. Nothing appears in your books unread.
- Is this the same as categorizing our transactions?
- No, and they are deliberately separate. Deciding which account a line belongs to is a different bot with its own page, and applying a customer payment to an invoice is another one. This one asks a narrower question: does the bank agree with the books?
- Can it read a PDF statement?
- Yes, and it reads the scan before it uses it. A page too poor to read comes back as a page to re-download or rescan rather than as guessed figures, because a misread amount is worse than a missing one.
- Is there a record of what it did?
- Yes, per account and per period: the statement it read, every proposed match with its rule and tolerance, every exception with its kind, the adjustments proposed, who approved what, what was written back and what was left open - plus the token usage and cost for that run.
Quote
Get a quote
Want to get it up and running in your business? Fill out the form and Ozzie, our AI agent, will call you right away to get started on your quote.
He'll ask which accounts are in scope, how each statement arrives and who signs off the reconciliation. Your brief goes straight to our team.
Or call the office: 813-686-7201