@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 Form 121 declaration is on record for this year, but withholding is still switched on for one or more deposits. Turn it off on those accounts, or tax will keep being deducted.
} @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 (declarationOnRecord && declarationFy) {
Declared for FY {{ declarationFy }}
} @if (declarationOnRecord && !acceptanceDateKnown) {
Acceptance date Not captured — the declaration is treated as covering the whole year. A mid-year acceptance would change the figures below.
} @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.
} } }