-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Tax Withholding Entry
Lakshit Jain edited this page Dec 24, 2025
·
1 revision
Guide for upgrading Tax Withholding from earlier versions to v16.
https://github.com/frappe/erpnext/pull/51099
The TDS/TCS system was refactored to use a new Tax Withholding Entry child table for detailed tracking.
| DocType | TDS Data Location |
|---|---|
| Purchase Invoice |
taxes table, tax_withheld_vouchers, advance_tax
|
| Sales Invoice |
taxes table |
| Payment Entry |
advance_taxes_and_charges with allocated_amount
|
| Journal Entry |
accounts table with is_tax_withholding_account
|
| DocType | TDS Data Location |
|---|---|
| All |
tax_withholding_entries child table with detailed tracking |
When upgrading to v16, the system automatically:
- Entries from
taxestable with TDS accounts - Historical
tax_withheld_vouchersentries -
advance_taxallocations from Payment Entries
- Entries from
taxestable with TCS accounts
- Advance tax entries (allocated and unallocated)
- Creates "Over Withheld" entries for unallocated advances
- Creates "Duplicate" entries for cross-document references
- Debit/Credit Note TDS entries
-
tax_withholding_categoryfrom invoice level copied to item rows - Enables item-level TDS going forward
| Feature | Status |
|---|---|
| Purchase Order TDS | Removed |
| Purchase Receipt TDS | Removed |
Old advance_tax table |
Replaced by Tax Withholding Entry
|
Old tax_withheld_vouchers table |
Replaced by Tax Withholding Entry
|
| Feature | Description |
|---|---|
| Tax Withholding Entry | Unified child table for all document types |
| Item-Level TDS | Different categories per item in same invoice |
| Tax Withholding Groups | Different rates for Individuals vs Companies |
| Improved LDC Handling | Automatic split between LDC and normal rates |
| Cross Fiscal Year | Over Withheld entries carry forward |
| Tax on Excess Amount | Tax only on amount exceeding threshold |