What an Audit Trail for Automated Bookkeeping Must Capture
An audit trail for automated bookkeeping has to capture source, decision, confidence, and every change. Here is exactly what to record and why it matters.
An audit trail for automated bookkeeping has to capture five things for every single entry: the source it came from, the decision that categorized it, the confidence behind that decision, the identity that made or approved it, and every change since. Miss any one of those and the trail has a hole exactly where someone will eventually look. Automation makes this harder, not easier, because a machine can create thousands of entries in seconds. If it does not record its own reasoning as it goes, you get a mountain of numbers and no way to explain any of them.
I build finance tooling for my own portfolio, so this is not theoretical. Here is what the trail has to hold and why each piece earns its place.
Capture the source, and keep it attached
Every entry starts as something real: a bank feed line, an invoice, a receipt, a contract. The trail has to link the entry back to that source and keep the link alive through edits and exports. A category with no source behind it is an assertion, not a record.
This is the foundation that makes automated books provable at all. I made the broader argument in what AI-native bookkeeping has to prove, and it comes down to this: if you cannot get from a number on the P&L back to the document that created it, the book is a story you are asking people to believe.
Capture the decision and the confidence
When a system categorizes a transaction, it made a decision. The trail has to record what that decision was, what rule or model produced it, and how confident it was. Confidence matters more than people expect. A transaction categorized at high confidence and one categorized at a coin-flip should not look identical in the record, because they are not identical in risk.
Recording confidence lets you do something powerful: sort your books by how sure the system was and review the shakiest entries first. A system that throws away confidence and only keeps the final category is discarding the exact signal you need to review efficiently. That is a version of the failure I covered in what automated bookkeeping gets wrong.
Capture who acted, human or machine
Every change needs an actor. Was this categorized by the model, by a rule, or by a person? If a person, which one? If they overrode the machine, the trail should show both the original machine decision and the human override, not silently replace one with the other.
This is where a lot of "AI does your books" tools quietly cheat. They let the machine act but do not distinguish machine actions from human ones, so you cannot tell what was reviewed and what was auto-posted. The whole point of adding audit trails is to make the actor legible at every step, which I laid out in general terms in how to add audit trails to AI systems.
Capture every change, append-only
The most important rule: the trail records changes by adding to history, never by overwriting it. If someone recategorizes an entry in March that was posted in January, the January decision does not vanish. Both exist, timestamped, in order. An audit trail you can edit is not an audit trail. It is a draft.
Append-only history is what makes the record defensible. When a lender, a buyer's diligence team, or a tax authority asks "was this always categorized this way," you can answer with the actual sequence of events instead of a shrug. Mutable history means any number could have been anything yesterday, and you have no way to prove otherwise.
Make the trail queryable, not just stored
Storing all this is half the job. The other half is being able to pull it up in seconds. "Show me every entry the model was unsure about." "Show me everything a human changed after the fact." "Show me the source for this exact number." If answering those takes an engineer and a database export, the trail exists on paper but not in practice.
A trail you cannot query when someone is standing over your shoulder is a trail that fails at the exact moment you need it. That is the bar we built Ficary to hit: every entry carries its source, decision, confidence, actor, and full history, and you can query all of it live. Automate the bookkeeping all you want. Just make the machine write down what it did while it did it, because the day someone asks, that record is the only thing standing between you and "I don't know."