@if (modalTab === 'overview') {
Hold Balances & Account
Customer Name
{{ h.client_name || '-' }} ({{ h.office_name }})
Account Number
{{ h.account_no }} ({{ h.account_type }})
I4C Complaint Ack
{{ h.acknowledgement_no }}
(Layer {{ h.layer }})
Disputed Amount
₹{{ h.disputed_amount | number: '1.2-2' }}
Amount Held
₹{{ h.amount_held | number: '1.2-2' }}
Shortfall
@if (h.shortfall > 0) {
₹{{ h.shortfall | number: '1.2-2' }} (Prospective hold)
} @else {
Fully covered (₹0.00)
}
Compliance & Directions
Hold Placed On
{{ h.held_at | date: 'dd MMM yyyy, HH:mm:ss' }} (System automated)
90-Day Review Due
{{ h.review_due_on }}
Debit Freeze Status
@if (h.debit_frozen) {
FROZEN
} @else {
Active (Debit Not Frozen)
}
Customer Intimation
@if (h.customer_intimated_at) {
{{ h.customer_intimated_at | date: 'dd MMM yyyy, HH:mm' }} by {{ h.intimated_by }} ({{
h.intimation_mode
}}{{ h.intimation_reference ? ', ' + h.intimation_reference : '' }})
} @else {
Not told yet{{
h.intimation_due_by ? ' - due by ' + (h.intimation_due_by | date: 'dd MMM yyyy, HH:mm') : ''
}}
}
@if (h.status === 'RELEASED') {
Released On
{{ h.released_at | date: 'dd MMM yyyy, HH:mm' }} -
{{ reasonLabel(h.release_reason_type || '') }}
{{ h.release_reference }}
}
}
@if (modalTab === 'txns') {
Account Hold Transactions
Account Txn ID
Held Amount (₹)
Placed Timestamp
Released Timestamp
@for (t of h.transactions; track t.id) {
{{ t.account_txn_id }}
₹{{ t.amount | number: '1.2-2' }}
{{ t.placed_at | date: 'dd MMM yyyy, HH:mm' }}
{{ t.released_at ? (t.released_at | date: 'dd MMM yyyy, HH:mm') : '-' }}
} @empty {
No money held yet (prospective hold waiting for funds deposit).
}
}
@if (modalTab === 'intimation') {
@if (h.customer_intimated_at) {
Customer told on {{ h.customer_intimated_at | date: 'dd MMM yyyy, HH:mm' }} by
{{ channelLabel(h.intimation_mode || '')
}}{{ h.intimation_reference ? ' - ' + h.intimation_reference : '' }} ({{ h.intimated_by }})
} @else if (h.automaticChannels?.length) {
Automatic intimation is on ({{ autoChannelsText(h) }}).
@if (h.intimationLog?.length) {
The last automatic attempt did not reach the customer; the system retries up to 3 times. You can
send again now, or call the customer and record it below.
} @else {
The notice is sent as soon as the hold is placed. If it has not gone yet, send it now.
}
Send now
} @else {
No automatic channel is configured. Call the customer (or send a letter / meet in person), then
record it below. Channels are switched on under Intimation Settings.
}
@if (!h.customer_intimated_at && h.status === 'ACTIVE' && h.amount_held > 0) {
Record Customer Intimation (manual)
}
Intimation History ({{ h.intimationLog?.length || 0 }})
When
Channel
Type
Status
Sent to
Reference / Reason
By
@for (l of h.intimationLog || []; track l.id) {
{{ l.created_at | date: 'dd MMM yyyy, HH:mm' }}
{{ channelLabel(l.channel) }}
{{ l.mode === 'AUTO' ? 'Automatic' : l.mode === 'RESEND' ? 'Sent by officer' : 'Recorded' }}
{{ l.status }}
{{ l.destination_masked || '-' }}
{{ l.failure_reason || l.provider_reference || '-' }}
{{ l.actor || '-' }}
} @empty {
No notice sent or recorded yet.
}
}
@if (modalTab === 'action') {
Raise Request on Hold (Maker)
}
@if (modalTab === 'cases') {
GRM Grievance
Customer contests the hold (MHA SOP 9.1)
@if (openGrievance) {
Open Contest
} @else if ((h.grievances || []).length) {
Logged ({{ h.grievances?.length }})
} @else {
No Grievance
}
@for (g of h.grievances || []; track g.id) {
{{ g.grievance_no || 'Draft #' + g.id }}
{{ g.stage }}
{{ g.status }}
}
@if (h.status === 'ACTIVE' && !openGrievance) {
} @else if (!h.grievances?.length) {
No contestation received. Customer can contest the hold under MHA SOP 9.1(ii).
}
MRM Money Restoration
Restitution to genuine victims
@if (openRestoration) {
In Progress
} @else if ((h.restorations || []).length) {
Logged ({{ h.restorations?.length }})
} @else {
No Restoration
}
@for (r of h.restorations || []; track r.id) {
{{ r.mrm_request_no || 'Restoration #' + r.id }}
{{ r.status }}
@if (r.restorable_amount) {
₹{{ r.restorable_amount | number: '1.2-2' }}
}
}
@if (h.status === 'ACTIVE' && !openRestoration) {
} @else if (!h.restorations?.length) {
No restitution assessed yet. Victim claims are processed under MHA SOP 9.1(iv).
}
Account Statement for Investigation
Official statement required for GRM / MRM verification and LEA requests
CSV Export
Legal & Regulatory Documents
IO notices, court orders (freeze/unfreeze), FIR copies, and customer affidavits
{{ h.documents?.length || 0 }} Attached
}
@if (modalTab === 'risk') {
@if (h.linkedAlerts?.length || (h.reportsOnAccount || 0) > 1) {
Mandatory MHA SOP & Risk Attention Required
Compliance Priority
@if ((h.reportsOnAccount || 0) > 1) {
Account flagged in {{ h.reportsOnAccount }} complaints (suspected mule pattern).
}
@if (h.linkedAlerts?.length) {
{{ h.linkedAlerts.length }} internal transfer alert(s) requiring action.
}
Review mule registration status, fraud reporting (STR/FMR), and LEA 90-day review timelines
below.
}
90-Day Lapse (MHA SOP)
{{ isPast(h.lapse_on) ? 'Lapsed' : 'In Review' }}
Review due
{{
h.review_due_on ? (h.review_due_on | date: 'dd MMM yyyy') : '-'
}}
Lapses on
{{ h.lapse_on ? (h.lapse_on | date: 'dd MMM yyyy') : 'Counted from a GRM grievance' }}
Tell LEA by
{{ h.lea_notice_due_on ? (h.lea_notice_due_on | date: 'dd MMM yyyy') : '-' }}
@if (h.lea_notice_sent_on) {
Sent {{ h.lea_notice_sent_on | date: 'dd MMM' }}
}
LEA Extension
@if (h.extension_until) {
Until {{ h.extension_until | date: 'dd MMM yyyy' }}
} @else {
None
}
Release without order
{{ h.canLapseRelease ? 'Allowed now (90-day)' : 'Not yet' }}
@if (h.status === 'ACTIVE') {
}
Fraud Reporting (RBI / FIU-IND)
{{ (h.fraudReports || []).length ? 'Case Logged' : 'Pending' }}
@for (r of h.fraudReports || []; track r.id) {
@if (r.status === 'SHOW_CAUSE') {
UCB Fraud Directions 2026: Show-cause notice required (21 days for response). STR
to FIU-IND due by {{ r.str_due_on | date: 'dd MMM yyyy' }} .
@if (!r.show_cause_sent_on) {
Issue Show-Cause Notice
Record Show-Cause Notice
} @else {
Sent: {{ r.show_cause_sent_on | date: 'dd MMM yyyy' }}
Reply due: {{ r.show_cause_due_on | date: 'dd MMM yyyy' }}
@if (r.show_cause_responded_on) {
Replied {{ r.show_cause_responded_on | date: 'dd MMM' }}
}
@if (!r.show_cause_responded_on) {
}
Final Classification Order
Order reference
Classify as Fraud (FMR in 14d)
Not Fraud (Close)
}
}
Classified
{{ r.classified_on ? (r.classified_on | date: 'dd MMM yyyy') : 'Not yet' }} •
{{ r.status }}
Police / LEA
{{ r.police_ref || 'Not yet' }}
{{
r.police_reported_on ? '· ' + (r.police_reported_on | date: 'dd MMM yyyy') : ''
}}
RBI FMR
{{
r.fmr_ref
? r.fmr_ref + ' · filed ' + (r.fmr_filed_on | date: 'dd MMM yyyy')
: 'Due ' + (r.fmr_due_on | date: 'dd MMM yyyy')
}}
FIU-IND STR
{{
r.str_ref
? r.str_ref + ' · filed ' + (r.str_filed_on | date: 'dd MMM yyyy')
: 'Due ' + (r.str_due_on | date: 'dd MMM yyyy')
}}
@if ((r.status === 'OPEN' || r.status === 'SHOW_CAUSE') && fraudForm['id'] !== r.id) {
Update Filings
}
}
@if (fraudForm['id']) {
}
@if (!(h.fraudReports || []).length) {
No fraud case initiated yet. Opening one starts the mandatory STR (7 days) and
show-cause notice (21 days) workflows.
Open Fraud Case
}
Mule-Account Register
1"
[class.i4c-badge--green]="(h.reportsOnAccount || 0) <= 1"
>
{{ (h.reportsOnAccount || 0) > 1 ? 'Mule Flagged' : 'Standard' }}
In {{ h.reportsOnAccount || 1 }} I4C complaint(s) • Flags automatically at ≥
2
@for (f of h.muleFlags || []; track f.id) {
{{ f.status }}
{{ f.source }}
{{ f.flagged_at | date: 'dd MMM yyyy' }}
{{ f.reason }}
@if (f.review_remarks) {
}
@if (f.status === 'SUSPECTED') {
}
}
@if (!(h.muleFlags || []).length) {
}
Money Moved Inside Bank
{{ (h.linkedAlerts || []).length ? h.linkedAlerts.length + ' Alert' : 'Clean' }}
@for (a of h.linkedAlerts || []; track a.id) {
{{ a.kind === 'INTERNAL_TRANSFER' ? (a.target_type | titlecase) + ' account' : 'Loan' }}
{{ a.target_no }}
₹{{ a.amount | number: '1.2-2' }}
{{ a.status }}
Moved on {{ a.moved_on | date: 'dd MMM yyyy' }}
@if (a.remarks) {
• {{ a.remarks }}
}
@if (a.status === 'OPEN') {
}
} @empty {
No internal transfers or loan repayments detected from
this account.
}
Digital Channels
{{ h.digital_suspended ? 'Suspended' : 'Operational' }}
@for (b of h.channelBlocks || []; track b.id) {
{{ b.status }}
{{ b.channels }}
Placed {{ b.placed_at | date: 'dd MMM yyyy' }} by {{ b.placed_by
}}{{ b.lifted_at ? ' · lifted ' + (b.lifted_at | date: 'dd MMM') : '' }}
} @empty {
All digital channels active (UPI, IMPS, NEFT, RTGS, ATM, cards).
To suspend or restore access, submit a request under Request Action (Maker) .
}
@if (h.excludedKind?.length) {
Listed as a {{ h.excludedKind[0].kind | lowercase }} account: disputed amount held, but
no prospective hold on future credits and no suspension (MHA SOP 9.1(iii)).
}
@if (repaidLoan(h) && h.relatedAccounts?.length) {
Suspect's Other Accounts (CFCFRMS)
Fraud money repaid a loan here; notify suspect's other accounts on CFCFRMS (MHA SOP 9.1(v)).
@for (r of h.relatedAccounts; track r.account_no) {
{{ r.account_type | titlecase }} {{ r.account_no }}
₹{{ r.balance | number: '1.2-2' }}
}
}
}
@if (modalTab === 'history') {
Requests Audit History on this Hold
Action
Reason / Order
Status
Maker Details
Checker Details
@for (a of h.actions; track a.id) {
{{ a.action }}
{{ reasonLabel(a.reason_type) }}
{{ a.order_reference }} {{ a.authority ? '- ' + a.authority : '' }}
{{ a.status }}
@if (a.rejection_reason || a.failure_message) {
{{ a.rejection_reason || a.failure_message }}
}
{{ a.maker_name }}
{{ a.maker_at | date: 'dd MMM, HH:mm' }}
{{ a.checker_name || '-' }}
@if (a.checker_at) {
{{ a.checker_at | date: 'dd MMM, HH:mm' }}
}
}
}