Your message has been sent.
We’ll process your request and contact you back as soon as possible.
The form has been successfully submitted.
Please find further information in your mailbox.
Select language
Apr 29, 2026
10 min read

Off-the-shelf agent frameworks are insufficient for banking. Yes, that’s the point I’d start with, and no, a cleaner prompt strategy or a stricter API gateway doesn’t change it.
A standard stack with LangChain, tools, vector DB, and an API gateway can make an agent functional. It can route an intent, fetch context, call a tool, and return a polished answer. Fine. But banking doesn’t fail at the “can it call the API?” level. Banking fails at the “was this call allowed, scoped, verified, logged, and safe to show to this customer?” level. That’s a different architecture problem.
There are three reasons I wouldn’t put a generic agent stack near production banking workflows without adding a dedicated trust layer.
First, financial data is liability data. A hallucinated answer in a retail chatbot is embarrassing. A hallucinated balance, transaction status, fee explanation, or credit decision can become legal exposure. Under the FCA Consumer Duty, for example, the institution has to show that customers receive fair, understandable, and appropriate support. If the model invents a repayment option or explains a product incorrectly, you can’t shrug and blame “the AI.” The bank owns the output. So the architecture has to treat every factual claim as something to verify against a source system.
Second, multi-tenancy is not just a product design choice. If you serve several banking clients, merchants, business units, or regions from one platform, tenant isolation has to exist at every layer: prompts, memory, vector indexes, tool permissions, logs, Redis keys, database rows, secrets, and audit exports. One cross-tenant leak is not a bug ticket. It can be a reportable incident. This is why I don’t like architectures where the agent has broad access and the app layer “remembers” to filter things later. Filtering later is how data leaks happen.
Third, the LLM is the least trustworthy component in the chain. That sounds harsh, but it’s the right assumption. The model is probabilistic. It can follow malicious instructions, over-trust retrieved context, or expose PII in a summary. It can produce a tool call that looks valid until you inspect the parameters. So I would never let the model sit directly next to core banking APIs.
The safer pattern is to let the model reason, but keep enforcement in deterministic systems. Reasoning belongs in the agent layer. Enforcement belongs in schema validators, policy checks, tenant-scoped permissions, approval gates, and audit logs. Once you make that split, the architecture stops being a chain of model-driven API calls and becomes a controlled trust system, with the LLM treated as a useful but unreliable reasoning component.
One framing makes that split easier to apply. When I look at a banking agent, the question I care about is how much authority it holds and how far that authority has to travel from the human who granted it. Capability tells you how good the demo is. Authority determines how much control the system is allowed to exercise. A brilliant model wired to read-only tools is a thin assistant. A dull model holding a standing key that can move funds is a different problem, and it needs every layer below. I split that authority axis into four classes — assistant, orchestrator, operator, and economic actor — in the article Not every agent is an economic actor.

Andrew translates decentralized concepts into secure, functional financial tools. He navigates the volatile DeFi landscape to build scalable blockchain infrastructures that address real-world utility, moving past the buzzwords to deliver technical value.
For banking, a four-layer trust model makes the architecture easier to control, audit, and defend. It forces one uncomfortable question at every step: what should this part of the stack be allowed to know, decide, and touch?
A banking agent can talk like one product, but it should not run like one flat system. The client should not know the banking core. The agent should not call financial APIs directly. The gateway should not improvise. Core banking should not trust model-generated requests just because they came from an approved channel.
Here’s the path I’d expect to see in a production-grade setup:

The enforced path is simple:

These four layers should be enforceable boundaries between trust zones. If the agent needs account data, it goes through the gateway. If it prepares a payment, it goes through the gateway. If it needs an external KYC, AML, card, or fraud provider, the request still moves through core banking first.
With that control path in mind, let’s go layer by layer and look at what each part should own, what it should never touch, and where the handoff needs a real check.
The client layer is where the user meets the agent, but it should stay thin. Mobile apps, web apps, chat widgets, voice interfaces, and messengers should not carry banking logic. Their job is to capture the request, pass identity and session context, render the response, and hand off anything sensitive to the layers below.
That thin-client rule also shapes the edge stack. You still need the usual perimeter pieces: Cloudflare for traffic filtering, an API Gateway for routing and rate limits, and a BFF layer tied into Auth0 or Firebase for channel-specific session handling. But none of that should turn the client into a banking component. The client talks to the platform. It doesn’t know how accounts, payments, KYC, AML, or cards work, and it definitely doesn’t reach into those systems directly.
The orchestration layer is the control room of the agent system. It decides whether a request is a quick support turn or a regulated workflow, what state needs to be restored, which context is safe to expose to the model, and whether a tool call should even be prepared.
This is where I’d check for architectural debt early: payment rules buried in prompts, old chat used as workflow state, or tools visible outside the current tenant, channel, or user role. If you see that, the design is already drifting.
Six control points usually tell you whether the architecture is serious:
The router should classify the request before the agent starts thinking too hard. A card status question and a payment-preparation flow don’t belong on the same path. One should be fast and tightly scoped, while the other needs planning, checks, and approval points before anything moves forward.
The latency impact matters. If every request goes through a DeepAgent, the product feels slow and expensive. If everything goes through a SimpleReactAgent, the system becomes risky once the user asks for work that touches regulated data or financial action. The router keeps that trade-off visible.
The Conversation Manager keeps the case alive across sessions, devices, and escalation paths. Banking users don’t always finish a task in one chat: they may start in mobile, continue on web, upload documents later, or move to a human operator.
LangGraph checkpointing helps here because the workflow doesn’t have to live inside the chat transcript. It can pause, resume, branch, or recover from a known state. And if the case goes to a human, the operator should get the case as it stands now: what was checked, what failed, what’s pending, and what should happen next.
The Context Window Manager decides what the model gets to see. In banking, that choice affects data exposure, answer quality, and auditability. The model needs enough context to answer well, but it shouldn’t get every old message, every retrieved document, or every raw customer value.
The structured action log is the part I’d pay close attention to. Chat history is messy because it includes user corrections, partial answers, abandoned paths, and stale assumptions. The model should reason from the action trail when it needs to know what the system actually did.
The Tool Executor is where model intent becomes a system call. The agent may suggest a tool call, but the executor controls the runtime.
The identity fields are worth calling out. The model should not provide user_id, tenant_id, or correlation_id. Those values should come from authenticated platform context. Otherwise, the model can shape the access boundary, which is exactly what this architecture is trying to avoid.
The LLM Gateway keeps model access in one place. Without it, provider logic spreads into services, workflow code, and prompt templates. That becomes difficult to govern in a multi-tenant banking platform.
Even as providers change, the platform still needs one controlled place to decide which model handles which request, under which tenant policy, within which budget, and with what fallback allowed.
The Safeguard Pipeline wraps the agent before and after reasoning. Here, the important architectural point is timing: input checks need to run before the model plans, and output checks need to run before the user sees the answer or the system stages an action.

The agent can draft the response or prepare the next step. The pipeline decides whether that response can be shown, blocked, retried, escalated, or sent into an approval flow.
In this article, I’ll keep the gateway at the architecture level. The short version: it should turn model-shaped intent into a controlled system request. That means checking tenant permissions, validating the payload against schemas, applying approval rules, logging the action, and deciding whether the request can continue, fail, or move to a human.

Layer 4 is where the actual banking systems live: accounts, payments, cards, KYC, AML, fraud, ledger services, and external providers. In many builds, this layer is already there, often as Spring Boot microservices or an existing core banking API estate.
The AI platform should not modify this layer. It should integrate against it. That separation matters because it keeps the agent portable. If a bank changes a KYC provider, adds a fraud vendor, or moves from one core banking system to another, the AI layer should not need a full rebuild. The gateway and core APIs absorb that complexity.
I’d also avoid letting the agent call external providers directly. If AML screening, card issuing, payment routing, or KYC checks live behind core banking services, the agent should respect that boundary. Core banking remains the source of execution and record. The agent remains a controlled consumer of approved capabilities.
Let’s make them safe enough for real financial workflows.
Your message has been sent.
We’ll process your request and contact you back as soon as possible.