Expired KYC & Customer Outreach

Customers whose periodic re-KYC has lapsed: what each restriction stops, and the record of every attempt to reach them. A customer drops off this list the moment their re-KYC is completed.
RBI Master Direction on KYC. An account is not closed or restricted merely because periodic re-KYC is pending. Nothing stops for the first {{ policy.graceDays }} days past the due date; debits stop after that, and the account is marked inoperative after {{ policy.inoperativeDays }} days. Restrictions are applied to the customer's savings accounts overnight and lift as soon as the re-KYC is completed. These credits are never held up: {{ alwaysAllowed.join(' · ') }}
@if (errorMessage) {
{{ errorMessage }}
}
@for (key of stageKeys; track key) { }
{{ visibleRows.length }} of {{ summary.total }} customers
@if (loading) {
Loading worklist…
} @else if (visibleRows.length === 0) {
No customers match these filters.
} @else {
@for (r of visibleRows; track r.clientId) { @if (expanded === r.clientId) { } }
Customer Account Risk KYC Expiry Position What is blocked Next step Outreach Actions
{{ r.clientName }}
{{ r.clientId }}
{{ r.accountNo || '—' }}
Branch {{ r.branchCode || '—' }}
{{ r.riskLabel }} {{ r.expiryDate }}
{{ overdueText(r) }}
{{ r.meta.label }} @if (r.meta.blocked.length === 0) { Nothing blocked — fully operative } @else { @for (b of r.meta.blocked; track b) { {{ b }} } } @if (r.nextActionDate) {
{{ r.nextActionLabel }}
{{ r.nextActionDate }}
} @else { {{ r.nextActionLabel }} }
@if (r.contactCount === 0) { Not contacted } @else { {{ r.contactCount }} attempt{{ r.contactCount > 1 ? 's' : '' }}
last {{ r.lastContactDate }}
} @if (r.acknowledged) {
Customer reached
}

Still allowed

    @for (a of r.meta.allowed; track a) {
  • {{ a }}
  • }
{{ r.meta.summary }}

Blocked

@if (r.meta.blocked.length === 0) {
Nothing is restricted at this stage. The account operates normally while the customer is given time to complete re-KYC.
} @else {
    @for (b of r.meta.blocked; track b) {
  • {{ b }}
  • }
}
Never held up: {{ alwaysAllowed.join(' · ') }}

Contact on file

Mobile{{ r.mobile || 'Not on file' }}
Email{{ r.email || 'Not on file' }}
@if (r.acknowledged) {
Customer reached on {{ r.acknowledgedOn }} by {{ r.acknowledgedBy }}. @if (r.acknowledgedNote) {
{{ r.acknowledgedNote }}
}
}

Outreach history

@if (r.contacts.length === 0) {
No attempt recorded yet. Use the actions on the row to log an email, SMS, call or visit.
} @else { @for (c of r.contacts; track c.date + c.channel + c.notes) { }
Date Channel Destination Outcome Officer Notes
{{ c.date }} {{ c.channelLabel }} {{ c.destinationMasked || '—' }} {{ deliveryText(c) }} {{ c.officer }} {{ c.notes }}
}
}
@if (contactOpen && contactRow) {

Record customer contact

{{ contactRow.clientName }} {{ contactRow.accountNo }} {{ contactRow.meta.label }}
@for (c of channels; track c.key) { }
@if (contactDestinationMissing) { No destination on file for this channel — the attempt will be recorded but nothing is sent. } @else { @if (contactChannelTransmits) { Will be sent to {{ contactDestination }} } @else { Recorded as made {{ contactDestination }} } }
@if (contactError) {
{{ contactError }}
}
} @if (ackOpen && ackRow) {

Mark customer as contacted

{{ ackRow.clientName }} {{ ackRow.accountNo }}
This records that the customer was reached and told what is required. It does not complete the re-KYC — the restriction ladder keeps running until the KYC record itself is renewed.
} @if (toastVisible) {
{{ toastMsg }}
}