@if (loading) {
Reading the customer's deposit ledger…
} @else if (loadError) {
error_outline
Could not load the customer's accounts. Try again, or check the deposit service.
} @else {

Form 121 & TDS on deposit interest

Tax deducted at source under {{ statute.section }} on fixed and recurring deposit interest.
@if (availableFys.length) { }
Settlement
schedule {{ mode === 'QUARTERLY' ? 'Quarterly' : 'At year end' }}
@if (!schedule) {
info_outline
@if (configMissing) { TDS rates for FY {{ fy }} are not configured, so the tax cannot be computed. Set them up under Organization › TDS Configuration. } @else if (!dateOfBirth) { Date of birth is not on record, so the senior-citizen threshold cannot be determined. Add it on the Personal Data tab. } @else { No interest has been credited to this customer's deposits yet. }
} @else {
₹{{ schedule.totalInterest | number: '1.0-0' }}
Interest earned (FY {{ schedule.fy }})
₹{{ actualTds | number: '1.0-0' }}
TDS deducted
₹{{ schedule.threshold | number: '1.0-0' }}
Threshold ({{ schedule.senior ? 'senior citizen' : 'general' }})
@if (thresholdCrossed) {
Crossed
TDS applies this year
} @else {
₹{{ headroom | number: '1.0-0' }}
More interest before TDS starts
} @if (tdsSaved > 0) {
₹{{ tdsSaved | number: '1.0-0' }}
Saved by Form 121
}
@if (variance !== 0) {
warning_amber
Ledger and computed tax differ by ₹{{ variance | number: '1.0-0' }}. The ledger shows ₹{{ actualTds | number: '1.0-0' }} withheld; {{ statute.section }} on this year's interest comes to ₹{{ schedule.totalTds | number: '1.0-0' }}. Investigate before the quarterly return is filed.
} @if (declarationNotAppliedToAccounts) {
warning_amber
A declaration is on record for this year, but one or more deposits still carry a tax group. Those accounts deduct on their own and ignore the declaration — remove the tax group from them.
} @if (declarationUselessOnJointAccounts) {
warning_amber
This customer has filed Form 121, but tax on {{ jointHolderAccounts.length }} joint deposit{{ jointHolderAccounts.length === 1 ? '' : 's' }} is deducted against the first-named holder. Their declaration does not cover those — the primary holder must file their own.
} @if (shouldSuggestDeclaration) {
lightbulb_outline
₹{{ schedule.totalTds | number: '1.0-0' }} of tax falls due this year. If the customer's total tax liability for the year is nil, a {{ formLabel }} declaration would stop it being deducted at all — better than reclaiming it later as a refund.
} @if (!panWellFormed) {
error_outline
No valid PAN on record, so tax is deducted at the higher section 206AA rate of {{ schedule.rateApplied * 100 | number: '1.0-0' }}%. A Form 121 declaration is void without a valid PAN.
} @for (note of schedule.notes; track note) {
info_outline
{{ note }}
}
assignment_turned_in Declaration
Status @if (declarationOnRecord) { On record — {{ formLabel }} } @else { Not filed }
Form & threshold band {{ formLabel }} · {{ bandLabel }} band · {{ age }} yrs in this FY
PAN {{ pan || '—' }} @if (pan && !panWellFormed) { invalid }
@if (declarationRecord; as d) {
Declared for FY {{ d.fy }} · Form {{ d.formType }}
Accepted on {{ d.acceptedOn | date: 'd MMM y' }} — no TDS on interest credited from this day to 31 March. Interest credited before it is taxed as usual.
@if (d.uin) {
UIN {{ d.uin }}
}
} @else if (fy && !configMissing) {
@if (!showDeclarationForm) { @if (!panWellFormed) {
A valid PAN must be on the KYC first — a declaration without one is void.
} }
@if (showDeclarationForm) {
@if (declarationError) {
error_outline
{{ declarationError }}
}
} } @for (old of declarations; track old.id) { @if (old.revoked && old.fy === fy) {
Withdrawn Form {{ old.formType }} accepted {{ old.acceptedOn | date: 'd MMM y' }}, withdrawn {{ old.revokedOn | date: 'd MMM y' }} — {{ old.revokeReason }}
} } @if (eligibility) { @for (reason of eligibility.reasons; track reason) {
Eligibility {{ reason }}
} @for (note of eligibility.unassessed; track note) {
Not assessed {{ note }}
} }
table_chart Quarter by quarter
@for (line of schedule.lines; track trackLine($index, line)) { }
Quarter Interest Cumulative Liability to date TDS this quarter Return due
{{ line.label }} @if (line.thresholdCrossedHere) { threshold crossed } @if (line.declarationActive) { Form 121 active } ₹{{ line.interest | number: '1.0-0' }} ₹{{ line.cumInterest | number: '1.0-0' }} ₹{{ line.cumLiability | number: '1.0-0' }} @if (line.tds !== 0) { ₹{{ line.tds | number: '1.0-0' }} } @else { — } {{ line.dueDate }}
Total ₹{{ schedule.totalInterest | number: '1.0-0' }} ₹{{ schedule.totalTds | number: '1.0-0' }}
@if (schedule.shieldedInterest > 0) {
₹{{ schedule.shieldedInterest | number: '1.0-0' }} was paid without deduction on the strength of the declaration. This amount is still reportable in the quarterly {{ statute.statement }} return.
}
account_balance Deposits counted towards this customer's TDS
@if (liableAccounts.length) {
@for (a of liableAccounts; track trackAccount($index, a)) { }
Account Type Interest (FY) TDS deducted Withholding Settles
{{ a.accountNo }}
{{ a.productName }}
{{ a.kind }} ₹{{ a.interest | number: '1.0-0' }} ₹{{ a.tdsDeducted | number: '1.0-0' }} @if (a.withHoldTax) { On @if (a.taxGroup) {
{{ a.taxGroup }}
} } @else { Off }
{{ a.mode === 'QUARTERLY' ? 'Quarterly' : 'Year end' }}
Aggregated across every branch — a bank on core banking computes the deduction threshold for the bank as a whole, not branch by branch.
} @else {
No fixed or recurring deposits where this customer is the deductee.
}
@if (jointHolderAccounts.length) {
group Deposits where this customer is a joint holder
@for (a of jointHolderAccounts; track trackAccount($index, a)) { }
Account Type Interest (FY) Deducted against
{{ a.accountNo }}
{{ a.productName }}
{{ a.kind }} ₹{{ a.interest | number: '1.0-0' }} First-named holder @if (a.deducteeClientId) { (client {{ a.deducteeClientId }}) }
Tax on a joint deposit is deducted against the first-named holder's PAN, so this interest is not counted in the figures above and does not use up this customer's threshold.
} @if (exemptAccounts.length) {
savings Savings and current accounts
@for (a of exemptAccounts; track trackAccount($index, a)) { }
Account Type Interest (FY) TDS
{{ a.accountNo }}
{{ a.productName }}
{{ a.kind }} ₹{{ a.interest | number: '1.0-0' }} Not applicable
The charge applies to time deposits. Savings bank interest is outside it and is excluded from the threshold — the customer claims the 80TTA or 80TTB deduction on it in their own return instead.
} } }