Layer 0 ack no. {{ total }} records
MR id / ack / victim / account / UTR Status All open All @for (s of statuses; track s.value) { {{ s.label }} } @if (role === 'BENEFICIARY_BANK') { Bank action Any Pending @for (a of bankActions; track a.value) { {{ a.label }} } } @if (role === 'BENEFICIARY_BANK') { Past 15-day deadline Contested }
@if (loading) { } @if (error) {
{{ error }}
}
MRM Money Restoration Assess a hold for MRM from the hold (Holds Register → hold → GRM / MRM). Click a row to work on it.
@if (role === 'BENEFICIARY_BANK') { } @for (r of rows; track r.id) { @if (role === 'BENEFICIARY_BANK') { } } @empty { }
Opened Ack / MR idAccount on hold Basis Restorable (₹)Victim Status Money
{{ r.created_at | date: 'dd MMM yyyy' }}
{{ r.created_by }}
{{ r.acknowledgement_no }}
{{ r.mrm_request_no || 'no MR id yet' }}
{{ r.hold_account_no }}
{{ r.client_name }} · held ₹{{ r.amount_held | number: '1.2-2' }}
{{ label(bases, r.basis) }} {{ r.restorable_amount | number: '1.2-2' }} {{ r.victim_name || '-' }}
{{ r.victim_account_no }} {{ r.victim_ifsc }}
{{ label(statuses, r.status) }} @if (r.bank_action && r.bank_action !== 'PENDING') {
{{ r.bank_action }}
} @if ( r.compliance_due_on && r.role === 'BENEFICIARY_BANK' && r.status !== 'RESTORED' && r.status !== 'CLOSED' ) {
Credit by {{ r.compliance_due_on | date: 'dd MMM' }}
} @if (r.contested) { CONTESTED } @if (r.transfer_error) {
{{ r.transfer_error }}
}
@if (r.role === 'VICTIM_BANK') { {{ r.received_amount ? '₹' + (r.received_amount | number: '1.2-2') + ' received' : r.victim_status || '-' }} } @else { {{ r.restored_amount ? '₹' + (r.restored_amount | number: '1.2-2') : '-' }}
{{ r.utr || r.transfer_status || '' }}{{ r.mrm_updated ? ' · on MRM' : '' }}
}
No restorations match these filters.
@if (selected; as r) {
@if (isVictim) { Our customer's account {{ r.victim_account_no }} } @else { Held on {{ r.hold_account_no }} ({{ r.client_name }}): ₹{{ r.amount_held | number: '1.2-2' }} · disputed ₹{{ r.disputed_amount | number: '1.2-2' }} }
@if (tab === 'workflow') {
@if (!isVictim) { @if (r.status === 'ASSESSED' || r.status === 'REQUESTED') {
1. Assessment (what the bank updates on MRM)
Restoration @for (b of bases; track b.value) { {{ b.label }} } @if (possible) { Restorable amount (₹) }
@if (proRata) { @for (h of proRata.holds; track h.id) { }
Complaint (ack) Disputed Held Pro-rata share
{{ h.acknowledgement_no }}{{ h.id === r.hold_id ? ' (this one)' : '' }} {{ h.disputed_amount | number: '1.2-2' }} {{ h.amount_held | number: '1.2-2' }} {{ h.share | number: '1.2-2' }}
₹{{ proRata.amount | number: '1.2-2' }} held on {{ proRata.accountNo }} split by disputed amount (total ₹{{ proRata.totalDisputed | number: '1.2-2' }}).
} Remarks{{ possible ? '' : ' (why not possible) *' }}
@if (r.status === 'ASSESSED' && !r.mrm_updated) { }
} @if (r.status === 'ASSESSED' || r.status === 'REQUESTED' || r.status === 'IN_POOL') {
{{ r.status === 'IN_POOL' ? 'Refund account (correct it if the victim bank referred back)' : "2. Victim's MRM request, as the IO sent it" }}
@if (r.status !== 'IN_POOL') { MRM request id * } Victim name * Refund account no. * IFSC (blank = this bank) Victim's bank @if (request['victimIfsc']) { Send by NEFT IMPS RTGS }
@if (r.status !== 'IN_POOL') {
IO name Police station BNSS 106 notice no. Indemnity bond received (Rs 10 stamp paper)
FIR no. (needed above ₹{{ r.firThreshold }}) Court order no. Court
}
} @if (r.status === 'REQUESTED') {
3. Bank action (as on MRM)
Action @for (a of bankActions; track a.value) { {{ a.label }} } @if (action.action === 'REFER_BACK_LEA') { Reason @for (x of referBackReasons; track x.value) { {{ x.label }} } } @else { Remarks{{ action.action === 'COMPLIED' ? '' : ' *' }} }
@if (action.action === 'COMPLIED') { @if (papers.length) {
Still needed before compliance: {{ papers.join(', ') }}.
}
₹{{ r.restorable_amount | number: '1.2-2' }} goes to {{ r.victim_name }} ({{ r.victim_account_no }}{{ r.victim_ifsc ? ', ' + r.victim_ifsc : ', this bank' }}) once a second officer approves. @if (r.victim_ifsc && !r.outwardReady) { Map the I4C_RESTORATION_PAYABLE and FUNDTRANSFER_OUTWARD_SUSPENSE GLs (Organisation > Clearing GL Configuration) before an outward restoration can be approved. } @if (r.compliance_due_on) {
SOP: credit the victim by {{ r.compliance_due_on | date: 'dd MMM yyyy' }} (15 days from the notice).
}
} @else if (action.action === 'NOT_COMPLIED' || action.action === 'REFER_BACK_LEA') {
MRM asks for the account's bank statement with this action; attach it on the Documents tab.
}
} @if (r.status === 'AWAITING_APPROVAL') {
Restoration request #{{ r.action_request_id }} is waiting for a second officer on the Approvals page. On approval ₹{{ r.restorable_amount | number: '1.2-2' }} leaves {{ r.hold_account_no }} at once.
} @if (r.status === 'IN_POOL') {
₹{{ r.restored_amount | number: '1.2-2' }} is held in the restoration payable
It left the suspect account on approval (Dr suspect, Cr I4C Restoration Payable). The outward {{ r.transfer_channel }} to {{ r.victim_account_no }} / {{ r.victim_ifsc }} has not gone through yet{{ r.transfer_error ? ': ' + r.transfer_error : '.' }}
} @if (r.status === 'TRANSFER_PENDING') {
Outward transfer {{ r.fund_transfer_ref }} is {{ r.transfer_status }} (fund-transfer approval / NEFT batch). The I4C Hold Review job marks it restored once it settles.
} @if (r.status === 'RESTORED') {
Restored ₹{{ r.restored_amount | number: '1.2-2' }} on {{ r.restored_at | date: 'dd MMM yyyy, HH:mm' }}
On MRM, choose "Compliance of restoration order" and enter amount ₹{{ r.restored_amount | number: '1.2-2' }}, transaction id {{ r.utr }} and this date and time.
} @if ((r.status === 'RESTORED' || r.status === 'CLOSED') && r.restored_at) {
Suspect's challenge (SOP: within 15 days of the refund, until {{ r.challenge_until | date: 'dd MMM yyyy' }})
@if (r.contested) {
Contested on {{ r.contested_on | date: 'dd MMM yyyy' }}: {{ r.contest_remarks }}. The investigation continues; the bank and the account holder cooperate with the IO.
} @else {
Details
}
} } @else { @if (r.status !== 'CLOSED') {
Customer's claim on the bank (RBI customer protection in fraudulent EBTs)
@if (r.liability_category) {
{{ r.liability_regime === 'RBI_2026' ? 'RBI 2026 directions (RBI/2026-27/172)' : 'RBI 2017 framework' }} · {{ label(liabilityCategories, r.liability_category) }} · transaction {{ r.txn_date | date: 'dd MMM yyyy' }} · reported {{ r.customer_reported_on | date: 'dd MMM yyyy' }}{{ r.cross_border ? ' · cross-border' : '' }}
{{ r.liability_note }}
@if (r.shadow_credit_due_on) { Shadow reversal due {{ r.shadow_credit_due_on | date: 'dd MMM yyyy' }} · } Resolve by {{ r.resolution_due_on | date: 'dd MMM yyyy' }} ({{ r.liability_regime === 'RBI_2026' ? (r.cross_border ? '60' : '45') + ' calendar days' : '90 days' }})
}
Caused by @for (c of liabilityCategories; track c.value) { {{ c.label }} } Gross loss (₹) Recovered so far (₹) Cross-border
@if (r.liability_category === 'CUSTOMER_NEGLIGENCE') {
Compensation (RBI 2026, para 65.1T): @if (r.comp_eligible) { ₹{{ r.comp_amount | number: '1.2-2' }} ({{ r.comp_reason }}) · RBI ₹{{ r.comp_share_rbi | number: '1.2-2' }} · this bank ₹{{ r.comp_share_own | number: '1.2-2' }} · beneficiary bank ₹{{ r.comp_share_beneficiary | number: '1.2-2' }} } @else { not eligible: {{ r.comp_reason }} }
@if (r.comp_eligible && !r.comp_status) { } @else if (r.comp_status === 'APPLIED') {
Applied {{ r.comp_applied_on | date: 'dd MMM yyyy' }}; pay by {{ r.comp_due_on | date: 'dd MMM yyyy' }}.
} @else if (r.comp_status) {
Compensation {{ r.comp_status }} {{ r.comp_paid_on | date: 'dd MMM yyyy' }}
} } @if (r.liability_category && r.liability_category !== 'CUSTOMER_NEGLIGENCE') { @if (!r.shadow_credit_status || r.shadow_credit_status === 'REJECTED') {
Shadow reversal (₹)
A provisional credit the customer cannot use until the case is decided (a lien is placed on it).
} @else if (r.shadow_credit_status === 'PENDING') {
Shadow reversal of ₹{{ r.shadow_credit_amount | number: '1.2-2' }} requested by {{ r.shadow_credit_requested_by }}; a different officer approves it.
} @else {
Shadow reversal ₹{{ r.shadow_credit_amount | number: '1.2-2' }} posted {{ r.shadow_credited_at | date: 'dd MMM yyyy' }} by {{ r.shadow_credited_by }} {{ r.shadow_finalised_at ? '· final ' + (r.shadow_finalised_at | date: 'dd MMM yyyy') : '· provisional (lien on it)' }} @if (r.regularised_at) { · regularised ₹{{ r.regularised_amount | number: '1.2-2' }} on {{ r.regularised_at | date: 'dd MMM yyyy' }} }
@if (!r.shadow_finalised_at && !r.regularised_at) { } @if (!r.regularised_at && r.received_amount) { }
} }
Restored money received for our customer
Amount (₹) * UTR / transaction id * Credited to account
@if (r.status === 'RECEIVED') { }
Or: why no (more) restoration is expected
Victim status @for (v of victimStatuses; track v.value) { {{ v.label }} } Justification *
} @else {
Case closed{{ r.victim_status ? ': ' + label(victimStatuses, r.victim_status) : '' }}.
} } @if (!isVictim && r.status === 'CLOSED') {
Closed{{ r.bank_action === 'NOT_COMPLIED' ? ': order not complied (' + r.bank_action_reason + ')' : '' }}.
}
} @if (tab === 'details') {
Request & papers
MR id
{{ r.mrm_request_no || '-' }}
Basis
{{ label(bases, r.basis) }} {{ r.basis_remarks ? '(' + r.basis_remarks + ')' : '' }}
Restorable
{{ r.restorable_amount | number: '1.2-2' }}
Victim
{{ r.victim_name }} · {{ r.victim_account_no }} {{ r.victim_ifsc }} {{ r.victim_bank_name }}
IO
{{ r.io_name || '-' }} {{ r.io_police_station }}
BNSS 106
{{ r.bnss_notice_no || '-' }} {{ r.bnss_notice_date | date: 'dd MMM yyyy' }}
Indemnity bond
{{ r.indemnity_bond_received ? 'Received' : 'Not received' }}
FIR
{{ r.fir_no || '-' }} {{ r.fir_date | date: 'dd MMM yyyy' }}
Court order
{{ r.court_order_no || '-' }} {{ r.court_order_date | date: 'dd MMM yyyy' }} {{ r.court_name }}
Money
Bank action
{{ r.bank_action }} {{ r.bank_action_reason ? '(' + r.bank_action_reason + ')' : '' }}
Approval
@if (r.actionRequest?.length) { #{{ r.actionRequest[0].id }} {{ r.actionRequest[0].status }} {{ r.actionRequest[0].checker_name || '' }} {{ r.actionRequest[0].failure_message || r.actionRequest[0].rejection_reason || '' }} } @else { - }
Channel
{{ r.transfer_channel || '-' }} {{ r.transfer_status || '' }}
Pool transfer
{{ r.pool_transfer_id || '-' }}
Outward ref
{{ r.fund_transfer_ref || '-' }}
UTR / txn id
{{ r.utr || r.received_utr || '-' }}
Restored
{{ r.restored_amount ? (r.restored_amount | number: '1.2-2') : '-' }} {{ r.restored_at | date: 'dd MMM yyyy, HH:mm' }}
On MRM
{{ r.mrm_updated ? 'Yes, by ' + r.mrm_updated_by + ' ' + (r.mrm_updated_at | date: 'dd MMM yyyy') : 'Not yet' }}
} @if (tab === 'documents') {
}
}