Even Margin Blog

Why Your Bank Balance Does Not Match Your Books

The ordinary reasons a bank balance and a bookkeeping total disagree, how to tell a timing difference from a real one, and what to check first.

Published 2026-09-07

Start by assuming nothing is broken

A bank balance and a bookkeeping total are two different measurements taken at two different moments, so they disagree constantly and most of the time neither one is wrong. Before you go looking for a mistake, it is worth knowing that the usual causes are timing rather than error, and that the timing ones resolve on their own within a few days.

It matters because the instinct, when two numbers do not match, is to adjust one until they do. That is the single response that turns a timing difference into a permanent error: the timing sorts itself out within days, and the adjustment stays behind forever.

Your bank has probably not finished the day

A balance is a reading taken at a moment. A transaction date is a whole day. Banks post in batches on their own schedule, so a payment dated the 28th can reach the balance on the 30th, and any balance you read in between is missing it.

That makes a month end one of the worst moments to compare the two. A balance read on the evening of the 31st can still be waiting on transactions dated the 31st, so comparing it against everything dated that month leaves you short by exactly those. Nothing is missing from your books. The balance has not caught up yet, and by the time it has, the difference is gone.

The practical version: if a difference appeared in the last few days, wait before investigating it. If it is still there a week later, it is worth looking at.

A card charge is dated when it settles, not when you spent it

Card payments arrive twice. First as a pending authorization, which is the merchant checking the money is there, and then as a settled transaction days later. The two can carry different amounts and different dates.

Anywhere a tip is added, a fuel pump places a hold, or a hotel bills at the end of a stay, the amount you eventually pay is not the amount that was authorized. Card network rules also decide the date for some categories: a hotel stay is generally dated at checkout rather than check in, and some transit fares are grouped and dated when they are batched together. None of that is a bank error. It is the rule working as written.

So a charge you clearly remember making on the 3rd can legitimately appear in your books dated the 5th, at a different figure.

Money moved between your own accounts is not spending

Moving money from checking into savings, paying a credit card from a bank account, or topping up a payment platform are all movements between accounts you already own. Nothing was earned and nothing was spent, but each one produces a transaction on both sides.

If those get filed as ordinary expenses, your spending is overstated by the amount you moved and your profit is wrong by the same amount, even though every individual transaction is real and correctly recorded. That combination, real transactions adding up to a wrong total, is what makes it hard to spot.

It is also the reason connecting one more account can change figures you had already read. Once both sides of a movement are visible, it can be recognized as a transfer rather than a cost. Nothing was wrong before. There was simply less to see.

The same transaction arriving twice

Duplicates are the one cause on this list that is a genuine error, and they have predictable sources: importing a file that overlaps a period the bank feed already delivered, disconnecting and reconnecting a bank so its history arrives again, or typing something in by hand that later arrives automatically.

A duplicate is worth finding quickly because it moves a real figure in a direction nobody notices. A duplicated expense understates profit, a duplicated deposit overstates it, and both look completely ordinary in a list of transactions.

What to check, in order

Start with when the difference began rather than what it is. A difference that appeared in the last few days is almost always still settling. One that has been there for weeks is worth investigating.

Then check the size of it against the obvious candidates. If it matches a transfer between two of your own accounts, that is your answer. If it matches a single transaction exactly, look for that transaction twice. If it is made up of several small amounts around a month end, it is the posting lag.

Finally, compare against a balance your bank actually reported on a specific day rather than a running total you calculated. Two figures the bank stated on two different days, with the transactions dated between them, is a comparison that can only fail for a real reason.

What software should be doing about this

Every step above is mechanical, which means none of it should be your evening. Even Margin compares two balances your bank itself reported against the transactions dated between them, and only uses a day as a boundary once nothing dated on or before it can still arrive. That is what removes the month end problem rather than working around it.

The result is a state and a date instead of a pile of rows to tick off: your books match your bank through a named day, or they are apart by an amount inside a window it can point at. Where a duplicate or a re-filed transfer accounts for the difference, it says so and links to the rows. Where nothing explains it, it says that too, because software that always names a cause will eventually name a wrong one.

Closing a month then stays what it should be, which is a person taking responsibility for a period rather than an evening of arithmetic.