diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index de75841..4a3c04e 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -485,7 +485,6 @@
 						self.get_gl_dict(
 							{
 								"account": account,
-								"against_type": "Account",
 								"against": target_account,
 								"against_link": target_account,
 								"cost_center": item_row.cost_center,
@@ -528,7 +527,6 @@
 			self.set_consumed_asset_status(asset)
 
 			for gle in fixed_asset_gl_entries:
-				gle["against_type"] = "Account"
 				gle["against"] = target_account
 				gle["against_link"] = target_account
 				gl_entries.append(self.get_gl_dict(gle, item=item))
@@ -546,7 +544,6 @@
 				self.get_gl_dict(
 					{
 						"account": item_row.expense_account,
-						"against_type": "Account",
 						"against": target_account,
 						"against_link": target_account,
 						"cost_center": item_row.cost_center,
@@ -559,46 +556,41 @@
 			)
 
 	def get_gl_entries_for_target_item(self, gl_entries, target_against, precision):
-		for target_account in target_against:
-			if self.target_is_fixed_asset:
-				# Capitalization
+		if self.target_is_fixed_asset:
+			# Capitalization
+			gl_entries.append(
+				self.get_gl_dict(
+					{
+						"account": self.target_fixed_asset_account,
+						"against": ", ".join(target_against),
+						"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
+						"debit": flt(self.total_value, precision),
+						"cost_center": self.get("cost_center"),
+					},
+					item=self,
+				)
+			)
+		else:
+			# Target Stock Item
+			sle_list = self.sle_map.get(self.name)
+			for sle in sle_list:
+				stock_value_difference = flt(sle.stock_value_difference, precision)
+				account = self.warehouse_account[sle.warehouse]["account"]
+
 				gl_entries.append(
 					self.get_gl_dict(
 						{
-							"account": self.target_fixed_asset_account,
-							"against_type": "Account",
-							"against": target_account,
-							"against_link": target_account,
-							"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
-							"debit": flt(self.total_value, precision) / len(target_against),
-							"cost_center": self.get("cost_center"),
+							"account": account,
+							"against": ", ".join(target_against),
+							"cost_center": self.cost_center,
+							"project": self.get("project"),
+							"remarks": self.get("remarks") or "Accounting Entry for Stock",
+							"debit": stock_value_difference,
 						},
+						self.warehouse_account[sle.warehouse]["account_currency"],
 						item=self,
 					)
 				)
-			else:
-				# Target Stock Item
-				sle_list = self.sle_map.get(self.name)
-				for sle in sle_list:
-					stock_value_difference = flt(sle.stock_value_difference, precision)
-					account = self.warehouse_account[sle.warehouse]["account"]
-
-					gl_entries.append(
-						self.get_gl_dict(
-							{
-								"account": account,
-								"against_type": "Account",
-								"against": target_account,
-								"against_link": target_account,
-								"cost_center": self.cost_center,
-								"project": self.get("project"),
-								"remarks": self.get("remarks") or "Accounting Entry for Stock",
-								"debit": stock_value_difference / len(target_against),
-							},
-							self.warehouse_account[sle.warehouse]["account_currency"],
-							item=self,
-						)
-					)
 
 	def create_target_asset(self):
 		if (
