diff --git a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
index d81a8f3..b19f630 100644
--- a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
+++ b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py
@@ -8,7 +8,9 @@
 def execute(filters=None):
 	validate_filters(filters)
 
-	columns = get_columns()
+	filters.naming_series = frappe.db.get_single_value('Buying Settings', 'supp_master_name')
+
+	columns = get_columns(filters)
 	res = get_result(filters)
 
 	return columns, res
@@ -29,7 +31,8 @@
 	# if no supplier selected, fetch data for all tds applicable supplier
 	# else fetch relevant data for selected supplier
 	pan = "pan" if frappe.db.has_column("Supplier", "pan") else "tax_id"
-	fields = ["name", pan+" as pan", "tax_withholding_category", "supplier_type"]
+	fields = ["name", pan+" as pan", "tax_withholding_category", "supplier_type", "supplier_name"]
+
 	if filters.supplier:
 		filters.supplier = frappe.db.get_list('Supplier',
 			{"name": filters.supplier}, fields)
@@ -49,8 +52,13 @@
 			filters.company, filters.from_date, filters.to_date)
 
 		if total_invoiced_amount or tds_deducted:
-			out.append([supplier.pan, supplier.name, tds.name, supplier.supplier_type,
-				rate, total_invoiced_amount, tds_deducted])
+			row = [supplier.pan, supplier.name]
+
+			if filters.naming_series == 'Naming Series':
+				row.append(supplier.supplier_name)
+
+			row.extend([tds.name, supplier.supplier_type, rate, total_invoiced_amount, tds_deducted])
+			out.append(row)
 
 	return out
 
@@ -86,7 +94,7 @@
 
 	return total_invoiced_amount, tds_deducted
 
-def get_columns():
+def get_columns(filters):
 	columns = [
 		{
 			"label": _("PAN"),
@@ -100,7 +108,17 @@
 			"fieldname": "supplier",
 			"fieldtype": "Link",
 			"width": 180
-		},
+		}]
+
+	if filters.naming_series == 'Naming Series':
+		columns.append({
+			"label": _("Supplier Name"),
+			"fieldname": "supplier_name",
+			"fieldtype": "Data",
+			"width": 180
+		})
+
+	columns.extend([
 		{
 			"label": _("Section Code"),
 			"options": "Tax Withholding Category",
@@ -132,6 +150,6 @@
 			"fieldtype": "Float",
 			"width": 90
 		}
-	]
+	])
 
 	return columns
diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
index 843b58f..e55c022 100644
--- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
+++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.py
@@ -11,7 +11,7 @@
 	validate_filters(filters)
 	set_filters(filters)
 
-	columns = get_columns()
+	columns = get_columns(filters)
 	if not filters["invoices"]:
 		return columns, []
 
@@ -43,6 +43,7 @@
 				invoices.append(d)
 
 	filters["invoices"] = invoices if invoices else filters["invoices"]
+	filters.naming_series = frappe.db.get_single_value('Buying Settings', 'supp_master_name')
 
 def get_result(filters):
 	supplier_map, tds_docs = get_supplier_map(filters)
@@ -71,9 +72,14 @@
 
 			if getdate(filters.from_date) <= gle_map[d][0].posting_date \
 				and getdate(filters.to_date) >= gle_map[d][0].posting_date:
-				out.append([supplier.pan, supplier.name, tds_doc.name,
-					supplier.supplier_type, rate, total_amount_credited, tds_deducted,
-					gle_map[d][0].posting_date, "Purchase Invoice", d])
+				row = [supplier.pan, supplier.name]
+
+				if filters.naming_series == 'Naming Series':
+					row.append(supplier.supplier_name)
+
+				row.extend([tds_doc.name, supplier.supplier_type, rate, total_amount_credited,
+					tds_deducted, gle_map[d][0].posting_date, "Purchase Invoice", d])
+				out.append(row)
 
 	return out
 
@@ -84,7 +90,7 @@
 	pan = "pan" if frappe.db.has_column("Supplier", "pan") else "tax_id"
 	supplier_detail = frappe.db.get_all('Supplier',
 		{"name": ["in", [d.supplier for d in filters["invoices"]]]},
-		["tax_withholding_category", "name", pan+" as pan", "supplier_type"])
+		["tax_withholding_category", "name", pan+" as pan", "supplier_type", "supplier_name"])
 
 	for d in filters["invoices"]:
 		supplier_map[d.get("name")] = [k for k in supplier_detail
@@ -113,7 +119,7 @@
 
 	return gle_map
 
-def get_columns():
+def get_columns(filters):
 	pan = "pan" if frappe.db.has_column("Supplier", "pan") else "tax_id"
 	columns = [
 		{
@@ -128,7 +134,17 @@
 			"fieldname": "supplier",
 			"fieldtype": "Link",
 			"width": 180
-		},
+		}]
+
+	if filters.naming_series == 'Naming Series':
+		columns.append({
+			"label": _("Supplier Name"),
+			"fieldname": "supplier_name",
+			"fieldtype": "Data",
+			"width": 180
+		})
+
+	columns.extend([
 		{
 			"label": _("Section Code"),
 			"options": "Tax Withholding Category",
@@ -178,7 +194,7 @@
 			"options": "transaction_type",
 			"width": 90
 		}
-	]
+	])
 
 	return columns
 
