← Back to list

Semantic Kernel for Enterprise .NET and Fintech Architects

Adding intelligence to payments without losing control — a practical, non-hype guide for architects and engineers.

Paritosh Dixit · 2026-06-30 15:54 · 0 claps · 9.5 min read
#fintech #semantic-kernel #agentic-ai #dotnet #artificial-intelligence
Open on Medium ↗
Wiki topics: AGT · AI Agents AI · AI · General FIN · Fintech & Banking 🏛️ · Architecture

Semantic Kernel for Enterprise .NET and Fintech Architects

Adding intelligence to payments without losing control — a practical, non-hype guide for architects and engineers.

Why this matters for enterprise .NET teams

Most fintech engineering teams already have the hard parts built. The ledger works. The payment rails are connected. Reconciliation runs every night. AML screening is wired into onboarding and transaction monitoring. These systems took years to harden, and they are not the problem.

The problem is everything around them. An operations analyst investigating a stuck cross-border payment opens six screens: the payment gateway, the ledger, the reconciliation dashboard, the sanctions-screening tool, an internal wiki, and a chat with the settlement team. The information exists. It is just scattered, and pulling it together is slow, manual, and repetitive.

This is exactly the kind of work that large language models are good at — reading, correlating, summarizing, and explaining — and exactly the kind of work where you cannot afford a model to guess, hallucinate, or take an action on its own.

Semantic Kernel matters because it sits in that gap. It is a Microsoft-backed, open-source SDK that lets you connect an LLM to your existing C# code, your APIs, and your enterprise workflows in a structured way — while keeping your deterministic systems firmly in charge. For teams already invested in .NET, Azure, and a strong engineering culture, it is a natural place to start adding AI without rewriting the systems that already work.

This article is written for architects and engineers who want the intelligence, but not the risk.

What Semantic Kernel actually is

Strip away the marketing and Semantic Kernel is a fairly modest thing: an orchestration SDK for building applications that use LLMs alongside your normal code.

It gives you a few core building blocks:

  • Kernel — the central object that holds your configuration, your registered functions, and your connection to one or more AI models.
  • Plugins and functions — your own C# methods (and prompt templates) the model is allowed to call. A function might be GetPaymentStatus(paymentId) or CheckSanctionsList(name): your code, doing your deterministic work.
  • Function calling and planning — how the model decides which of your functions to call, and in what order, to answer a request.
  • Memory and context — a way to store and retrieve relevant information (embeddings, history, retrieved documents) so the model has the right context.
  • Connectors — adapters to different model providers (Azure OpenAI, OpenAI, and others) so you are not locked to one.

The important mental model: Semantic Kernel is not the brain that runs your bank. It is a coordinator that knows how to ask a language model questions and how to call your trusted functions when the model needs real data or wants to do something. The model proposes; your code disposes.

If you have ever written a dependency-injection container, a mediator, or a workflow orchestrator, this will feel familiar. Semantic Kernel is closer to those patterns than it is to anything magical.

How Semantic Kernel connects the LLM to your enterprise

The value is in how cleanly it bridges a probabilistic model and a deterministic enterprise. Here is how each connection works in practice.

To your C# business logic. You expose existing methods as kernel functions by annotating them. The model never runs your code directly — it requests a function by name with arguments, and the SDK invokes your method. Your validation, error handling, and logging all still run. The business logic stays exactly where it belongs: in compiled, tested, reviewable C#.

To your APIs. Plugins wrap calls to internal services — the payment gateway, the ledger service, the reconciliation engine, the case-management system. You decide which endpoints are reachable. The model sees a small, curated menu of capabilities, not your entire service mesh.

To plugins and tools. A plugin is just a logical group of functions: a PaymentsPlugin, a LedgerPlugin, a CompliancePlugin, a KnowledgePlugin. Grouping them lets you reason about permissions and risk per plugin, which matters enormously in a regulated environment.

To memory and context. For knowledge-heavy tasks — “what does our runbook say about SWIFT MT103 returns?” — you store documents as embeddings and retrieve the relevant passages at query time (retrieval-augmented generation). Answers stay grounded in your documentation rather than the model’s general training.

To enterprise workflows. Because functions can be chained, Semantic Kernel can coordinate a multi-step task: look up a payment, check its reconciliation status, screen the counterparty, and assemble a summary. Crucially, the steps that change state or move money are not left to the model’s discretion — they are gated behind explicit approval and deterministic checks.

A fintech example: the Payment Investigation Assistant

Let’s make this concrete with a use case almost every payments business has: investigating transactions that failed, got delayed, or look suspicious.

Today an operations analyst receives a query like “Why hasn’t payment PAY-88421 settled?” and begins the manual hunt. The Payment Investigation Assistant turns that into a single question against a system that can read across the relevant sources and return a clear, sourced summary — while leaving every decision and every state change to a human or to deterministic rules.

Notice what the assistant does and does not do. It reads the payment record, reads the ledger entry, reads the reconciliation status, and runs a read-only sanctions check. It summarizes what it found and flags likely causes. It does not release the payment, reverse it, retry it, or clear a sanctions hit. Those remain human decisions, supported by — not replaced by — the assistant.

That single design choice is what separates a useful enterprise assistant from a liability.

The architecture flow

Here is the end-to-end flow for a single investigation request, from the user’s question to the human approval gate.

Figure 1 — The Payment Investigation Assistant reads across systems of record, summarizes the likely cause, logs everything, and stops at a human approval gate before any state changes.

Figure 1 — The Payment Investigation Assistant reads across systems of record, summarizes the likely cause, logs everything, and stops at a human approval gate before any state changes.

A few things are deliberate in this design:

  • Intent detection happens before any data access, so out-of-scope questions can be refused early.
  • Every external call goes through a curated plugin, never a raw connection string.
  • The audit log is not optional and not after-the-fact: it records the functions invoked and the data returned, because “the system did something” is never an acceptable answer to a regulator.
  • The flow ends at a human gate whenever money or compliance status would change. The assistant’s output is an input to a decision, not the decision itself.

C#-style pseudo-code

The following is illustrative pseudo-code to show the shape of a Semantic Kernel integration. It is intentionally simplified — exact API names evolve across SDK versions, so treat this as architectural intent rather than copy-paste code.

// 1. Kernel setup
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: config.Deployment,
    endpoint: config.Endpoint,
    apiKey: secrets.AzureOpenAiKey);   // from a secret store, never hard-coded
var kernel = builder.Build();

// 2. Plugin registration — READ-ONLY functions
public class PaymentInvestigationPlugin
{
    [KernelFunction, Description("Get the status of a payment by ID.")]
    public Task<PaymentStatus> GetPaymentStatus(string paymentId)
        => _payments.GetStatusAsync(paymentId);      // deterministic, audited

    [KernelFunction, Description("Get the ledger entry for a payment.")]
    public Task<LedgerEntry> GetLedgerEntry(string paymentId)
        => _ledger.GetEntryAsync(paymentId);

    [KernelFunction, Description("Read-only sanctions screen on a name.")]
    public Task<ScreeningResult> ScreenCounterparty(string name)
        => _sanctions.ScreenAsync(name);             // returns hit/no-hit only
}

kernel.Plugins.AddFromObject(
    new PaymentInvestigationPlugin(...), "PaymentInvestigation");

// 3. Calling the investigation
var prompt = "Investigate why payment PAY-88421 has not settled. " +
             "Summarize the likely cause and the evidence.";

var settings = new PromptExecutionSettings
{
    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(),  // only registered tools
    Temperature = 0.1                                        // low randomness
};

var result = await kernel.InvokePromptAsync(prompt, new(settings));

// 4. Returning a STRUCTURED response (not free text)
public record InvestigationResult(
    string PaymentId,
    string LikelyCause,
    string[] EvidenceSources,    // ledger, reconciliation, sanctions
    string RecommendedNextStep,  // a SUGGESTION, gated behind human approval
    bool RequiresHumanApproval);

await _auditLog.RecordAsync(currentUser, prompt,
    result.GetInvokedFunctions(), result);

The points worth noticing: secrets come from a secret store, every callable function is read-only, temperature is low, the response is structured rather than free text, and the audit log captures the whole interaction. None of these are AI features — they are the engineering discipline that makes AI acceptable in finance.

Figure 2 — The operating principle: the probabilistic layer proposes, a human-approval and deterministic-validation gate sits in the middle, and the deterministic core disposes.

Figure 2 — The operating principle: the probabilistic layer proposes, a human-approval and deterministic-validation gate sits in the middle, and the deterministic core disposes.

Where Semantic Kernel helps

These are the use cases where, in my experience, the value is real and the risk is manageable.

  • Investigation. The flagship example above: failed, delayed, or suspicious transactions. A multi-system manual hunt becomes a sourced summary, while decisions stay with people.
  • Summarization. Turning a noisy reconciliation break, a long settlement exception, or a dense AML alert into a clear, structured summary. Hours of reading become minutes of review.
  • Workflow assistance. Guiding an operator through a defined runbook without automating the irreversible steps.
  • Decision support. Presenting the evidence, the relevant policy, and the options for a chargeback, dispute, or exception. The model lays out the case; the human makes the call.
  • Knowledge retrieval. Answering policy and runbook questions grounded in your own documentation through retrieval-augmented generation.
  • Support operations. Drafting customer-facing explanations for delayed payments and helping tier-1 support with internal lookups, reducing escalations.

The common thread: every one of these is read, correlate, explain — not act, move, decide.

Where Semantic Kernel should not be used blindly

Equally important is naming the places where this technology, used carelessly, creates serious risk.

  • Autonomous money movement. An agent should never be given a tool that initiates, releases, or reverses a payment on its own judgment. Money movement stays deterministic and human-authorized.
  • Production payment execution without approval. Even with a human in the loop, the execution path must run through your existing, tested payment engine with its own controls — not a model-triggered shortcut.
  • Compliance-sensitive decisions without audit. Clearing a sanctions hit, approving a high-risk customer, or closing an AML case must be explainable and traceable to a person.
  • Exposing unsafe APIs to agents. If you register a function, assume the model will eventually call it in a way you did not anticipate. Never expose write, delete, transfer, or admin endpoints without hard guardrails.
  • Missing idempotency and logging. Any financial operation that can be retried must be idempotent, and everything must be logged. Without idempotency a retried call can double-pay; without logging you cannot reconstruct what happened.

A simple test: if a function could cause harm when called at the wrong time or with the wrong arguments, it does not belong in the agent’s toolset until it is wrapped in deterministic controls.

Figure 3 — A practical split: read-correlate-explain work (left) is where Semantic Kernel adds value; act-move-decide-alone work (right) stays with deterministic code and people.

Figure 3 — A practical split: read-correlate-explain work (left) is where Semantic Kernel adds value; act-move-decide-alone work (right) stays with deterministic code and people.

Enterprise guardrails

This is the part that separates a demo from a system you can run in production at a regulated institution. Treat these as non-negotiable.

  • Read-only tools first. Start with functions that can only read. Earn the right to add anything that writes, and add it slowly, behind approval.
  • Allowlisted APIs. The agent can reach only an explicit, reviewed list of endpoints. Every addition is a deliberate decision.
  • Secret masking. Credentials live in a secret store and never appear in prompts, logs, or model context.
  • Audit logs. Record who asked, what the model decided, which functions ran with which arguments, what came back, and what the human did next.
  • Human-in-the-loop approval. Any state change requires explicit human authorization. The model’s output is a recommendation a person accepts or rejects.
  • Role-based access. The assistant operates within the user’s permissions, not above them. An analyst’s assistant cannot see or do more than the analyst.
  • Deterministic validation. Validate the model’s proposed action against hard business rules before anything executes. If it suggests releasing a payment still under sanctions review, the check refuses.
  • Idempotency for financial operations. Every financial call carries an idempotency key so retries and replays cannot cause duplicate effects.

If you implement only one section of this article, implement this one.

Chatbot vs. workflow automation vs. agentic assistant

It helps to be precise about what Semantic Kernel adds compared to what teams already use.

  • Normal chatbot. Good at conversation and FAQ answers. It does not access live enterprise data, does not decide which steps to take, and takes no irreversible actions. Best for customer self-service.
  • Workflow automation (rules or RPA). Executes predefined steps reliably and at scale, and takes irreversible actions by design. But it only does what was scripted in advance; it cannot reason about a novel, messy question. Best for stable, high-volume processes.
  • Semantic Kernel agentic assistant. Reasons over messy, multi-source tasks and proposes which steps to take, accessing live data through curated read-only plugins. It does not take irreversible actions — those are gated behind human approval. Explainability is high if you build the audit trail. Best for investigation, summarization, and decision support.

The honest takeaway: a chatbot is conversation, workflow automation is fixed execution, and a Semantic Kernel assistant is flexible reasoning over your data with execution kept deterministic. They are complementary — the agentic assistant handles the ambiguous, cross-system work that rules struggle with.

Conclusion

Semantic Kernel is not magic, and it is not a replacement for enterprise architecture. It will not — and should not — replace your core banking platform, your payment rails, your ledger, or your reconciliation engine. Those systems are deterministic by design, and that determinism is a feature, not a limitation.

What it offers is an orchestration layer: a structured, .NET-native way to let a language model read across your systems, explain what it finds, and assist the people who operate your platform — while every decision that moves money or touches compliance stays with deterministic code and human judgment.

Used this way, it makes existing systems more intelligent, more explainable, and easier to operate. The intelligence lives at the edges — investigation, summarization, decision support — while the core stays exactly as safe and predictable as it is today.

The teams that win with this technology will not be the ones who automate the most. They will be the ones who are most deliberate about what they don’t let the model do.

Disclaimer: This article is an architectural and engineering explanation for technical audiences. It is not financial, legal, regulatory, or compliance advice. Any implementation in a regulated environment should be reviewed with your own risk, compliance, and legal teams. Framework APIs change over time; verify against current official documentation before building.


메타데이터
post_id
575c7be48b74
slug
semantic-kernel-for-enterprise-net-and-fintech-architects-575c7be48b74
url
https://medium.com/@dixitparitosh/semantic-kernel-for-enterprise-net-and-fintech-architects-575c7be48b74
canonical_url
https://medium.com/@dixitparitosh/semantic-kernel-for-enterprise-net-and-fintech-architects-575c7be48b74
author_url
https://medium.com/@dixitparitosh
status
ok
fetched_at
2026-07-16 23:46:37