993 lines
28 KiB
TypeScript
993 lines
28 KiB
TypeScript
/**
|
|
* Copyright since 2025 Mifos Initiative
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
import { BRANCHES, BranchMaster } from '../npa/npa-data';
|
|
|
|
export { BRANCHES, BranchMaster };
|
|
|
|
/**
|
|
* Sample FIU-IND data — schema mirrors the FINnet 2.0 CSV submission templates
|
|
* (TC1, TC2, KC1, KC2, Account_Detail, Account_Person_Relation).
|
|
* Bank/customer names are dummy placeholders.
|
|
*
|
|
* Reports filed with FIU-IND under PMLA 2002:
|
|
* CTR — Cash Transaction Report (≥ ₹10 L cash, monthly by 15th)
|
|
* STR — Suspicious Transaction Report (within 7 days of detection)
|
|
* CCR — Counterfeit Currency Report
|
|
* NTR — NPO Transaction Report (≥ ₹10 L, NGO/NPO clients)
|
|
* CBWTR — Cross-Border Wire Transfer Report (≥ ₹5 L)
|
|
*/
|
|
|
|
export type ReportType = 'CTR' | 'STR' | 'CCR' | 'NTR' | 'CBWTR';
|
|
/**
|
|
* Lifecycle of an STR case.
|
|
* draft — raised, not yet with the Principal Officer
|
|
* po-review — under Principal Officer investigation
|
|
* awaiting-filing — concluded suspicious; STR XML must still be submitted to FIU-IND
|
|
* filed — submitted and FIU-IND acknowledgement recorded
|
|
* rejected — concluded clean; nothing filed
|
|
*/
|
|
export type StrStatus = 'draft' | 'po-review' | 'awaiting-filing' | 'filed' | 'rejected';
|
|
|
|
/** TC2 — Branch / cash transaction record */
|
|
export interface CtrTransaction {
|
|
reportType: ReportType;
|
|
reportRefNo: number;
|
|
branchCode: string;
|
|
accountNumber: string;
|
|
txnBranchCode: string;
|
|
depositOrWithdrawal: 'Deposit' | 'Withdrawal';
|
|
txnId: number;
|
|
txnDate: string;
|
|
txnTime: string;
|
|
txnAmount: number;
|
|
instrumentType: 'Cash' | 'Cheque' | 'DD' | 'NEFT' | 'RTGS' | 'Others';
|
|
instrumentId: string;
|
|
nonCustomerRef: string;
|
|
relationshipFlag: 'Customer' | 'Non-Customer';
|
|
thirdPartyPan: string;
|
|
declaration: string;
|
|
/** Customer name resolved from KC1 (UI convenience, not in actual TC2 schema) */
|
|
customerName?: string;
|
|
/**
|
|
* CTR does not judge suspicion. It records only whether the source of funds was
|
|
* evidenced at the counter (CTR filed, nothing further) or could not be, in which
|
|
* case the transaction is referred to STR. The suspicious/clean verdict itself
|
|
* belongs to the Principal Officer on the STR side.
|
|
*/
|
|
complianceStatus?: 'PENDING' | 'EVIDENCED' | 'REFERRED';
|
|
/** Document that evidenced the source of funds, when verified at the counter. */
|
|
evidenceDocType?: string;
|
|
evidenceReference?: string;
|
|
evidencedOn?: string;
|
|
}
|
|
|
|
/** Outcome of the Principal Officer's investigation into an STR case */
|
|
export type PoFinding = 'CLEAN' | 'SUSPICIOUS';
|
|
|
|
/** STR record — workflow extension on top of TC2 */
|
|
export interface StrTransaction extends CtrTransaction {
|
|
detectedOn: string;
|
|
flaggedBy: string;
|
|
riskCategory:
|
|
| 'structuring'
|
|
| 'dormant-revival'
|
|
| 'high-risk-country'
|
|
| 'unusual-pattern'
|
|
| 'pep-related'
|
|
| 'sanctions-hit';
|
|
narrative: string;
|
|
status: StrStatus;
|
|
poRemarks?: string;
|
|
/** Set once the Principal Officer concludes the investigation */
|
|
poFinding?: PoFinding;
|
|
/** FIU-IND acknowledgement number, recorded only after the STR is actually submitted */
|
|
fiuReferenceNo?: string;
|
|
/** Date the STR was submitted on the FINnet portal */
|
|
filedOn?: string;
|
|
}
|
|
|
|
/** KC1 — Individual customer card (subset of the 70+ fields, only what UI shows) */
|
|
export interface KycIndividual {
|
|
reportRefNo: number;
|
|
ucic: string;
|
|
pan: string;
|
|
ckycNumber: string;
|
|
firstName: string;
|
|
middleName: string;
|
|
lastName: string;
|
|
fatherName: string;
|
|
motherName: string;
|
|
gender: 'Male' | 'Female' | 'Other';
|
|
dob: string;
|
|
mobileNumber: string;
|
|
email: string;
|
|
primaryAddress: string;
|
|
state: string;
|
|
city: string;
|
|
pincode: string;
|
|
customerType: string;
|
|
annualIncome: number;
|
|
occupation: string;
|
|
onboardingDate: string;
|
|
lastKycDate: string;
|
|
riskLevel: 'Low' | 'Medium' | 'High';
|
|
reportType: ReportType;
|
|
otherIdentifierName?: string;
|
|
otherIdentifierNumber?: string;
|
|
}
|
|
|
|
/** KC2 — Entity / non-individual customer card */
|
|
export interface KycEntity {
|
|
reportRefNo: number;
|
|
ucic: string;
|
|
entityName: string;
|
|
panNumber: string;
|
|
gstin: string;
|
|
mobileNumber: string;
|
|
address: string;
|
|
state: string;
|
|
city: string;
|
|
pincode: string;
|
|
dateOfIncorporation: string;
|
|
customerType: string;
|
|
riskLevel: 'Low' | 'Medium' | 'High';
|
|
onboardingDate: string;
|
|
lastKycDate: string;
|
|
isSoleProprietor: boolean;
|
|
ownerUcic: string;
|
|
ownerName: string;
|
|
reportType: ReportType;
|
|
}
|
|
|
|
export const FIU_BANK = {
|
|
name: 'CBSNexora Bank Ltd',
|
|
branch: 'Head Office',
|
|
reBankingFlag: 'SCB',
|
|
reportingMonth: 'January 2026',
|
|
reBuid: 'REBANK-2031',
|
|
principalOfficer: 'Karthik Kamath',
|
|
principalOfficerEmail: 'po.fiu@cbsnexorabank.example',
|
|
filerUserId: 'PO-001',
|
|
cashThreshold: 1000000, // ₹10 L per single cash txn
|
|
monthlyAggThreshold: 1000000, // aggregate ≥ ₹10 L in a month
|
|
cbwtrThreshold: 500000 // CBWTR threshold ₹5 L
|
|
};
|
|
|
|
/**
|
|
* CTR/STR records below use the bank's own internal numeric branch codes (as FINnet's TC2
|
|
* schema expects), not the app-wide BranchMaster codes (BR01, BR02, ...) every other module
|
|
* scopes Head-Office-vs-branch access by. This maps one to the other so a branch-level login's
|
|
* officeName can be matched consistently, the same way NPA/Reconciliation/Loan Origination do.
|
|
*/
|
|
export const FIU_BRANCH_CODE_TO_CANONICAL: Record<string, string> = {
|
|
'1': 'BR01',
|
|
'2': 'BR02',
|
|
'3': 'BR03',
|
|
'4': 'BR04',
|
|
'5': 'BR05',
|
|
'6': 'BR06',
|
|
'8': 'BR07',
|
|
'9': 'BR08',
|
|
'10': 'BR02',
|
|
'12': 'BR04'
|
|
};
|
|
|
|
/**
|
|
* ── CTR transactions (FINnet TC2-style) ──
|
|
* Only CASH transactions that breach the RBI/PMLA reporting limit of ₹10,00,000
|
|
* (single txn, or connected transactions aggregating to ₹10 L in a calendar month)
|
|
* belong here. Nothing below the threshold and no non-cash instruments.
|
|
*/
|
|
export const CTR_TXNS: CtrTransaction[] = [
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 1,
|
|
branchCode: '1',
|
|
accountNumber: '110001101000838',
|
|
txnBranchCode: '1',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 1,
|
|
txnDate: '05-01-2026',
|
|
txnTime: '10:22:41',
|
|
txnAmount: 1450000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'ANAND KRISHNAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 2,
|
|
branchCode: '3',
|
|
accountNumber: '110001204000712',
|
|
txnBranchCode: '3',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 2,
|
|
txnDate: '09-01-2026',
|
|
txnTime: '12:47:09',
|
|
txnAmount: 3200000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'MEERA SUNDARAM'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 3,
|
|
branchCode: '6',
|
|
accountNumber: '110001307000455',
|
|
txnBranchCode: '6',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnId: 3,
|
|
txnDate: '13-01-2026',
|
|
txnTime: '15:03:55',
|
|
txnAmount: 1075000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'HARPREET SINGH BEDI'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 4,
|
|
branchCode: '2',
|
|
accountNumber: '110001408000933',
|
|
txnBranchCode: '2',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 4,
|
|
txnDate: '16-01-2026',
|
|
txnTime: '11:19:27',
|
|
txnAmount: 5600000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'FAROOQ ABDULLAH KHAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 5,
|
|
branchCode: '9',
|
|
accountNumber: '110001509000268',
|
|
txnBranchCode: '9',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnId: 5,
|
|
txnDate: '20-01-2026',
|
|
txnTime: '14:35:12',
|
|
txnAmount: 2850000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'DEEPIKA RANGANATHAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 6,
|
|
branchCode: '5',
|
|
accountNumber: '110001610000841',
|
|
txnBranchCode: '5',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 6,
|
|
txnDate: '23-01-2026',
|
|
txnTime: '09:58:33',
|
|
txnAmount: 1000000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'RAJENDRA PRASAD YADAV'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 7,
|
|
branchCode: '12',
|
|
accountNumber: '110001711000527',
|
|
txnBranchCode: '12',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 7,
|
|
txnDate: '27-01-2026',
|
|
txnTime: '16:41:08',
|
|
txnAmount: 4300000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: 'NCR-014',
|
|
relationshipFlag: 'Non-Customer',
|
|
thirdPartyPan: 'BXKPT7788M',
|
|
declaration: 'NA',
|
|
customerName: 'SHABANA TARIQ MIRZA'
|
|
}
|
|
];
|
|
|
|
/**
|
|
* ── TC1: ATM / card transactions ──
|
|
*
|
|
* TC2 carries what happened at the counter; TC1 carries what happened at the
|
|
* card rails. Both feed the same CTR, because an ATM cash withdrawal is still
|
|
* a cash transaction and counts towards the customer's monthly aggregate.
|
|
*
|
|
* Every row here belongs to an account that is already in CTR_TXNS and carries
|
|
* the same reportRefNo, so the six FINnet files reconcile against each other.
|
|
*/
|
|
export interface CardTransaction {
|
|
reportType: ReportType;
|
|
reportRefNo: number;
|
|
branchCode: string;
|
|
accountNumber: string;
|
|
/** FINnet account-type code, same codes used in Account_Detail. */
|
|
accountType: string;
|
|
relationshipFlag: 'Customer' | 'Non-Customer';
|
|
/** Settled at the switch, or declined / reversed. */
|
|
txnStatus: 'Success' | 'Failed' | 'Reversed';
|
|
txnId: number;
|
|
txnDate: string;
|
|
txnTime: string;
|
|
depositOrWithdrawal: 'Deposit' | 'Withdrawal';
|
|
txnAmount: number;
|
|
cardType: 'RuPay Debit' | 'VISA Debit' | 'Mastercard Debit';
|
|
/** Masked to the last four digits — the PAN itself is never put in the file. */
|
|
cardNumber: string;
|
|
/** FINnet country code; 95 is India, as used across the KC files. */
|
|
cardIssuingCountry: string;
|
|
cardIssuingBank: string;
|
|
/** NFS / NPCI switch reference for the leg. */
|
|
switchTxnId: string;
|
|
atmId: string;
|
|
/** UI convenience, not part of the TC1 schema. */
|
|
customerName?: string;
|
|
}
|
|
|
|
export const TC1_TXNS: CardTransaction[] = [
|
|
// Ref 1 — ANAND KRISHNAN: routine ATM usage alongside a large counter deposit.
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 1,
|
|
branchCode: '1',
|
|
accountNumber: '110001101000838',
|
|
accountType: '211',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9001,
|
|
txnDate: '06-01-2026',
|
|
txnTime: '19:42:11',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 20000,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX4417',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26010600418',
|
|
atmId: 'NEXA0001',
|
|
customerName: 'ANAND KRISHNAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 1,
|
|
branchCode: '1',
|
|
accountNumber: '110001101000838',
|
|
accountType: '211',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9002,
|
|
txnDate: '18-01-2026',
|
|
txnTime: '11:07:53',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 25000,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX4417',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26011800911',
|
|
atmId: 'NEXA0003',
|
|
customerName: 'ANAND KRISHNAN'
|
|
},
|
|
|
|
// Ref 2 — MEERA SUNDARAM: card cash-out at another bank's ATM.
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 2,
|
|
branchCode: '3',
|
|
accountNumber: '110001204000712',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9003,
|
|
txnDate: '09-01-2026',
|
|
txnTime: '20:15:36',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 10000,
|
|
cardType: 'VISA Debit',
|
|
cardNumber: 'XXXXXXXXXXXX8820',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26010901277',
|
|
atmId: 'SBIN004512',
|
|
customerName: 'MEERA SUNDARAM'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 2,
|
|
branchCode: '3',
|
|
accountNumber: '110001204000712',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
// Declined for insufficient balance. Failed legs are still reported: the
|
|
// attempt itself is part of the customer's pattern.
|
|
txnStatus: 'Failed',
|
|
txnId: 9004,
|
|
txnDate: '09-01-2026',
|
|
txnTime: '20:17:02',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 20000,
|
|
cardType: 'VISA Debit',
|
|
cardNumber: 'XXXXXXXXXXXX8820',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26010901284',
|
|
atmId: 'SBIN004512',
|
|
customerName: 'MEERA SUNDARAM'
|
|
},
|
|
|
|
// Ref 3 — HARPREET SINGH BEDI: cash recycler deposit through the card.
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 3,
|
|
branchCode: '6',
|
|
accountNumber: '110001307000455',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9005,
|
|
txnDate: '12-01-2026',
|
|
txnTime: '13:28:44',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnAmount: 49500,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX6193',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26011200630',
|
|
atmId: 'NEXA0002-CRM',
|
|
customerName: 'HARPREET SINGH BEDI'
|
|
},
|
|
|
|
// Ref 4 — FAROOQ ABDULLAH KHAN: repeated near-limit withdrawals in one day.
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 4,
|
|
branchCode: '2',
|
|
accountNumber: '110001408000933',
|
|
accountType: '211',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9006,
|
|
txnDate: '16-01-2026',
|
|
txnTime: '09:03:19',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 50000,
|
|
cardType: 'Mastercard Debit',
|
|
cardNumber: 'XXXXXXXXXXXX2075',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26011600142',
|
|
atmId: 'NEXA0004',
|
|
customerName: 'FAROOQ ABDULLAH KHAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 4,
|
|
branchCode: '2',
|
|
accountNumber: '110001408000933',
|
|
accountType: '211',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9007,
|
|
txnDate: '16-01-2026',
|
|
txnTime: '09:06:41',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 50000,
|
|
cardType: 'Mastercard Debit',
|
|
cardNumber: 'XXXXXXXXXXXX2075',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26011600149',
|
|
atmId: 'NEXA0004',
|
|
customerName: 'FAROOQ ABDULLAH KHAN'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 4,
|
|
branchCode: '2',
|
|
accountNumber: '110001408000933',
|
|
accountType: '211',
|
|
relationshipFlag: 'Customer',
|
|
// Dispensed short and auto-reversed by the switch the same evening.
|
|
txnStatus: 'Reversed',
|
|
txnId: 9008,
|
|
txnDate: '16-01-2026',
|
|
txnTime: '09:09:05',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 50000,
|
|
cardType: 'Mastercard Debit',
|
|
cardNumber: 'XXXXXXXXXXXX2075',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26011600155',
|
|
atmId: 'NEXA0004',
|
|
customerName: 'FAROOQ ABDULLAH KHAN'
|
|
},
|
|
|
|
// Ref 5 — DEEPIKA RANGANATHAN
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 5,
|
|
branchCode: '9',
|
|
accountNumber: '110001509000268',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9009,
|
|
txnDate: '21-01-2026',
|
|
txnTime: '17:51:28',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 15000,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX9354',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26012101508',
|
|
atmId: 'HDFC009871',
|
|
customerName: 'DEEPIKA RANGANATHAN'
|
|
},
|
|
|
|
// Ref 6 — RAJENDRA PRASAD YADAV
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 6,
|
|
branchCode: '5',
|
|
accountNumber: '110001610000841',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9010,
|
|
txnDate: '23-01-2026',
|
|
txnTime: '10:34:12',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 40000,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX1268',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26012300287',
|
|
atmId: 'NEXA0005',
|
|
customerName: 'RAJENDRA PRASAD YADAV'
|
|
},
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 6,
|
|
branchCode: '5',
|
|
accountNumber: '110001610000841',
|
|
accountType: '215',
|
|
relationshipFlag: 'Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9011,
|
|
txnDate: '28-01-2026',
|
|
txnTime: '18:22:47',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 35000,
|
|
cardType: 'RuPay Debit',
|
|
cardNumber: 'XXXXXXXXXXXX1268',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26012801733',
|
|
atmId: 'NEXA0005',
|
|
customerName: 'RAJENDRA PRASAD YADAV'
|
|
},
|
|
|
|
// Ref 7 — SHABANA TARIQ MIRZA: the account's card is used by a third party,
|
|
// which is why the relationship flag differs from the rest.
|
|
{
|
|
reportType: 'CTR',
|
|
reportRefNo: 7,
|
|
branchCode: '12',
|
|
accountNumber: '110001711000527',
|
|
accountType: '215',
|
|
relationshipFlag: 'Non-Customer',
|
|
txnStatus: 'Success',
|
|
txnId: 9012,
|
|
txnDate: '27-01-2026',
|
|
txnTime: '21:08:33',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnAmount: 30000,
|
|
cardType: 'VISA Debit',
|
|
cardNumber: 'XXXXXXXXXXXX7741',
|
|
cardIssuingCountry: '95',
|
|
cardIssuingBank: 'CBSNexora Bank Ltd',
|
|
switchTxnId: 'NFS26012702094',
|
|
atmId: 'ICIC007233',
|
|
customerName: 'SHABANA TARIQ MIRZA'
|
|
}
|
|
];
|
|
|
|
/**
|
|
* ── STR cases ──
|
|
* Raised either by the AML rules engine or by an officer flagging a CTR row as
|
|
* suspicious. Each case is investigated by the Principal Officer, who concludes
|
|
* whether the funds are legitimate (CLEAN) or linked to terror financing.
|
|
*/
|
|
export const STR_TXNS: StrTransaction[] = [
|
|
{
|
|
reportType: 'STR',
|
|
reportRefNo: 101,
|
|
branchCode: '8',
|
|
accountNumber: '110001812000390',
|
|
txnBranchCode: '8',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 101,
|
|
txnDate: '11-01-2026',
|
|
txnTime: '13:08:21',
|
|
txnAmount: 2750000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'IMRAN SHEIKH QURESHI',
|
|
detectedOn: '12-01-2026',
|
|
flaggedBy: 'AML Engine — Rule R-031',
|
|
riskCategory: 'sanctions-hit',
|
|
narrative:
|
|
'Cash deposit of ₹27.5L followed within 48 hours by outward remittances to three beneficiaries whose names partially match the UAPA Schedule IV designated-persons list. Awaiting Principal Officer investigation.',
|
|
status: 'po-review'
|
|
},
|
|
{
|
|
reportType: 'STR',
|
|
reportRefNo: 102,
|
|
branchCode: '4',
|
|
accountNumber: '110001915000174',
|
|
txnBranchCode: '4',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 102,
|
|
txnDate: '07-01-2026',
|
|
txnTime: '10:44:52',
|
|
txnAmount: 1980000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'GOPAL VENKATARAMAN',
|
|
detectedOn: '08-01-2026',
|
|
flaggedBy: 'Branch Compliance Officer',
|
|
riskCategory: 'unusual-pattern',
|
|
narrative:
|
|
'Declared annual income ₹6L but deposited ₹19.8L cash in a single visit. Customer produced sale deed for ancestral agricultural land.',
|
|
status: 'draft',
|
|
poFinding: 'CLEAN',
|
|
poRemarks:
|
|
'Source of funds verified against registered sale deed dated 02-01-2026 and buyer bank statement. Legitimate agricultural land sale — no adverse findings. Case closed, no STR filed with FIU-IND.'
|
|
},
|
|
{
|
|
reportType: 'STR',
|
|
reportRefNo: 103,
|
|
branchCode: '10',
|
|
accountNumber: '110002016000628',
|
|
txnBranchCode: '10',
|
|
depositOrWithdrawal: 'Withdrawal',
|
|
txnId: 103,
|
|
txnDate: '19-01-2026',
|
|
txnTime: '16:27:40',
|
|
txnAmount: 3400000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'ABDUL RAHMAN BAIG',
|
|
detectedOn: '20-01-2026',
|
|
flaggedBy: 'AML Engine — Rule R-045',
|
|
riskCategory: 'high-risk-country',
|
|
narrative:
|
|
'Account credited by 14 small inward remittances from a FATF high-risk jurisdiction over 9 days, then emptied via ₹34L cash withdrawal at a border-district branch. Classic terror-funding placement-and-dispersal pattern.',
|
|
status: 'filed',
|
|
poFinding: 'SUSPICIOUS',
|
|
poRemarks:
|
|
'Investigation confirmed layered inward remittances from a designated high-risk corridor with no commercial rationale. Beneficial owner could not evidence source. STR filed with FIU-IND under PMLA s.12; acknowledgement STR-2026-10457. Account frozen and reported to the Nodal Officer.'
|
|
},
|
|
{
|
|
reportType: 'STR',
|
|
reportRefNo: 104,
|
|
branchCode: '1',
|
|
accountNumber: '110002117000315',
|
|
txnBranchCode: '1',
|
|
depositOrWithdrawal: 'Deposit',
|
|
txnId: 104,
|
|
txnDate: '24-01-2026',
|
|
txnTime: '11:52:14',
|
|
txnAmount: 2300000,
|
|
instrumentType: 'Cash',
|
|
instrumentId: 'CASH',
|
|
nonCustomerRef: '',
|
|
relationshipFlag: 'Customer',
|
|
thirdPartyPan: '',
|
|
declaration: 'NA',
|
|
customerName: 'SUNITA CHAUDHARY',
|
|
detectedOn: '25-01-2026',
|
|
flaggedBy: 'AML Engine — Rule R-018',
|
|
riskCategory: 'structuring',
|
|
narrative:
|
|
'Six cash deposits of ₹3.8L each across four branches on the same day, aggregating ₹23L — deliberate splitting to stay under the ₹10L single-transaction CTR limit.',
|
|
status: 'po-review'
|
|
}
|
|
];
|
|
|
|
/** ── KC1 individual customer cards (one per CTR report reference) ── */
|
|
export const KC1_INDIVIDUALS: KycIndividual[] = [
|
|
{
|
|
reportRefNo: 1,
|
|
ucic: '30115',
|
|
pan: 'AFTPK4471B',
|
|
ckycNumber: '60031115447722',
|
|
firstName: 'ANAND',
|
|
middleName: '',
|
|
lastName: 'KRISHNAN',
|
|
fatherName: 'SUBRAMANIAN KRISHNAN',
|
|
motherName: 'VASANTHA KRISHNAN',
|
|
gender: 'Male',
|
|
dob: '14-06-1979',
|
|
mobileNumber: '91-9840133015',
|
|
email: 'anand.krishnan@example.com',
|
|
primaryAddress: 'NO 18 SECOND STREET ADYAR',
|
|
state: 'TN',
|
|
city: 'CHENNAI',
|
|
pincode: '600020',
|
|
customerType: 'Individual',
|
|
annualIncome: 2200000,
|
|
occupation: 'Business',
|
|
onboardingDate: '22-07-2016',
|
|
lastKycDate: '18-06-2025',
|
|
riskLevel: 'Medium',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX4471'
|
|
},
|
|
{
|
|
reportRefNo: 2,
|
|
ucic: '30228',
|
|
pan: 'AJSPS6612D',
|
|
ckycNumber: '60032228661133',
|
|
firstName: 'MEERA',
|
|
middleName: '',
|
|
lastName: 'SUNDARAM',
|
|
fatherName: 'RAGHAVAN SUNDARAM',
|
|
motherName: 'KALYANI SUNDARAM',
|
|
gender: 'Female',
|
|
dob: '29-11-1986',
|
|
mobileNumber: '91-9886044028',
|
|
email: 'meera.sundaram@example.com',
|
|
primaryAddress: 'FLAT 9C BRIGADE HERITAGE WHITEFIELD',
|
|
state: 'KA',
|
|
city: 'BENGALURU',
|
|
pincode: '560066',
|
|
customerType: 'Individual',
|
|
annualIncome: 3600000,
|
|
occupation: 'Business',
|
|
onboardingDate: '11-01-2019',
|
|
lastKycDate: '05-05-2025',
|
|
riskLevel: 'High',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX6612'
|
|
},
|
|
{
|
|
reportRefNo: 3,
|
|
ucic: '30334',
|
|
pan: 'AMBPB9027F',
|
|
ckycNumber: '',
|
|
firstName: 'HARPREET',
|
|
middleName: 'SINGH',
|
|
lastName: 'BEDI',
|
|
fatherName: 'GURMEET SINGH BEDI',
|
|
motherName: 'JASWINDER KAUR',
|
|
gender: 'Male',
|
|
dob: '03-02-1974',
|
|
mobileNumber: '91-9815066034',
|
|
email: '',
|
|
primaryAddress: 'HOUSE 221 SECTOR 34A CHANDIGARH ROAD',
|
|
state: 'PB',
|
|
city: 'LUDHIANA',
|
|
pincode: '141001',
|
|
customerType: 'Individual',
|
|
annualIncome: 1450000,
|
|
occupation: 'Business',
|
|
onboardingDate: '30-08-2012',
|
|
lastKycDate: '14-03-2025',
|
|
riskLevel: 'Medium',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX9027'
|
|
},
|
|
{
|
|
reportRefNo: 4,
|
|
ucic: '30447',
|
|
pan: 'ANQPK3358H',
|
|
ckycNumber: '60034447335844',
|
|
firstName: 'FAROOQ',
|
|
middleName: 'ABDULLAH',
|
|
lastName: 'KHAN',
|
|
fatherName: 'ISHTIAQ AHMED KHAN',
|
|
motherName: 'NASREEN BEGUM',
|
|
gender: 'Male',
|
|
dob: '17-09-1981',
|
|
mobileNumber: '91-9701077047',
|
|
email: 'farooq.khan@example.com',
|
|
primaryAddress: '12-2-417 MEHDIPATNAM MAIN ROAD',
|
|
state: 'TG',
|
|
city: 'HYDERABAD',
|
|
pincode: '500028',
|
|
customerType: 'Individual',
|
|
annualIncome: 890000,
|
|
occupation: 'Business',
|
|
onboardingDate: '05-04-2020',
|
|
lastKycDate: '09-01-2025',
|
|
riskLevel: 'High',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'PASSPORT',
|
|
otherIdentifierNumber: 'P3358214'
|
|
},
|
|
{
|
|
reportRefNo: 5,
|
|
ucic: '30552',
|
|
pan: 'APLPR7783C',
|
|
ckycNumber: '60035552778355',
|
|
firstName: 'DEEPIKA',
|
|
middleName: '',
|
|
lastName: 'RANGANATHAN',
|
|
fatherName: 'MOHAN RANGANATHAN',
|
|
motherName: 'SHOBHA RANGANATHAN',
|
|
gender: 'Female',
|
|
dob: '08-12-1991',
|
|
mobileNumber: '91-9739088052',
|
|
email: 'deepika.r@example.com',
|
|
primaryAddress: 'VILLA 7 PALM MEADOWS SARJAPUR ROAD',
|
|
state: 'KA',
|
|
city: 'BENGALURU',
|
|
pincode: '560035',
|
|
customerType: 'Individual',
|
|
annualIncome: 2750000,
|
|
occupation: 'Profession',
|
|
onboardingDate: '19-06-2021',
|
|
lastKycDate: '27-07-2025',
|
|
riskLevel: 'Low',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX7783'
|
|
},
|
|
{
|
|
reportRefNo: 6,
|
|
ucic: '30669',
|
|
pan: 'AQWPY2194K',
|
|
ckycNumber: '',
|
|
firstName: 'RAJENDRA',
|
|
middleName: 'PRASAD',
|
|
lastName: 'YADAV',
|
|
fatherName: 'BHOLA NATH YADAV',
|
|
motherName: 'KAMLA DEVI',
|
|
gender: 'Male',
|
|
dob: '25-05-1968',
|
|
mobileNumber: '91-9451099069',
|
|
email: '',
|
|
primaryAddress: '78 GOMTI NAGAR VIBHUTI KHAND',
|
|
state: 'UP',
|
|
city: 'LUCKNOW',
|
|
pincode: '226010',
|
|
customerType: 'Individual',
|
|
annualIncome: 640000,
|
|
occupation: 'Agriculture',
|
|
onboardingDate: '17-10-2014',
|
|
lastKycDate: '22-11-2024',
|
|
riskLevel: 'Low',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX2194'
|
|
},
|
|
{
|
|
reportRefNo: 7,
|
|
ucic: '30774',
|
|
pan: 'BXKPT7788M',
|
|
ckycNumber: '',
|
|
firstName: 'SHABANA',
|
|
middleName: 'TARIQ',
|
|
lastName: 'MIRZA',
|
|
fatherName: 'TARIQ HUSSAIN MIRZA',
|
|
motherName: 'RUKHSANA MIRZA',
|
|
gender: 'Female',
|
|
dob: '11-03-1989',
|
|
mobileNumber: '91-9958100074',
|
|
email: '',
|
|
primaryAddress: '54 ZAKIR NAGAR OKHLA',
|
|
state: 'DL',
|
|
city: 'NEW DELHI',
|
|
pincode: '110025',
|
|
customerType: 'Individual',
|
|
annualIncome: 720000,
|
|
occupation: 'Self-Employed',
|
|
onboardingDate: '02-02-2023',
|
|
lastKycDate: '16-08-2025',
|
|
riskLevel: 'High',
|
|
reportType: 'CTR',
|
|
otherIdentifierName: 'AADHAAR',
|
|
otherIdentifierNumber: 'XXXXXXXX7788'
|
|
}
|
|
];
|
|
|
|
/** ── KC2 entity customer cards ── */
|
|
export const KC2_ENTITIES: KycEntity[] = [
|
|
{
|
|
reportRefNo: 2,
|
|
ucic: 'E30228',
|
|
entityName: 'SUNDARAM BULLION TRADERS',
|
|
panNumber: 'AAGFS3391Q',
|
|
gstin: '29AAGFS3391Q1ZP',
|
|
mobileNumber: '91-9886044028',
|
|
address: 'SHOP 14 COMMERCIAL STREET SHIVAJI NAGAR',
|
|
state: 'KA',
|
|
city: 'BENGALURU',
|
|
pincode: '560001',
|
|
dateOfIncorporation: '11-01-2019',
|
|
customerType: 'Sole Proprietor',
|
|
riskLevel: 'High',
|
|
onboardingDate: '11-01-2019',
|
|
lastKycDate: '05-05-2025',
|
|
isSoleProprietor: true,
|
|
ownerUcic: '30228',
|
|
ownerName: 'MEERA SUNDARAM',
|
|
reportType: 'CTR'
|
|
},
|
|
{
|
|
reportRefNo: 4,
|
|
ucic: 'E30447',
|
|
entityName: 'DECCAN SCRAP & METALS PVT LTD',
|
|
panNumber: 'AABCD8842R',
|
|
gstin: '36AABCD8842R1ZN',
|
|
mobileNumber: '91-9701077047',
|
|
address: 'PLOT 61 IDA JEEDIMETLA PHASE II',
|
|
state: 'TG',
|
|
city: 'HYDERABAD',
|
|
pincode: '500055',
|
|
dateOfIncorporation: '05-04-2020',
|
|
customerType: 'Private Limited',
|
|
riskLevel: 'High',
|
|
onboardingDate: '05-04-2020',
|
|
lastKycDate: '09-01-2025',
|
|
isSoleProprietor: false,
|
|
ownerUcic: '',
|
|
ownerName: '',
|
|
reportType: 'CTR'
|
|
}
|
|
];
|