Manual Entry / Other
194C – Payment to Contractors (Single Payment > 30k)
194C – Payment to Contractors (Aggregate > 1L)
194H – Commission or Brokerage
194I – Rent (Land & Building)
194I – Rent (Plant & Machinery)
194J – Professional Fees (Tech/Call Center)
194J – Professional Fees (Other)
194A – Interest other than Securities
Individual / HUF
Company / Firm / Others
Yes
No (Rate will be 20% or higher)
Rate is auto-populated but can be edited.
Base Payment:0.00
Applied Rate:0%
TDS to be Deducted:0.00
Net Payable to Party:0.00
Understanding Tax Deducted at Source (TDS)
Tax Deducted at Source (TDS) is a mechanism utilized by income tax departments to collect tax at the very source of income generation. Under this system, a person (deductor) who is liable to make a payment to another person (deductee) shall deduct tax at source and remit the same into the account of the Central Government.
Key Rule: If the deductee does not provide a valid Permanent Account Number (PAN), TDS must be deducted at a flat rate of 20% or the actual applicable rate, whichever is higher, under Section 206AA.
Common TDS Sections and Rates
Different types of payments attract different TDS rates. Below is a reference table for standard rates (assuming PAN is available):
Section
Nature of Payment
Rate (Ind/HUF)
Rate (Company)
194C
Payment to Contractors
1%
2%
194H
Commission/Brokerage
5%
5%
194I
Rent (Land, Building, Furniture)
10%
10%
194I
Rent (Plant & Machinery)
2%
2%
194J
Professional Fees
10%
10%
194J
Tech Services / Call Center
2%
2%
How the TDS Calculation Works
The formula for calculating the TDS amount and the net payment is straightforward:
Failing to deduct TDS or deducting an incorrect amount can lead to significant penalties, interest payments (usually 1% to 1.5% per month), and disallowance of expenses when filing your own tax returns. Using a precise TDS rate calculator helps ensure compliance with current tax laws.
function updateDefaultRate() {
var section = document.getElementById('natureOfPayment').value;
var deductee = document.getElementById('deducteeType').value;
var hasPan = document.getElementById('panStatus').value;
var rateField = document.getElementById('applicableRate');
var suggestedRate = 0;
// Logic for rate determination
if (hasPan === 'no') {
suggestedRate = 20; // Section 206AA
} else {
switch (section) {
case '194C_single':
case '194C_agg':
suggestedRate = (deductee === 'individual') ? 1 : 2;
break;
case '194H':
suggestedRate = 5;
break;
case '194I_land':
suggestedRate = 10;
break;
case '194I_plant':
suggestedRate = 2;
break;
case '194J_tech':
suggestedRate = 2;
break;
case '194J_prof':
suggestedRate = 10;
break;
case '194A':
suggestedRate = 10;
break;
case 'manual':
// Do not overwrite user input if manual is selected, or set to 0
return;
default:
suggestedRate = 0;
}
}
// If PAN is not present, ensure rate is at least 20% even if the standard rate is lower
// However, if the standard rate is higher than 20% (rare), it applies.
if (hasPan === 'no') {
if (suggestedRate < 20) {
suggestedRate = 20;
}
}
rateField.value = suggestedRate;
}
function calculateTDS() {
// 1. Get Elements
var amountInput = document.getElementById('paymentAmount');
var rateInput = document.getElementById('applicableRate');
var resultBox = document.getElementById('resultBox');
var errorDisplay = document.getElementById('errorDisplay');
var resBase = document.getElementById('resBaseAmount');
var resRate = document.getElementById('resRate');
var resTDS = document.getElementById('resTDS');
var resNet = document.getElementById('resNet');
// 2. Parse Values
var amount = parseFloat(amountInput.value);
var rate = parseFloat(rateInput.value);
// 3. Validation
errorDisplay.style.display = 'none';
resultBox.style.display = 'none';
if (isNaN(amount) || amount <= 0) {
errorDisplay.innerHTML = "Please enter a valid payment amount greater than 0.";
errorDisplay.style.display = 'block';
return;
}
if (isNaN(rate) || rate < 0) {
errorDisplay.innerHTML = "Please ensure the TDS rate is valid.";
errorDisplay.style.display = 'block';
return;
}
// 4. Calculation
var tdsAmount = (amount * rate) / 100;
var netAmount = amount – tdsAmount;
// 5. Output Formatting
// Using Generic Currency formatting (or Indian formatting standard as TDS is primarily Indian)
var formatOptions = { minimumFractionDigits: 2, maximumFractionDigits: 2 };
resBase.innerHTML = amount.toLocaleString('en-IN', formatOptions);
resRate.innerHTML = rate + '%';
resTDS.innerHTML = tdsAmount.toLocaleString('en-IN', formatOptions);
resNet.innerHTML = netAmount.toLocaleString('en-IN', formatOptions);
// 6. Show Results
resultBox.style.display = 'block';
}
// Initialize default rate on load
window.onload = function() {
// Only run if manual isn't selected by default
if(document.getElementById('natureOfPayment').value !== 'manual') {
updateDefaultRate();
}
};