Everybody knows which differences are normal, and nobody has written it down
Two systems hold different totals for the same money. Closing the month means somebody compares exports by eye and decides which gaps are fine. That judgement is the most valuable thing in the finance office and it exists only in one person's head.
Two systems hold a total for the same money and the totals are different. Closing the month means somebody exports both, sits down with them, and works out whether the difference matters.
They are good at it. They are often very good at it — the difference is usually explicable, they usually know the explanation before they have finished looking, and the close happens on time.
The problem is not the work. The problem is where the knowledge lives.
Three kinds of difference
A gap between two systems is one of three things, and almost all of the difficulty comes from the fact that they look identical on a spreadsheet.
Timing. One system recognized something in a period the other has not reached. A payment taken on the thirty-first that posts on the first. A batch that runs overnight. Nothing is wrong; the two systems are describing the same reality at different moments.
Definition. The two are counting different things and always have been. One total includes deposits and the other does not. One is gross and the other is net of adjustments. One includes a fund the other excludes. Nothing is wrong here either, and this category is the most dangerous of the three because it is invisible: a definitional difference is stable, so it never looks like an anomaly, and it can silently absorb a real error of similar size for years.
Defect. Something is actually wrong. A transaction posted to the wrong account, a batch that partially failed, a duplicate, a reversal that never reversed.
Only the third one requires action. The entire purpose of a reconciliation is to sort the differences into these three buckets, and the reason it takes a person a week is that nothing in either system knows which bucket anything belongs to.
Why matching on totals does not work
The instinctive approach is to compare the two totals and investigate if they differ.
This fails in both directions. A total that matches can be two errors cancelling — and errors that cancel are more common than chance suggests, because many of them come in pairs by construction. A total that does not match gives a single number and no indication of where it came from, so the investigation starts by rebuilding the detail anyway.
Matching has to happen at the document level: one invoice, one receipt, one journal reference at a time, against its counterpart. That is more comparisons, which is precisely why it is not done by hand, and it is trivial for software.
What comes out the other side is different in kind from a variance. It is a list: these three hundred matched, these eleven did not, and here is each one. The eleven are the work. The three hundred never needed a person.
The thing that leaves when they do
Ask a finance director what happens when the person who closes the books retires and you will get a rueful answer. Ask what specifically is at risk and the answer is harder to articulate, because it is not a procedure. It is judgement of a particular kind: knowing which differences are normal.
Eleven years of closing the same books produces an extraordinarily efficient internal model. This gap appears every March. That one is the insurance accrual and it settles in April. That other one is the water fund and it has been like that since the conversion in 2019. None of it is written anywhere, because it was never learned as facts — it was learned as pattern, one month at a time, and the person holding it would struggle to enumerate it if asked.
When they leave, their successor does not inherit a shorter list of things to check. They inherit the same list with no annotations, and every difference is now unexplained. The close that took four days takes three weeks, and the new person is not worse at their job.
Capturing it without a documentation project
The standard proposal at this point is to write a procedures manual, which everybody agrees with and nobody does, because writing down eleven years of pattern in the abstract is an enormous task with no deadline attached.
The alternative is to capture each explanation at the moment it is given, attached to the difference that prompted it, as part of doing the close rather than instead of doing it. Somebody looks at a gap, knows what it is, and says so — in one sentence, in the row.
Then the same explanation reapplies itself next period when the same difference appears.
That second part is what makes it worth doing, and it changes the economics of the whole exercise. The first close after this is no faster. The second one is faster, because the recurring differences arrive pre-explained and the only things needing a person are the ones that are genuinely new. Within a few periods the residue is small and consists entirely of things worth looking at, which is what a reconciliation was always supposed to produce.
The manual gets written as a side effect of the work, by the person who knows, one sentence at a time, without anybody scheduling it.
The check that keeps it honest
There is an obvious objection, and it is correct: a library of explanations that reapplies itself automatically is an excellent mechanism for carrying a real error forever. Label a defect as timing once and it is explained in perpetuity.
So the explanations need a check, and the check follows from what the categories mean.
If a difference is explained as timing, that is a falsifiable claim: it says the other system will catch up. So it has to actually settle in a later period. If it does not — if the same “timing” difference is still open four periods later — the explanation was wrong, and the system should say so rather than continuing to apply it.
If a difference is explained as definition, that predicts stability: it should recur at a similar magnitude every period. A definitional difference that suddenly doubles is no longer definitional, and the change is the signal.
Neither check is sophisticated. Both are the kind of thing that is obvious once stated and impossible to do by hand, because they require remembering what was said about a difference several periods ago.
What the board is entitled to
The figure that goes to a council or a board is the end of this chain, and the useful test of a close is whether that number can be traced backwards on demand.
Not “here is the report it came from” — that is provenance to one step. Traced backwards means: this total, from these matched documents, with these differences outstanding, each carrying this explanation, of which these are timing and expected to settle by this period.
A finance office that can produce that in a meeting is in a completely different position from one that can produce a total. And an auditor asking about internal controls — which becomes a formal requirement the moment any of the money is federal — is asking for exactly this: not that the number is right, but that there is a mechanism by which somebody would know if it were not.
The honest scope
None of this is an accounting problem. The accounting is settled, uncontroversial and known to everybody in the room.
What is missing is mechanism: comparing at the document level across two systems that were never connected to each other, and holding the explanations somewhere other than a person. The same gap shows up in the one annual figure a council actually votes on — see how a Texas city arrives at its tax rate. Both are small pieces of software. The reason neither exists is the reason nothing in this space exists — the work sits between two systems that each work correctly, so no vendor owns it, and the gap is filled by somebody who is good at it until the day they are not there.
What this rests on
- Tex. Loc. Gov't Code § 103.001
- The requirement that a municipality have its records and accounts audited annually by an independent auditor.
- 2 C.F.R. § 200.303
- Internal controls over federal awards — the standard that applies the moment any of the money is federal.
- GASB reporting requirements
- What the figures eventually have to support, and why a total nobody can trace back is a problem before it is an audit finding.
This is how we read the statute in order to build software against it, which is not the same thing as legal advice and is not offered as any. Your city attorney is the one who decides what your obligation is.
Questions we get asked
- Why do two systems hold different totals for the same money?
- Usually for three reasons at once. Timing — one system recognized a transaction in a period the other has not reached yet. Definition — the two count different things, such as one including deposits and the other excluding them. And defect — something is genuinely wrong. Only the third is a problem, and the reconciliation exists to separate them.
- What is wrong with reconciling on totals?
- A total that matches can be two errors cancelling, and a total that does not match tells you nothing about where to look. Matching at the document level — one invoice, one receipt, one journal reference at a time — produces both a smaller unexplained residue and an actual list of what is causing it.
- Why does closing the month depend so heavily on one person?
- Because the judgement about which differences are normal is real expertise and it is almost never written down. Someone who has closed the same books for eleven years knows that a particular gap appears every March and settles in April. That knowledge is what makes the close fast, and it is entirely undocumented.
- How do you get that knowledge out of somebody's head?
- By capturing the explanation at the moment it is given, attached to the difference it explains, and reapplying it automatically the next period. The point is not documentation for its own sake — it is that a recurring explanation stops needing to be rediscovered, and the residue shrinks to the genuinely new.
- What stops a library of explanations from becoming a way to hide problems?
- A check on the explanation itself. If a difference is explained as timing, then it has to actually settle in a later period — and if it does not, the explanation was wrong and the system should say so rather than reapplying it forever. Without that, a timing explanation is an excellent way to carry a real error indefinitely.
- Is this an accounting problem or a software problem?
- The accounting is settled and not in dispute. What is missing is the mechanism — comparing at the document level across systems that were never connected, and holding explanations somewhere other than a person's memory. That is a software problem, and it is a small one relative to how much time it consumes every period.