Financial Intelligence Unit – India (FIU-IND)

{{ bank.name }} · {{ scopeName }} · Reporting Month {{ bank.reportingMonth }} · PMLA 2002 / FINnet 2.0
Branch @if (isHeadOffice) { } @else { {{ scopeName }} }
Principal Officer{{ bank.principalOfficer }}
REBANK BUID{{ bank.reBuid }}
@if (activeTab === 'dashboard') {
{{ totalReports | number }}
CTR Reports
{{ totalCtrTxns | number }} txns this cycle
₹{{ totalCtrAmount | number: '1.0-0' }}
Total CTR Amount
aggregate cash movement
{{ liveStrPending | number }}
STR Pending
{{ liveStrOpen }} to investigate · {{ liveStrAwaitingFiling }} awaiting filing
{{ liveStrFiled | number }}
STR Filed
{{ liveStrCleared }} concluded clear
{{ totalCustomers | number }}
Customers in Cycle
{{ kc1.length }} ind · {{ kc2.length }} entity

When to report to FIU-IND

The five reports a reporting entity owes under the Prevention of Money Laundering Act. All are filed electronically through the FINnet 2.0 portal.

@for (o of obligations; track o.code) {
{{ o.code }} {{ o.name }} @if (o.handled) { Filed here } @else { Tracked }
{{ o.trigger }}
{{ o.deadline }}
{{ o.note }}
@if (o.code === 'CTR') { } @else if (o.code === 'STR') { }
}
CTR — Cash Transaction Report
Threshold: ₹{{ bank.cashThreshold | number }} per single txn / aggregate per month
Due: 15 Feb 2026
STR — Suspicious Transaction
Filing window: within 7 days of detection
To investigate: {{ liveStrOpen }} · Awaiting filing: {{ liveStrAwaitingFiling }}
Filed: {{ liveStrFiled }} · Concluded clear: {{ liveStrCleared }}
FINnet 2.0 Files
6 CSVs: TC1 / TC2 / KC1 / KC2 / Account_Detail / Account_Person_Relation
+ STR XML for suspicious filings
} @if (activeTab === 'ctr') {

CTR Submission Files — FINnet 2.0

The CTR is built in this order: the account is described first, then who is behind it, then the two transaction files. Every grid below is the exact content of its CSV. The customer cards (KC1 / KC2) travel with the same bundle and are worked on the Customer Cards tab.

@for (f of finnetSequence; track f.key) { @if (!$last) { } }

Step {{ openFinnetFile.step }} — {{ openFinnetFile.title }}

{{ openFinnetFile.purpose }}

@for (h of openFinnetFile.table.headers; track $index) { } @for (r of openFinnetFile.table.rows; track $index) { @for (c of r; track $index) { } } @empty { }
#{{ h }}
{{ $index + 1 }}{{ c }}
@if (openFinnetFile.key === 'tc1') { No ATM or card transactions match the current scope. When the bank books none at all, TC1 is still submitted as a header-only file — that is what FIU-IND expects. } @else { No rows for the current filters. }

Monthly CTR Reports

Threshold: ₹{{ bank.cashThreshold | number }} per single txn / connected aggregate per month

@for (r of amlCtrReports; track r.id) { } @empty { }
Month Generated On Records Status Submitted On
{{ r.reportMonth }} {{ r.generatedOn | date: 'medium' }} {{ r.recordCount }} {{ r.status }} {{ r.submittedOn ? (r.submittedOn | date: 'medium') : '—' }}
No CTR reports generated yet.
} @if (activeTab === 'str') { @if (sanctionsStrCases.length) {

Sanctions STRs (UAPA s.51-A)

Confirmed matches against the UN Security Council Consolidated List. Accounts are frozen; the STR must reach FIU-IND within 7 days of confirmation.

@for (str of sanctionsStrCases; track str.id) { }
Alert Client Screened Name Listed As Confirmed On Due Status STR Reference
#{{ str.id }} @if (str.clientId) { {{ str.clientName || str.clientId }} } @else { Not onboarded } {{ str.screenedName }} {{ str.matchedNames || '—' }} {{ str.approvedOn | date: 'mediumDate' }} {{ str.strDueDate || '—' }} {{ strStatusLabel(str) }} {{ str.fiuStrReference || '—' }}
}

Live AML Alerts (Awaiting Triage)

Flagged by the monitoring engine for suspicious behavioral patterns — triage and whitelist or escalate

@for (alert of amlSuspiciousAlerts; track alert.id) { } @empty { }
ID Client Type Rule Amount Raised On Status Routes To Notes Action
{{ alert.id }} {{ alert.clientDisplayName }} {{ alert.transactionType }} {{ alert.ruleCode }} — {{ alert.ruleDescription }} ₹{{ alert.amount | number: '1.0-0' }} {{ alert.raisedOn | date: 'medium' }} {{ alert.status }} {{ alertRouteLabel(alert.status, false) }} @if (alert.status === 'RAISED' || alert.status === 'UNDER_REVIEW') { } @else { {{ alert.reviewNotes }} } @if (alert.status === 'RAISED' || alert.status === 'UNDER_REVIEW') {
}
No suspicious behavioral alerts awaiting triage.

Pending awaiting Whitelist/Escalate decision · → STR escalated to Principal Officer as an STR case


Cleared Alerts (Whitelisted)

Reviewed and closed as false positives — no STR filed. Retained with the evidence relied on.

@for (alert of amlWhitelistedAlerts; track alert.id) { } @empty { }
ID Client Type Rule Amount Raised On Cleared By Evidence
{{ alert.id }} {{ alert.clientDisplayName }} {{ alert.transactionType }} {{ alert.ruleCode }} — {{ alert.ruleDescription }} ₹{{ alert.amount | number: '1.0-0' }} {{ alert.raisedOn | date: 'medium' }} {{ alert.reviewedByUsername || '—' }} {{ alert.reviewNotes || '—' }}
No alerts have been cleared.

Cleared whitelisted — no report filed, evidence retained for audit


Live STR Cases

Escalated by an AML Officer; Principal Officer investigates, concludes and files with FIU-IND within 7 working days

@for (sc of amlStrCases; track sc.id) { } @empty { }
ID Client Cumulative Cases Assigned PO Conclusion FIU Due Date Status Action
{{ sc.id }} {{ sc.clientDisplayName }} {{ sc.cumulativeStrCaseCountForClient }} {{ sc.assignedPoUsername || '—' }} {{ sc.conclusion || '—' }} {{ sc.fiuDueDate || '—' }} {{ sc.status }}
No STR cases yet.
@if (selectedStrCase) {

STR Case #{{ selectedStrCase.id }} — {{ selectedStrCase.clientDisplayName }}

Alert #{{ selectedStrCase.alertId }} · {{ selectedStrCase.cumulativeStrCaseCountForClient }} cumulative STR case(s) for this client @if (selectedStrCase.cumulativeStrCaseCountForClient >= 3) { Risk category auto-escalated }

{{ selectedStrCase.status }} {{ strCaseOutcome(selectedStrCase) }}
Principal Officer verification — mark each point as found {{ answeredCount }} / {{ strChecklist.length }} answered
@for (item of strChecklist; track item.key) { }
Verification point Genuine Not satisfied
{{ item.label }}
{{ item.hint }}
@if (!allAnswered) { Answer every verification point to determine the outcome — {{ strChecklist.length - answeredCount }} still pending. } @else if (derivedConclusion === 'NOT_SUSPICIOUS') { Not suspicious. All {{ strChecklist.length }} points found genuine — the case will be closed and nothing filed with FIU-IND. } @else { Suspicious — STR must be filed. {{ failedFindings.length }} of {{ strChecklist.length }} points not satisfied: {{ failedFindings[0].label }} @if (failedFindings.length > 1) { and {{ failedFindings.length - 1 }} more } . }
@if (selectedStrCase.status === 'CONCLUDED_SUSPICIOUS') {
}
}

FINnet STR XML Export Template

Detected by AML rules engine + branch compliance officers; filed within 7 days

@for (s of filteredStr; track s.reportRefNo) {
STR-{{ s.reportRefNo }} {{ statusLabel(s.status) }} {{ riskLabel(s.riskCategory) }}
{{ s.depositOrWithdrawal }} ₹{{ s.txnAmount | number: '1.0-0' }}
{{ s.customerName }}
{{ s.accountNumber }}
{{ s.txnDate }} {{ s.txnTime }}
{{ s.detectedOn }}
{{ s.flaggedBy }}
{{ s.instrumentType }} {{ s.instrumentId }}
{{ s.branchCode }} {{ branchNameFor(s.branchCode) }}

{{ s.narrative }}

@if (s.poRemarks) {

{{ s.poRemarks }}

} @if (s.poFinding) {

{{ poFindingLabel(s.poFinding) }}

} @if (s.status === 'awaiting-filing') {

Generate the FINnet STR XML, upload it on the FIU-IND portal under {{ bank.principalOfficer }}'s digital signature, then record the acknowledgement number here.

} @if (s.status === 'filed' && s.fiuReferenceNo) {
Filed with FIU-IND on {{ s.filedOn }} · acknowledgement {{ s.fiuReferenceNo }}
} @if (!s.poFinding && investigatingStr?.reportRefNo !== s.reportRefNo) {
} @if (investigatingStr?.reportRefNo === s.reportRefNo) {
Principal Officer investigation — STR-{{ s.reportRefNo }}
1 Documentary evidence called for
2 Customer’s explanation of the source
3 Verification checklist {{ answeredCount }} / {{ strChecklist.length }} answered
@for (item of strChecklist; track item.key) { }
Verification point Genuine Not satisfied
{{ item.label }}
{{ item.hint }}
@if (!canConcludeLocal) { Complete all three steps to determine the outcome. @if (!evidenceRecorded) { Evidence not yet recorded. } @if (!allAnswered) { {{ strChecklist.length - answeredCount }} verification point(s) pending. } } @else if (derivedConclusion === 'NOT_SUSPICIOUS') { Source of funds established. Case closes as clean — the transaction stays in the CTR report and no STR is filed with FIU-IND. } @else { Source of funds not established. {{ failedFindings.length }} point(s) unsatisfied — an STR will be filed with FIU-IND in addition to the CTR. }
}
} @empty {
No STR records match the filters.
}
} @if (activeTab === 'customers') {

Customer Cards — KC1 (Individuals) & KC2 (Entities)

Customers attached to reports filed in this cycle

KC1 — Individuals
@for (k of kc1; track k.ucic) { }
Ref UCIC Name Gender DOB PAN Mobile City Annual Income Risk
{{ k.reportRefNo }} {{ k.ucic }} {{ k.firstName }} {{ k.middleName }} {{ k.lastName }} {{ k.gender }} {{ k.dob }} {{ k.pan }} {{ k.mobileNumber }} {{ k.city }}, {{ k.state }} ₹{{ k.annualIncome | number }} {{ k.riskLevel }}
KC2 — Entities
@for (k of kc2; track k.ucic) { }
Ref UCIC Entity Name PAN GSTIN City Type Owner (if Sole Prop) Risk
{{ k.reportRefNo }} {{ k.ucic }} {{ k.entityName }} {{ k.panNumber }} {{ k.gstin }} {{ k.city }}, {{ k.state }} {{ k.customerType }} {{ k.isSoleProprietor ? k.ownerName : '—' }} {{ k.riskLevel }}
} @if (activeTab === 'files') {

FINnet 2.0 Submission Files

6 CSV files in FIU-IND prescribed schema, plus STR XML. Counts reflect any filters set on the CTR and STR tabs, so every file in the bundle covers the same transactions.

TC1.csv

ATM / card transaction template (header only — no card txns this cycle)

TC2.csv

Branch / cash transactions ({{ filteredCtr.length }} rows)

KC1.csv

Individual customer cards ({{ kc1.length }} rows)

KC2.csv

Entity customer cards ({{ kc2.length }} rows)

Account_Detail.csv

Per-account 12-month aggregates derived from CTR list

Account_Person_Relation.csv

Account ↔ customer relationship mapping

STR.xml

Suspicious Transaction Report ({{ strSuspects.length }} suspects — cases concluded clean are excluded)

Note: Files are emitted in FIU-IND FINnet 2.0 CSV schema. Submit via the FINnet portal under {{ bank.principalOfficer }}'s digital signature. CTR is due by the 15th of the following month; STR within 7 days of detection.
}
{{ toastMsg }}