Skip to content
Ryan de Melo
Go back

Agentic Transaction Systems: Moving Money With Machines You Can Audit

An agent that moves money is only worth building if you can explain every dollar it moved and name who is accountable for each one, long after the fact. In the meeting where someone signs off on one of these, nobody debates whether the model is smart enough, because it plainly is. What settles it arrives six weeks later, as a question from a regulator or a board member: why did it pay that, and who is accountable. Take longer than a minute to answer and the agent never ships, however good the demo was.

The whole industry has been arguing about the wrong axis. People keep asking how much autonomy to hand an agent, as if the dial runs from “asks permission for everything” to “does whatever it wants” and the job is to find the middle. That framing is exactly what gets agents banned from finance. Whether a machine can be trusted near money has nothing to do with how free it is and everything to do with whether you can reconstruct, completely and honestly, what it did and why.

The boring layer is the product

In agentic finance, the model is a commodity and the audit layer is the moat. I know that is not the popular framing. You can and will swap the model, probably twice a year, as the frontier moves and prices fall. What you cannot swap, and what took longest to build on the reconciliation systems I have shipped, is the apparatus that records every decision in a form you can defend in front of an auditor.

None of that makes it into the pitch deck. The deck shows the agent narrating a cash-flow anomaly in fluent prose, and the room loves it. (The room always loves the prose.) Take the same platform into a regulated environment and the first real question skips the prose entirely: show me the decision from last Tuesday at 14:03, and prove it could not have used data it did not have yet. If your architecture cannot do that, you built a toy.

The design problem, then, is not “make a clever agent” but “make every action the agent takes explainable, replayable, and attributable.” Three words, each one a hard constraint that shapes the system.

Explainable, replayable, attributable

Explainable means the decision arrived with its reasons attached, captured at the moment it was made rather than reconstructed afterward from whatever logs happened to survive. Reasons here are the actual inputs, the tool calls, the model’s stated rationale, and the rule that gated the final action, never a plausible-sounding summary written after the fact. When a payment goes out, I want the record to say which invoice it matched, which tolerance it cleared, and what it knew about the account at that instant.

Replayable means I can take that captured state and run the decision again against exactly what was known at the time. People skip this one, and it is the one that saves them. An agent that paid a vendor in March looks insane in June once you learn the vendor was fraudulent. The only fair question is whether the decision was defensible given what was true in March. Point-in-time replay answers that; replaying against today’s data just relitigates the past with a stacked deck.

Attributable means every action traces to a responsible party. A human who approved it, a policy that authorized it, a specific agent identity operating under a named owner. “The system did it” satisfies no one when money is missing. Someone owns every dollar that moves, and the record has to name them.

Deterministic boundaries around a non-deterministic core

An agent near money splits the design in two. The agent can be as probabilistic as it likes; the edge where it touches the world cannot be. The model reasons freely, but the tools it is allowed to call form a small, fixed, deterministic set with hard schemas and hard limits, and every call across that boundary is logged before it executes, not after.

An agent decision: inputs and tool calls flow through a deterministic boundary into an immutable audit record, with a replay path that rebuilds the decision from point-in-time state

The agent reasons however it wants. The boundary it acts through is deterministic, logged, and immutable, and the replay path can rebuild any past decision from the state that was true at the time.

That boundary is where the autonomy debate actually belongs, and it is a far more useful place to hold it. The agent does not “decide to wire funds.” It proposes a call to a tool named release_payment with a bounded amount, against an invoice, under a policy ID, and that tool checks the limit, checks the approval state, and writes the decision record before anything irreversible happens. If the record write fails, the action simply does not occur, because the audit log is a precondition for the transaction rather than a side effect of it.

This inverts the usual instinct to act first and log for observability, which is perfectly fine in an ordinary service. When the action is irreversible and denominated in dollars, logging after the fact means your most important record is the one most likely to go missing at the exact moment you need it, right after something has gone wrong.

Immutable, or it does not count

A decision record you can edit is a note, not evidence. Records here have to be append-only and tamper-evident, because the whole point is to be trusted by someone who does not trust you, the auditor, the regulator, the counterparty’s lawyer. On the systems I have built for this, the decision log is content-addressed and chained, so any after-the-fact edit shows up. You need neither a blockchain nor any ceremony, just an honest hash chain and storage that nobody, your own ops team included, can rewrite.

I learned this one the unglamorous way. Early on we kept beautiful structured logs in a store engineers could mutate to fix “bad data,” well-intentioned and completely useless, since anyone with access could have altered them, which from an auditor’s view meant they might as well not exist. The answer was never more logging; it was removing the ability to edit at all, ourselves included. The discipline is the feature.

What this costs you

None of this is free, and I would be lying if I called the audit layer cheap. Capturing point-in-time state for replay means versioning the world your agent saw, which is real storage and real plumbing. Deterministic tool boundaries mean more code and an agent that feels more constrained than the unfenced demo. Immutable records mean giving up the convenience of fixing things in place.

I will take all of it, because the alternative is an agent that is brilliant and unaccountable, and an unaccountable system that moves money will not sell into any business that has ever met a regulator. Autonomy was never the hard part, and it never won a single deal. What wins deals is the ability to answer completely when someone asks why the machine paid that, and to prove you are not inventing it.

These days, when a team walks me through their agentic finance platform, I stop watching the agent reason. I ask for last Tuesday at 14:03, replayed against what the agent knew at the time. The teams that can show me that built the right thing. The ones that change the subject built a demo, and they are about to learn the difference in a room they would much rather not be in.


Share this post:

Previous Post
Eval-Driven Development: How I Actually Build LLM Features Now
Next Post
Resolving Stuck Receivables With RAG and Agents