CREDIT · NON-PERFORMING ASSETS · {{ scopeName | uppercase }}

{{ reportLabel(activeReport) }}

RBI IRAC-norm classification (Standard → SMA-0/1/2 → Sub-Standard → Doubtful-1/2/3 → Loss) across {{ allAccounts.length }} of the bank's {{ bankWideTotalAccounts }} loan accounts, as on {{ asOnDate }}.

@if (isHeadOffice) { } @else { }
Total Advances ₹{{ totalAdvances | number: '1.0-0' }} {{ allAccounts.length }} accounts
Gross NPA (GNPA) ₹{{ gnpaAmount | number: '1.0-0' }} {{ npaAccounts.length }} accounts · {{ gnpaRatio | number: '1.2-2' }}% of advances
Net NPA (NNPA) ₹{{ netNpaAmount | number: '1.0-0' }} {{ nnpaRatio | number: '1.2-2' }}% of advances
Provision Held (NPA) ₹{{ totalNpaProvisionHeld | number: '1.0-0' }} Recovered to date ₹{{ totalRecoveredAmount | number: '1.0-0' }}
Restructured Accounts {{ restructuredAccounts.length }} ₹{{ restructuredOutstanding | number: '1.0-0' }} outstanding
@for (g of ['reports', 'analysis', 'classification']; track g) { }
@for (m of groupOf(activeGroup); track m.id) { }
@if (activeReport === 'interest') {
@for (a of paged(npaAccounts); track a.accountNo) { } @empty { }
Account No Customer Branch Product Stage Outstanding Rate Overdue Days Interest Reversed
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ a.productName }} {{ stageLabel(stage(a)) }} ₹{{ a.outstandingBalance | number: '1.0-0' }} {{ a.interestRate }}% {{ a.overdueDays }} ₹{{ interestRev(a) | number: '1.0-0' }}
No NPA accounts in this branch.
Total Interest Reversed ({{ npaAccounts.length }} accounts) ₹{{ sumInterest(npaAccounts) | number: '1.0-0' }}
@if (npaAccounts.length > pageSize) {
Showing {{ rangeStart(npaAccounts) }}–{{ rangeEnd(npaAccounts) }} of {{ npaAccounts.length }}
Page {{ currentPage }} of {{ pageCount(npaAccounts) }}
}
} @if (activeReport === 'status') {
@for (a of paged(npaAccounts); track a.accountNo) { } @empty { }
Account No Customer Branch Product Secured Outstanding Overdue Amount Overdue Days NPA Since Stage Restructured Legal Action Provision Required
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ a.productName }} {{ a.secured ? 'Yes' : 'No' }} ₹{{ a.outstandingBalance | number: '1.0-0' }} ₹{{ a.overdueAmount | number: '1.0-0' }} {{ a.overdueDays }} {{ npaSince(a) }} {{ stageLabel(stage(a)) }} {{ a.isRestructured ? 'Yes' : 'No' }} {{ legalActionLabel(a.legalActionStatus) }} ₹{{ provisionReq(a) | number: '1.0-0' }}
No NPA accounts in this branch.
@if (npaAccounts.length > pageSize) {
Showing {{ rangeStart(npaAccounts) }}–{{ rangeEnd(npaAccounts) }} of {{ npaAccounts.length }}
Page {{ currentPage }} of {{ pageCount(npaAccounts) }}
}
} @if (activeReport === 'recovery') {
@for (r of paged(recoveryRows); track r.accountNo + r.date + r.amount) { } @empty { }
Date Account No Customer Branch Mode Recovered Amount
{{ r.date }} {{ r.accountNo }} {{ r.customerName }} {{ r.branchName }} {{ r.mode }} ₹{{ r.amount | number: '1.0-0' }}
No recoveries recorded yet.
Total Recovered ₹{{ totalRecoveredAmount | number: '1.0-0' }}
@if (recoveryRows.length > pageSize) {
Showing {{ rangeStart(recoveryRows) }}–{{ rangeEnd(recoveryRows) }} of {{ recoveryRows.length }}
Page {{ currentPage }} of {{ pageCount(recoveryRows) }}
}
} @if (activeReport === 'summary') {
@for (row of stageSummary; track row.stage) { }
Classification Accounts Outstanding Provision Required
{{ row.label }} {{ row.count }} ₹{{ row.outstanding | number: '1.0-0' }} ₹{{ row.provisionReq | number: '1.0-0' }}
Total {{ grandTotalAccounts }} ₹{{ grandTotalOutstanding | number: '1.0-0' }} ₹{{ grandTotalProvision | number: '1.0-0' }}
@if (isHeadOffice && !branchFilter) {
@for (row of branchSummary; track row.branchCode) { }
Branch Total Accounts Total Advances NPA Accounts GNPA Outstanding Provision Required GNPA %
{{ row.branchName }} {{ row.totalAccounts }} ₹{{ row.totalAdvances | number: '1.0-0' }} {{ row.npaCount }} ₹{{ row.npaOutstanding | number: '1.0-0' }} ₹{{ row.provisionReq | number: '1.0-0' }} {{ row.gnpaRatio | number: '1.2-2' }}%
} } @if (activeReport === 'account-detail') {
@if (selectedAccount; as a) {
Branch
{{ a.branchName }}
Product
{{ a.productName }}
Secured
{{ a.secured ? 'Yes' : 'No' }}
Guarantor
{{ a.guarantorName }}
Sanctioned Amount
₹{{ a.sanctionedAmount | number: '1.0-0' }}
Disbursement Date
{{ a.disbursementDate }}
Interest Rate
{{ a.interestRate }}%
Outstanding Balance
₹{{ a.outstandingBalance | number: '1.0-0' }}
Overdue Amount
₹{{ a.overdueAmount | number: '1.0-0' }}
Overdue Days
{{ a.overdueDays }}
NPA Since
{{ npaSince(a) }}
Restructured
{{ a.isRestructured ? 'Yes' : 'No' }}
Last Payment Date
{{ a.lastPaymentDate }}
Collateral Value
₹{{ a.collateralValue | number: '1.0-0' }}
Provisioning Rate
{{ provisionRate(a) }}%
Provision Required
₹{{ provisionReq(a) | number: '1.0-0' }}
Provision Held
₹{{ provisionHeldAmt(a) | number: '1.0-0' }}
Interest Reversed
₹{{ interestRev(a) | number: '1.0-0' }}
Total Recovered
₹{{ recovered(a) | number: '1.0-0' }}
Movement (vs Last Quarter)
{{ movement(a) }}
NPA Reason
{{ a.npaReason }}
Recovery Officer
{{ a.recoveryOfficer }}
Legal Action Status
{{ legalActionLabel(a.legalActionStatus) }}
@if (isNpaStageOf(a)) {
}
@for (r of a.recoveries; track r.date + r.amount) { } @empty { }
Date Mode Amount
{{ r.date }} {{ r.mode }} ₹{{ r.amount | number: '1.0-0' }}
No recoveries recorded against this account.
} } @if (activeReport === 'movement') {
@for (a of paged(movedAccounts); track a.accountNo) { } @empty { }
Account No Customer Branch Previous Stage Current Stage Movement Outstanding
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ stageLabel(prevStage(a)) }} {{ stageLabel(stage(a)) }} {{ movement(a) }} ₹{{ a.outstandingBalance | number: '1.0-0' }}
No classification movement in this branch.
@if (movedAccounts.length > pageSize) {
Showing {{ rangeStart(movedAccounts) }}–{{ rangeEnd(movedAccounts) }} of {{ movedAccounts.length }}
Page {{ currentPage }} of {{ pageCount(movedAccounts) }}
}
} @if (activeReport === 'provision') {
@for (a of paged(provisionRows); track a.accountNo) { }
Account No Customer Branch Stage Outstanding Rate Provision Required Provision Held Shortfall / (Excess)
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ stageLabel(stage(a)) }} ₹{{ a.outstandingBalance | number: '1.0-0' }} {{ provisionRate(a) }}% ₹{{ provisionReq(a) | number: '1.0-0' }} ₹{{ provisionHeldAmt(a) | number: '1.0-0' }} ₹{{ shortfall(a) | number: '1.0-0' }}
Total ({{ provisionRows.length }} accounts) ₹{{ provisionRequiredTotal | number: '1.0-0' }} ₹{{ provisionHeldTotal | number: '1.0-0' }} ₹{{ provisionShortfallTotal | number: '1.0-0' }}
@if (provisionRows.length > pageSize) {
Showing {{ rangeStart(provisionRows) }}–{{ rangeEnd(provisionRows) }} of {{ provisionRows.length }}
Page {{ currentPage }} of {{ pageCount(provisionRows) }}
}
} @if (activeReport === 'probable') {
@for (a of paged(probableNpaAccounts); track a.accountNo) { } @empty { }
Account No Customer Branch Product Outstanding Overdue Amount Overdue Days Last Payment Follow-up
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ a.productName }} ₹{{ a.outstandingBalance | number: '1.0-0' }} ₹{{ a.overdueAmount | number: '1.0-0' }} {{ a.overdueDays }} {{ a.lastPaymentDate }} {{ a.overdueDays > 75 ? 'Urgent' : 'Monitor' }}
No SMA-2 accounts in this branch.
Total ({{ probableNpaAccounts.length }} accounts) ₹{{ sumOutstanding(probableNpaAccounts) | number: '1.0-0' }}
@if (probableNpaAccounts.length > pageSize) {
Showing {{ rangeStart(probableNpaAccounts) }}–{{ rangeEnd(probableNpaAccounts) }} of {{ probableNpaAccounts.length }}
Page {{ currentPage }} of {{ pageCount(probableNpaAccounts) }}
}
} @if (activeReport === 'sma') {
@for (a of paged(smaAccounts); track a.accountNo) { } @empty { }
Account No Customer Branch Product Stage Outstanding Overdue Amount Overdue Days
{{ a.accountNo }} {{ a.customerName }} {{ a.branchName }} {{ a.productName }} {{ stageLabel(stage(a)) }} ₹{{ a.outstandingBalance | number: '1.0-0' }} ₹{{ a.overdueAmount | number: '1.0-0' }} {{ a.overdueDays }}
No SMA accounts in this branch.
Total ({{ smaAccounts.length }} accounts) ₹{{ sumOutstanding(smaAccounts) | number: '1.0-0' }} ₹{{ sumOverdue(smaAccounts) | number: '1.0-0' }}
@if (smaAccounts.length > pageSize) {
Showing {{ rangeStart(smaAccounts) }}–{{ rangeEnd(smaAccounts) }} of {{ smaAccounts.length }}
Page {{ currentPage }} of {{ pageCount(smaAccounts) }}
}
}
{{ toastMsg }}