Financial Intelligence Unit – India (FIU-IND)

{{ bank.name }} · {{ scopeName }} · Reporting Month {{ reportingMonthLabel }} · PMLA 2002 / FINnet 2.0
Branch @if (isHeadOffice) { } @else { {{ scopeName }} }
@if (principalOfficerName) {
Principal Officer{{ principalOfficerName }}
}
@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: {{ ctrDueDateLabel }}
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.

@if (ctrLinesLoading) {
Loading the generated CTR lines…
} @else if (ctrLinesError) {
{{ ctrLinesError }}
} @else if (!ctrTxns.length) {
No CTR has been generated yet. Pick a month under “Generate CTR” below and run it — every cash transaction of ₹10,00,000 or more, and every customer whose smaller cash transactions add up to that within the month, will be picked up from the books.
}
@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 || '—' }}
}
Alerts are triaged in RBI › AML Rules Master › Flagged Transactions. What an officer escalates there arrives here 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' }} {{ asDate(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 liveStrCases; 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 outstanding.
@if (filedStrCases.length) {

Filed with FIU-IND

Reported and closed — kept for the record, with the reference the filing was made under.

@for (sc of filedStrCases; track sc.id) { }
ID Client Conclusion Filed On FIU Reference Action
{{ sc.id }} {{ sc.clientDisplayName }} {{ sc.conclusion || '—' }} {{ asDate(sc.strFiledOn) | date: 'dd MMM yyyy' }} {{ sc.strReferenceNo || '—' }}
} @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

} @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 }}