A company withholds retention from running bills and deducts TDS only on the amount paid, under-deducting on the retained part.
TDS is due on the earlier of credit or payment; when the full bill is credited to the contractor, TDS is due on the full bill including retention.
Contractor ledger showing gross bill, retention held as a payable, TDS on the gross, and the release date.
TDS on the gross bill at booking and no second deduction at release.
At the time you book the bill, in most cases. Retention money is part of an invoice that has already been credited to the contractor’s account in your books. TDS (tax deducted at source) follows the credit, not the later release. If you deduct only on the amount you pay now, the retained part is under-deducted.
Why does TDS follow the credit, not the release?
Contractor TDS under Section 194C of the Income-tax Act 1961 is due “at the time of credit” or payment, whichever is earlier. From 1 April 2026 the same timing applies under Section 393 of the Income-tax Act 2025. When you book a running bill of ₹10,00,000, the contractor’s account is credited ₹10,00,000, even though you hold back 5%. The credit has happened, so TDS is due on the full amount.
How do different ways of booking retention change the answer?
| How retention is booked | When TDS is due | Risk |
|---|---|---|
| Full bill credited; retention held as a payable to the contractor | On the full bill at booking | Low, if TDS is on the gross |
| Only the paid part credited; retention booked on release | Paid part now; retention at release | Mismatch with the contractor’s income booking |
| Retention moved to a separate “retention payable” account | On the full bill at booking, as it is still a credit | Missed if software deducts only on payment |
| TDS deducted only on the cash paid out | Under-deduction on the retention | Interest under Section 201(1A) |
Most companies book the full bill, because that matches the contractor’s invoice and the GST on it.
Worked example: a ₹10,00,000 running bill
A real estate developer receives a ₹10,00,000 running bill (excluding GST) from a civil contractor, a company, in July 2026. The contract holds back 5% retention until the defect period ends. The rate is 2%.
| Item | Correct | Common mistake |
|---|---|---|
| Bill credited | ₹10,00,000 | ₹10,00,000 |
| Retention held at 5% | ₹50,000 | ₹50,000 |
| TDS base | ₹10,00,000 | ₹9,50,000 |
| TDS at 2% | ₹20,000 | ₹19,000 |
| Paid now | ₹9,30,000 | ₹9,31,000 |
Correct: ₹10,00,000 − ₹50,000 − ₹20,000 = ₹9,30,000 paid now. The mistake under-deducts ₹1,000 (2% of ₹50,000). On release, the developer pays the full ₹50,000 with no further TDS.
If the mistake is caught at release a year later, interest under Section 201(1A) is 1% per month or part of a month on the ₹1,000 short deduction, and a disallowance under Section 40(a)(ia) can apply to 30% of the expense not covered by TDS.
What if the retention is released after the defect period in a later year?
TDS stays in the year of the bill. Say the bill was booked in July 2026 and the retention released in October 2027. The ₹20,000 TDS was deposited by 7 August 2026 and reported in the July to September 2026 return. Nothing new is deducted in October 2027. If the retention is reduced because of defects, the contractor usually issues a credit note; ask your CA how to treat the TDS on the reduced part.
How does the contractor’s credit appear?
The contractor sees ₹20,000 in their TDS credit statement (Form 168 for tax year 2026-27) in the quarter you booked the bill. They see nothing extra when the ₹50,000 is released. If the contractor only books the retention as income on release, they may think their credit is too high in the first year. A short note on the release payment avoids that confusion.
What to read next
- Next: full rules in TDS on contractor payments under Section 194C.
- For cut-off at the year end: TDS year-end March close.
- The contractor’s side: why 5 percent of an invoice is held as retention.
TransactIG reconciles TDS on gross bills against your ledger credits and payments, so a deduction on the net amount shows up in the exception queue.