Picking the model is the part every team gets right. OpenAI or Claude, frontier or mid-tier, the reasoning is good enough for finance work today. The mistake is treating the model as the product. In finance, the model is one component inside a system that has to move data safely, produce numbers that are real, and record what it did well enough to survive an audit.

Those three requirements are exactly where a raw model agent is weakest, and they rarely surface in a demo. They surface a quarter later, in a controls review or a restated number, when they are expensive to fix. The three risks below are the ones we see teams miss most often, and none of them is a reason to avoid AI. Each is a reason to put the right layer between the model and the ledger.

Why these three get missed

All three are invisible when the agent is answering questions in a sandbox. They only bite once the agent touches real data, posts to a real ledger, or lands in front of a real auditor. By then the architecture is set, so the cheapest time to ask about them is before the first line of the build.

Data Residency
Grounded Output
Human Approval
Audit Trail
Access Scope
Model Choice

Risk 1: Your data leaves your infrastructure

To answer a finance question, a raw model agent has to send the context to the model. That means account balances, vendor names, contract terms, and payroll figures travel to a third-party endpoint to get an answer back. Sometimes that is contractually fine and sometimes it is not, but most teams never map exactly what leaves, where it lands, or how long it is retained. The quieter version of the same risk is staff pasting a GL extract into a public chatbot to save an hour, with no record that it happened.

Data you sent to a third-party model to answer one question is data you can no longer promise stayed inside your controls.

What good looks like is simple to state and harder to build. The agent should read your financial data through a governed connection, not a copy paste. That data should be encrypted in transit and at rest, held in a tenant that is not shared with anyone else, and kept in a region you chose. And you should be able to see the connector code rather than trust a description of it. ChatFin reads and writes through your ERP's native APIs, keeps each customer in an isolated tenant with data residency in the US and EU, encrypts with AES-256 at rest and TLS 1.3 in transit, and ships its ERP connectors as open source so your security team can audit them directly.

Architecture showing agents reading and writing through governed ERP integrations and data pipelines

Risk 2: Hallucinated journal entries

A language model is built to produce a plausible answer, not a correct one. Ask it for a balance and it will give you a number that reads exactly like the right number, whether or not that figure exists in your ledger. In a chat window that is a nuisance. In the general ledger it is a misstatement, and a hallucinated entry that reaches your books is treated by an auditor as a material weakness, not a slip.

The fix is to stop letting the model produce the number at all. A well-built finance agent uses the model only to understand what you asked, then runs deterministic code against your verified data to get the figure. Ask ChatFin to calculate revenue by region and it does not guess. It generates a query against your ERP data and returns what the query returns, so the number is retrieved rather than invented. Entries are drafted, not posted, and every draft carries the evidence behind it. A controller reviews the logic and approves before anything reaches the ledger, which means a wrong proposal is caught at the review step instead of in next quarter's restatement.

From a plain question to a drafted journal entry with approval routed to a human

Risk 3: No audit trail on the API calls

An agent wired to your systems through an API can read and write all day, but the API call itself is not an audit trail. When the auditor asks who initiated an action, what data it read, which rule it applied, and which person approved it, a stack of API logs does not answer the question. Most teams that build on raw model endpoints discover this gap only when they are asked to prove a number, and by then the events they need were never recorded in a usable form.

A finance-grade agent records every action as it happens: who ran it, what changed, what was approved, and the exact query behind the figure, in a log an auditor can read and even re-run independently. ChatFin captures both the agent's proposal and the human's authorization on every write-back, which is what Internal Control over Financial Reporting expects. It also versions your financial logic, so if the definition of a metric changes, the record shows who changed it, when, and why, and a historical report can be rebuilt on the logic that was live at the time. Beyond individual entries, the same layer can watch for unusual patterns such as entries posted at odd hours or access outside a user's normal scope.

A timestamped log of finance actions, each recorded with its approver for the audit trail

Three more worth naming

The three above are the ones the email flagged, but a technical reviewer will raise a few more in the same breath. They are worth a line each.

Access sprawl. An agent handed a broad service account can read and change more than any one employee should. Access should mirror the ERP permissions the person already has, not sit above them. This is the core of the agent sprawl problem that grows as teams add more agents.
Prompt injection and agentjacking. Agents that read from external sources can be manipulated through those sources. A required human approval gate on every write-back is the last control that keeps a compromised model from becoming a compromised ledger.
Model lock-in. Hard-wiring one vendor's model into your workflow means a price change or a better model forces a rebuild. A governed layer that treats the model as swappable keeps that choice open.

A short checklist before you build

Six questions separate an agent that demos well from one that holds up in production. Ask them of anything you build or buy, including us.

Where does our data go to get an answer, and does it stay in a tenant and region we control?
Are figures retrieved from our system by a query we can re-run, or generated by the model?
Are entries drafted for approval, or can the agent post to the ledger on its own?
Is there a per-action log of who ran what, what changed, and who approved it?
Does the agent's access match the permissions the user already has in the ERP?
Can we change the underlying model without rebuilding the workflow?

How ChatFin handles the three

ChatFin is a governed layer that sits between the model and your ledger, rather than a wrapper around one model. It uses the language model to understand intent and deterministic code to execute, so the reasoning is flexible but the numbers come from your data. It reads and writes through your ERP's native APIs, keeps entries as drafts until a controller approves, and records every action with its evidence. Because the layer is built for finance rather than general chat, the controls are part of the design, not an add-on.

ConcernRaw model agentGoverned finance layer
Your dataSent to a third-party model to answerRead through your ERP API, held in an isolated tenant and region
The numbersGenerated by the model, can be inventedRetrieved by a query you can re-run
Write-backCan post directly if wired toDrafted, never posted without human approval
Audit trailAPI logs, if you built themEvery action logged: who, what changed, what approved
AccessBroad service accountMirrors the user's existing ERP permissions
The modelHard-wired to one vendorSwappable, the layer is model-agnostic

The security posture behind it is stated plainly: AES-256 at rest, TLS 1.3 in transit, SOC 2 Type II, isolated tenants, data residency in the US and EU, and open-source connectors. None of that removes the human. It puts the human where the risk is, at the approval step, and keeps the record of everything on either side of it.

ChatFin connecting to the existing ERP stack as the governed AI layer on top

Frequently Asked Questions

Does this mean we should not use OpenAI or Claude for finance?

No. Use them. The point is to run them through a layer that keeps your data in your controls, retrieves numbers instead of generating them, requires human approval to post, and logs every action. The model is fine; the wrapper around it is where the risk is.

What exactly is a hallucinated journal entry?

It is an entry whose amount, account, or rationale the model produced from its own output rather than from your ledger. It can look completely reasonable, which is why it is dangerous. Grounding the agent in your ERP data and keeping entries as drafts for human approval is what stops one from reaching the books.

If we build on raw model APIs ourselves, can we still get an audit trail?

Yes, but you have to build and maintain the logging, the grounding, the approval workflow, and the access controls yourself, and keep them aligned as the ERP and the model change. Most teams underestimate that work, which is the gap a purpose-built finance layer closes.

Is ChatFin tied to one AI model?

No. ChatFin is model-agnostic. The governance, grounding, and audit trail sit in the layer, so the underlying model can change without rebuilding the workflow that depends on it.

Build on the model, govern the layer

The three risks that catch finance teams, data leaving your infrastructure, hallucinated journal entries, and no audit trail on API calls, are not arguments against AI agents. They are the checklist for building one that survives an audit and a bad Monday. Ground the output in your own data, keep entries as drafts a person signs, and record everything on both sides of the approval.

ChatFin runs as that governed, model-agnostic layer on top of the ERP you already use, so you get the speed of an AI agent without giving up the controls finance is measured on.

Request a Demo

Related Articles