Financial applications—banking apps, payment gateways, trading platforms—face constant threats from fraudulent activities. Fraudulent transactions can be costly and damage customer trust. Detecting fraud in real time requires a combination of machine learning, rule-based systems, and transaction monitoring.
A modern fraud detection system should:
Detect suspicious patterns and anomalies in real time
Minimize false positives while maximizing fraud detection
Integrate with backend APIs and front-end dashboards
Be scalable and maintainable in enterprise environments
In this article, we will design and implement a Fraud Detection System using AI, covering:
Understanding fraud detection requirements
Architecture overview
SQL Server data design
ASP.NET Core backend implementation
AI model integration (anomaly detection, classification)
Angular dashboard for monitoring
Real-world best practices
Security, compliance, and audit considerations
Performance and scaling
Testing and validation
1. Understanding Fraud Detection Requirements
1.1 Common Fraud Patterns
Unusual Transaction Amounts – sudden high-value transactions
Geographical Anomalies – transactions from unexpected locations
Rapid Transactions – multiple transactions in a short period
Account Behavior Deviations – unusual device, IP, or login time
Known Blacklists – flagged accounts or merchants
1.2 System Requirements
Real-time scoring for incoming transactions
AI-assisted classification of transactions (fraud or legitimate)
Risk scoring for manual review
Historical analysis for model training
Admin dashboards for alerts and review
2. System Architecture Overview
Angular Admin Dashboard
|
ASP.NET Core API Layer
|
Fraud Detection Service (AI Scoring)
|
SQL Server (Transactions, Users, Audit Logs)
|
Optional ML Training Pipeline (Python/ML.NET)
2.1 Component Responsibilities
SQL Server – stores transactions, historical labels, risk scores
ASP.NET Core API – exposes endpoints for scoring, alerts, and dashboards
AI Service – evaluates transactions using trained models
Angular Dashboard – visualizes risk scores, alerts, and transaction history
ML Training Pipeline – periodically retrains models with new data
3. SQL Server Data Design
3.1 Transactions Table
CREATE TABLE Transactions (
TransactionID BIGINT PRIMARY KEY IDENTITY,
UserID INT NOT NULL,
Amount DECIMAL(18,2),
Currency NVARCHAR(10),
TransactionDate DATETIME2 NOT NULL DEFAULT GETDATE(),
MerchantID INT,
Location NVARCHAR(100),
DeviceID NVARCHAR(100),
IPAddress NVARCHAR(50),
Status NVARCHAR(50) DEFAULT 'Pending', -- Pending, Completed, Fraud
RiskScore FLOAT DEFAULT 0,
CreatedAt DATETIME2 DEFAULT GETDATE()
);
3.2 Users Table
CREATE TABLE Users (
UserID INT PRIMARY KEY IDENTITY,
Name NVARCHAR(150),
Email NVARCHAR(150),
Phone NVARCHAR(20),
CreatedAt DATETIME2 DEFAULT GETDATE()
);
3.3 Fraud Alerts Table
CREATE TABLE FraudAlerts (
AlertID BIGINT PRIMARY KEY IDENTITY,
TransactionID BIGINT NOT NULL,
RiskScore FLOAT,
AlertType NVARCHAR(50),
CreatedAt DATETIME2 DEFAULT GETDATE(),
Resolved BIT DEFAULT 0
);
4. ASP.NET Core Backend Implementation
4.1 Transaction Repository
public class TransactionRepository
{
private readonly string _connString;
public TransactionRepository(string connString)
{
_connString = connString;
}
public async Task<Transaction> AddTransaction(Transaction txn)
{
using var con = new SqlConnection(_connString);
var sql = @"INSERT INTO Transactions (UserID, Amount, Currency, MerchantID, Location, DeviceID, IPAddress)
VALUES (@UserID, @Amount, @Currency, @MerchantID, @Location, @DeviceID, @IPAddress);
SELECT CAST(SCOPE_IDENTITY() AS BIGINT);";
txn.TransactionID = await con.ExecuteScalarAsync<long>(sql, txn);
return txn;
}
}
4.2 Fraud Scoring Service
public class FraudDetectionService
{
private readonly HttpClient _http;
public FraudDetectionService(HttpClient http)
{
_http = http;
}
public async Task<float> ScoreTransactionAsync(Transaction txn)
{
var payload = new
{
transactionId = txn.TransactionID,
userId = txn.UserID,
amount = txn.Amount,
location = txn.Location,
deviceId = txn.DeviceID,
ipAddress = txn.IPAddress,
timestamp = txn.TransactionDate
};
var response = await _http.PostAsJsonAsync("/api/ai/score", payload);
var json = await response.Content.ReadFromJsonAsync<dynamic>();
return (float)json.riskScore;
}
}
4.3 Controller Endpoint
[HttpPost("transactions")]
public async Task<IActionResult> AddTransaction([FromBody] Transaction txn)
{
var addedTxn = await _repo.AddTransaction(txn);
var riskScore = await _fraudService.ScoreTransactionAsync(addedTxn);
addedTxn.RiskScore = riskScore;
await _repo.UpdateRiskScore(addedTxn.TransactionID, riskScore);
if (riskScore > 0.7)
{
await _repo.CreateFraudAlert(addedTxn.TransactionID, riskScore, "High Risk");
}
return Ok(new { TransactionID = addedTxn.TransactionID, RiskScore = riskScore });
}
5. AI Model Integration
5.1 Feature Engineering
Key features for AI:
Transaction amount relative to user’s average
Time since last transaction
Location distance from usual region
Device/IP history
Merchant risk history
5.2 Model Choices
Anomaly Detection – ML.NET, Isolation Forest, or Python Scikit-Learn
Classification – Gradient Boosting, XGBoost, or LightGBM
Hybrid – rule-based pre-filter + AI scoring
5.3 Using ML.NET
var mlContext = new MLContext();
IDataView dataView = mlContext.Data.LoadFromTextFile<TransactionData>("transactions.csv", separatorChar:',', hasHeader:true);
var pipeline = mlContext.Transforms.Concatenate("Features",
"Amount", "TransactionHour", "LocationDistance", "DeviceScore")
.Append(mlContext.BinaryClassification.Trainers.LightGbm());
var model = pipeline.Fit(dataView);
mlContext.Model.Save(model, dataView.Schema, "fraudModel.zip");
5.4 Real-time Scoring
Load model once in memory
Score transaction in milliseconds
Update SQL Server risk score
6. Angular Dashboard
6.1 Display Suspicious Transactions
export class FraudDashboardComponent {
suspiciousTransactions: Transaction[] = [];
constructor(private api: FraudApi) {}
ngOnInit() {
this.loadSuspiciousTransactions();
}
loadSuspiciousTransactions() {
this.api.getHighRiskTransactions().subscribe(res => {
this.suspiciousTransactions = res;
});
}
}
6.2 Template Example
<table>
<tr>
<th>ID</th>
<th>User</th>
<th>Amount</th>
<th>Risk Score</th>
<th>Status</th>
<th>Action</th>
</tr>
<tr *ngFor="let txn of suspiciousTransactions">
<td>{{ txn.transactionID }}</td>
<td>{{ txn.userName }}</td>
<td>{{ txn.amount }}</td>
<td>{{ txn.riskScore | number:'1.2-2' }}</td>
<td>{{ txn.status }}</td>
<td>
<button (click)="markResolved(txn.transactionID)">Resolve</button>
</td>
</tr>
</table>
7. Real-world Best Practices
Combine Rule-based + AI – rules for obvious fraud, AI for nuanced detection
Continuous Model Retraining – feed new labeled transactions to improve accuracy
Risk Thresholds – avoid blocking legitimate users
Caching – cache high-risk user history for fast scoring
Logging & Auditing – every transaction, risk score, and AI decision is logged
Explainable AI – provide reasons for scoring to support investigation
8. Security and Compliance
PCI DSS Compliance – encrypt cardholder data
Data Masking – mask sensitive data in logs
Role-based Access Control – agents, analysts, admins
Audit Logs – immutable logs for regulatory purposes
Encryption in Transit and at Rest – TLS + TDE in SQL Server
9. Performance and Scaling
Async processing – separate scoring pipeline for high volume
Queue-based architecture – RabbitMQ / Azure Service Bus for transaction ingestion
Batch scoring – periodic batch scoring for low-priority transactions
Horizontal scaling – scale ASP.NET Core APIs and ML scoring service independently
SQL Server optimization – indexes on TransactionDate, UserID, and RiskScore
10. Testing and Validation
10.1 Unit Testing
10.2 Integration Testing
10.3 Model Evaluation
Precision, Recall, F1-Score
Confusion matrix
ROC-AUC
Monitor false positive rate
10.4 Load Testing
11. Summary
A Fraud Detection System using AI in financial applications requires a combination of real-time scoring, historical analysis, robust backend services, and user-friendly dashboards.
Key takeaways:
Build an SQL Server schema for transactions, users, and fraud alerts
Implement ASP.NET Core APIs for transaction ingestion and risk scoring
Integrate AI models for anomaly detection and classification
Provide Angular dashboards for monitoring and investigation
Apply security, compliance, and audit controls
Optimize for performance and scalability
Continuously train models and monitor detection quality
This architecture ensures fraudulent activities are detected promptly, reduces financial risk, and improves trust in your financial application.