@for (s of statuses; track s) { }
Search acknowledgement / account / job id {{ total }} records
Sub-category Layer All layers Layer 0 (victim's account) Layer 1+ (money landed here) Response to I4C Any Sent Pending / sending Failed Not yet created
@if (loading) { } @if (error) {
{{ error }}
}
I4C-MHA Cyber Fraud Complaints Log Click any complaint to open modern detail popup window
@for (row of rows; track row.id) { } @empty { }
Received Acknowledgement No. Sub-Category Target Account Layer Incidents Held (₹) Status I4C Response
{{ row.received_at | date: 'dd MMM yyyy' }}
{{ row.received_at | date: 'HH:mm:ss' }}
{{ row.acknowledgement_no }}
Job: {{ row.job_id }}
{{ row.sub_category || 'N/A' }} {{ row.payer_account_number }} {{ row.max_layer }} {{ row.incidents }} ₹{{ row.amount_held | number: '1.2-2' }} {{ row.status }} @if (row.processing_error) {
{{ row.processing_error }}
}
{{ row.response_status || 'NOT YET' }}
No complaints from I4C matched your query.
@if (selectedComplaint) {
Job ID: {{ selectedComplaint.job_id }} • Received: {{ selectedComplaint.received_at | date: 'dd MMM yyyy, HH:mm:ss' }}
@if (detailLoading) { } @if (detailError) {
{{ detailError }}
} @if (modalTab === 'overview') {
Target Customer Account
Account Number
{{ selectedComplaint.payer_account_number }}
Sub-Category
{{ selectedComplaint.sub_category }}
Complainant Bank
{{ selectedComplaint.payer_bank }} {{ selectedComplaint.payer_bank_code ? '(' + selectedComplaint.payer_bank_code + ')' : '' }}
Payment Mode
{{ selectedComplaint.mode_of_payment || 'N/A' }} {{ selectedComplaint.transaction_type ? '/ ' + selectedComplaint.transaction_type : '' }}
Wallet Reference
{{ selectedComplaint.wallet || 'None' }}
State / District
{{ selectedComplaint.state }} / {{ selectedComplaint.district }}
Source IP
{{ selectedComplaint.source_ip || '-' }}
Processing Status
Processing Status
{{ selectedComplaint.status }}
Processing Attempts
{{ selectedComplaint.processing_attempts ?? 1 }}
Processed Timestamp
{{ selectedComplaint.processed_at ? (selectedComplaint.processed_at | date: 'dd MMM yyyy, HH:mm:ss') : 'Pending processing' }}
Total Held Amount
₹{{ selectedComplaint.amount_held | number: '1.2-2' }}
Response to I4C
{{ selectedComplaint.response_status || 'NOT YET SENT' }}
@if (selectedComplaint.processing_error) {
Last Error
{{ selectedComplaint.processing_error }}
}
} @if (modalTab === 'incidents') {
@for (inc of selectedComplaint.incidents; track inc.id) { } @empty { }
# RRN Date Amount (₹) Disputed (₹) Layer Matched By Outcome Held (₹)
{{ inc.seq_no }} {{ inc.rrn }} {{ inc.transaction_date }} {{ inc.transaction_time }} {{ inc.amount | number: '1.2-2' }} {{ inc.disputed_amount | number: '1.2-2' }} {{ inc.layer }} {{ inc.match_method || 'EXACT' }} @if (inc.matched_txn_id) {
Txn #{{ inc.matched_txn_id }}
}
{{ inc.outcome || 'PENDING' }}
Code: {{ inc.status_code || '-' }}
@if (holdFor(inc.id); as hold) { ₹{{ hold.amount_held | number: '1.2-2' }} @if (hold.shortfall > 0) {
Short ₹{{ hold.shortfall | number: '1.2-2' }}
} } @else { - }
No incident details found.
} @if (modalTab === 'findings') {
@for (f of selectedComplaint.findings; track f.id) { @if (f.disputed_amount === null || f.disputed_amount === undefined) { } @else { } @if (openFindingJsonId === f.id) { } } @empty { }
Incident ID Transaction Type Amount (₹) Disputed (₹) Status Code Raw JSON
{{ f.incident_id }} {{ f.txn_type }} ({{ f.txn_type_id }}) ₹{{ f.amount | number: '1.2-2' }} - ₹{{ f.disputed_amount | number: '1.2-2' }} {{ f.status_code }} · {{ statusCodeMeaning(f.status_code) }}
Finding #{{ f.id }} Payload
{{ prettyJson(f.entry_json) }}
No section 6 findings reported yet.
} @if (modalTab === 'outbox') {
@for (o of selectedComplaint.outbox; track o.id) { } @empty { }
Created Type Status Attempts HTTP Code Sent Time Error Action
{{ o.created_at | date: 'dd MMM, HH:mm:ss' }} {{ o.message_type === 'ACK' ? 'ACK' : 'RESPONSE' }} {{ o.status }} {{ o.attempts }} {{ o.http_status ?? '-' }} {{ o.sent_at ? (o.sent_at | date: 'dd MMM, HH:mm:ss') : '-' }} {{ o.last_error }} @if (o.status === 'FAILED') { }
No outbox delivery records yet.
} @if (modalTab === 'payloads') {
Payload Received from I4C Gateway (Masked)
{{ prettyJson(selectedComplaint.raw_payload) }}
@for (o of selectedComplaint.outbox; track o.id) {
Response #{{ o.id }} Delivered to I4C
{{ prettyJson(o.payload) }}
}
}
}