@if (hasStatutoryForm) {
} @if (hasStatutoryForm) { } @else if (awaitingDate) {

{{ promptTitle }}

Choose the date the return is made up to. The base is read at an earlier date than the balances maintained, and the return states both on its face once it runs.

@if (hasBaseDate) { Base date (optional) } Reporting date
@if (chosenFortnight) {

Fortnight: {{ chosenFortnight }} @if (hasBaseDate && !baseDate) { · base will be derived from the 45-day lag }

}
Jump to: @if (hasBaseDate && baseDate) { }
@if (errorMsg) {
{{ errorMsg }}
}
} @else if (loading) {
Computing from the ledger…
} @else if (errorMsg) {
{{ errorMsg }}
} @else if (data) {

{{ data.formName }}

{{ data.frequency }} @if (data.fortnightLabel) { {{ data.fortnightLabel }} · {{ data.fortnightStart }} to {{ data.fortnightEnd }} } @else { Month ended {{ data.reportingDate }} }
@if (hasBaseDate) { Base date } Reporting date
@if (activeTab === 'report') { @if (data.unmetRequirements.length) {
{{ data.computable ? 'Check this before filing.' : 'This return cannot be computed yet.' }} Open RBI Reserve Configuration →
}
DTL base as at {{ data.basis.dtlAsOnDate }}
Balances maintained as at {{ data.basis.holdingsAsOnDate }}
@if (data.basis.rawLagDate) {
{{ data.basis.lagDays }}-day lag falls on {{ data.basis.rawLagDate }}
}

{{ data.basis.note }}

@if (data.computable) {
NDTL base {{ amount(data.ndtlAmount) }} DTL {{ amount(data.dtlAmount) }} less {{ amount(data.interBankAssets) }} · as at {{ data.basis.dtlAsOnDate }}
{{ data.rateType }} rate {{ data.ratePercentage }}% @if (data.rateIsSeedDefault) { Placeholder — not confirmed } @else { in force on {{ data.reportingDate }} }
Required {{ amount(data.requiredAmount) }} {{ data.ratePercentage }}% of NDTL
Maintained {{ amount(data.maintainedAmount) }} {{ percent(data.maintainedPercentage) }} of NDTL
{{ isShortfall ? 'Shortfall' : 'Surplus' }} {{ amount(shortfallAmount) }} {{ isShortfall ? 'Below requirement' : 'Above requirement' }}
}
@for (line of data.lines; track $index) { @for (account of line.accounts; track account.glAccountId) { } } @if (data.computable) { }
Particulars {{ data.baseDate || 'Base date' }} {{ data.currentDate || 'Reporting date' }} Movement
{{ line.label }} @if (!line.configured) { Not configured } @if (line.configured) { {{ amount( line.baseAmount !== undefined ? line.baseAmount : line.asOnDate === data.baseDate ? line.amount : null ) }} } @else { — } @if (line.configured) { {{ amount( line.currentAmount !== undefined ? line.currentAmount : line.asOnDate === data.currentDate ? line.amount : null ) }} } @else { — } @if (line.movement !== undefined && line.movement !== null) { {{ amount(line.movement) }} } @else { — }
{{ account.glCode }} {{ account.name }} @if (account.excluded) { excluded — {{ account.excluded }} } @if (isPartial(account)) { {{ account.weightPercentage }}% of {{ portionOf(account) }} } @if (account.liabilityClass) { {{ account.liabilityClass | titlecase }} } @if ( account.baseBalance !== undefined ? account.baseBalance !== null : line.asOnDate === data.baseDate ) { {{ amount(account.baseBalance !== undefined ? account.baseBalance : account.balance) }} } @else { — } @if ( account.currentBalance !== undefined ? account.currentBalance !== null : line.asOnDate === data.currentDate ) { {{ amount(account.currentBalance !== undefined ? account.currentBalance : account.balance) }} } @else { — } @if (account.movement !== undefined && account.movement !== null) { {{ amount(account.movement) }} }
{{ data.rateType }} required ({{ data.ratePercentage }}% of NDTL) {{ amount(data.requiredAmount) }}
{{ data.rateType }} maintained {{ amount(data.maintainedAmount) }}
{{ isShortfall ? 'Shortfall' : 'Surplus' }} {{ amount(shortfallAmount) }}
@if (data.maintenance; as m) {

Daily maintenance — {{ m.periodLabel || 'this month' }} @if (!m.fortnightComplete) { In progress — {{ m.dayCount }} days so far }

Every day of the month, against the requirement in force. CRR is reckoned over the period rather than on one day: the full requirement must be held on average, and at least {{ m.dailyMinimumPercent }}% of it on every single day.

Average maintained {{ amount(m.average) }} {{ m.averageMet ? 'Meets' : 'Below' }} required {{ amount(m.requiredAverage) }}
Lowest day {{ amount(m.lowest) }} on {{ m.lowestOn }} · floor {{ amount(m.dailyMinimumAmount) }}
Days counted {{ m.dayCount }} {{ m.fortnightComplete ? 'Full fortnight' : 'To reporting date' }}
@for (day of m.days; track day.date) { }
Date Required (INR) Actual (INR) Surplus / (Shortfall) Against floor
{{ day.date }} {{ amount(day.required) }} {{ amount(day.amount) }} {{ amount(day.surplus) }} @if (day.amount < m.dailyMinimumAmount) { Below floor } @else { OK }
} @for (section of namedSections; track section.title) { @if (section.rows.length) {

{{ section.title }}

{{ section.hint }}

@for (row of section.rows; track row.configKey) { }
Particulars Amount (INR)
{{ row.label }} @if (!row.configured) { Not configured } @if (row.configured) { {{ amount(row.amount) }} } @else { — }
} } } } @if (activeTab === 'statutory') { @if (statutoryAwaitingDate) {

{{ statutoryTitle }}

{{ statutorySubtitle }}

@if (statutoryTakesTwoColumns) {
First column Second column
Base for first column Base for second column
@if (statutoryFirstColumn && statutorySecondColumn) {

Made up to {{ statutorySecondColumn }}. The base dates above are the matching close one month earlier — change either one if the bank files on a different base.

} @else {

Enter both fortnight closing dates — the base dates fill in from them.

}
Fill: @if (statutoryFirstColumn || statutorySecondColumn) { }
} @else {
Reporting date
@if (statutoryDate) {

The return reports the month ending on or before {{ statutoryDate }}, and charges the ratio on the matching close one month earlier.

} } @if (statutoryError) {
{{ statutoryError }}
}
} @else if (statutoryLoading) {
Computing from the ledger…
} @else if (statutoryError) {
{{ statutoryError }}
} @else if (statutory) {
Made up to {{ statutory.reportingDate }}
{{ statutory.formName }}
{{ statutory.statutoryReference }}
@if (statutory.unmetRequirements.length) {
Check before filing.
    @for (reason of statutory.unmetRequirements; track reason) {
  • {{ reason }}
  • }
} @for (col of statutory.columns; track col; let i = $index) { } @for (part of statutoryParts; track part.title) { @for (line of part.lines; track line.label) { @if (line.heading) { } @else { @for (v of line.values; track $index) { } @if (line.baseDates?.length) { @for (d of line.baseDates; track $index) { } } } } @if (part.surplus?.length) { @for (s of part.surplus; track $index) { } } }
Particulars {{ col }} fortnight close @if (statutory.baseColumns?.[i]) { charged on {{ statutory.baseColumns[i] }} }
{{ part.title }}
{{ line.label }}
{{ line.label }} @if (line.configKey && line.configured === false) { Not mapped } {{ amount(v) }}
Base dates — the matching close one month earlier{{ d }}
Surplus / (Shortfall){{ amount(s) }}
AUTHORISED SIGNATORY
@if (statutory.daily?.days?.length) {

Day by day — {{ statutory.daily!.from }} to {{ statutory.daily!.to }} @if (statutory.daily!.crrShortDays || statutory.daily!.slrShortDays) { @if (statutory.daily!.crrShortDays) { CRR short on {{ statutory.daily!.crrShortDays }} of {{ statutory.daily!.dayCount }} days. } @if (statutory.daily!.slrShortDays) { SLR short on {{ statutory.daily!.slrShortDays }} of {{ statutory.daily!.dayCount }} days. } }

Each day is charged on its own base, which moves at the fortnight boundary. A shortfall shows as a negative.

CRR average held {{ amount(statutory.daily!.crrAverage) }} lowest {{ amount(statutory.daily!.crrLowest) }} on {{ statutory.daily!.crrLowestOn }}
SLR average held {{ amount(statutory.daily!.slrAverage) }} lowest {{ amount(statutory.daily!.slrLowest) }} on {{ statutory.daily!.slrLowestOn }}
Days counted {{ statutory.daily!.dayCount }} to {{ statutory.daily!.to }}
@for (day of statutory.daily!.days; track day.date) { }
Date Net demand & time liabilities Section 18 — CRR Section 24 — SLR
On the day Charged on Base amount Required Maintained Surplus / (short) Required Maintained Surplus / (short)
{{ day.date }} {{ day.ownLiabilities === undefined ? '—' : amount(day.ownLiabilities) }} {{ day.baseDate }} {{ day.baseLiabilities === undefined ? '—' : amount(day.baseLiabilities) }} {{ amount(day.crrRequired) }} {{ amount(day.crrMaintained) }} {{ amount(day.crrSurplus) }} {{ amount(day.slrRequired) }} {{ amount(day.slrMaintained) }} {{ amount(day.slrSurplus) }}
} } } @if (activeTab === 'saved') {

Saved returns @if (savedReturns.length) { {{ savedReturns.length }} }

Returns kept for the record. Each opens exactly as it was saved — the stored statement, not a re-run of today's ledger, so a figure already reported cannot change underneath it.

@if (canSave) {
Note (optional)
} @if (savedLoading) {
Loading saved returns…
} @else if (!savedReturns.length) {
Nothing saved yet. Generate a return and press Save to keep it.
} @else { @for (row of savedReturns; track row.id) { }
Reporting date Period NDTL Required Maintained Status Saved
{{ row.reportingDate }} {{ row.periodStart }} → {{ row.periodEnd }} {{ amount(row.ndtlAmount) }} {{ amount(row.requiredAmount) }} {{ amount(row.maintainedAmount) }} @for (s of filingStatuses; track s) { {{ statusLabel(s) }} } {{ row.createdOn }}
{{ row.createdBy }}
}
@if (viewingSaved && savedData; as _) {

Saved return — {{ savedData.reportingDate }} {{ statusLabel(viewingSaved.status) }}

Saved {{ viewingSaved.createdOn }} by {{ viewingSaved.createdBy || 'unknown' }}. These are the figures as they stood when it was saved — not today's ledger, which may have moved since. @if (viewingSaved.remarks) { “{{ viewingSaved.remarks }}” }

@if (savedIsStatutory && savedStatutory; as saved) {
{{ saved.formName }}
{{ saved.statutoryReference }}
@for (col of saved.columns; track col; let i = $index) { } @for (part of savedStatutoryParts; track part.title) { @for (line of part.lines; track line.label) { @for (value of line.values || []; track $index) { } } }
Particulars {{ col }} {{ saved.columns.length > 2 && i === 2 ? 'base for ratios' : 'fortnight close' }} @if (saved.baseColumns?.[i]) { charged on {{ saved.baseColumns[i] }} }
{{ part.title }}
{{ line.label }} {{ amount(value) }}
} @else {
NDTL base {{ amount(savedData.ndtlAmount ?? savedData.dtlAmount) }} as at {{ savedData.basis.dtlAsOnDate }}
{{ savedData.rateType }} rate {{ savedData.ratePercentage }}% as filed
Required {{ amount(savedData.requiredAmount) }} {{ savedData.ratePercentage }}% of NDTL
Maintained {{ amount(savedData.maintainedAmount) }} on {{ savedData.basis.holdingsAsOnDate }}
{{ savedData.compliant ? 'Surplus' : 'Shortfall' }} {{ amount(savedSurplus) }} {{ savedData.compliant ? 'Above requirement' : 'Below requirement' }}
@for (line of savedData.lines; track line.configKey) { @for (account of line.accounts; track account.glAccountId) { } }
Particulars As at Amount (INR)
{{ line.label }} {{ line.asOnDate }} @if (line.configured) { {{ amount(line.amount) }} } @else { — }
{{ account.glCode }} {{ account.name }} @if (isPartial(account)) { {{ account.weightPercentage }}% of {{ amount(account.accountBalance) }} } @if (account.liabilityClass) { {{ account.liabilityClass | titlecase }} } {{ amount(account.balance) }}
@if (savedData.maintenance; as sm) {

Daily maintenance as filed — {{ sm.periodLabel || '' }}

@for (day of sm.days; track day.date) { }
Date Required Actual Surplus / (Shortfall)
{{ day.date }} {{ amount(day.required) }} {{ amount(day.amount) }} {{ amount(day.surplus) }}
} }
} } @if (toastVisible) {
{{ toastMsg }}
}