diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 334e8b0..83312db 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -905,51 +905,8 @@
 						item=d,
 					)
 				)
-
-				self.make_acc_dimensions_offsetting_entry(gl_map, d)
-
 		return gl_map
 
-	def make_acc_dimensions_offsetting_entry(self, gl_map, d):
-		accounting_dimensions = frappe.db.get_list("Accounting Dimension", {"disabled": 0}, pluck="name")
-		for dimension in accounting_dimensions:
-			dimension_details = frappe.db.get_values(
-				"Accounting Dimension Detail",
-				{"parent": dimension, "company": self.company},
-				["automatically_post_balancing_accounting_entry", "offsetting_account"],
-			)
-			dimension_details = dimension_details[0] if len(dimension_details) > 0 else None
-			if dimension_details and dimension_details[0] == 1:
-				offsetting_account = dimension_details[1]
-				gl_map.append(
-					self.get_gl_dict(
-						{
-							"account": offsetting_account,
-							"party_type": d.party_type,
-							"due_date": self.due_date,
-							"party": d.party,
-							"against": d.against_account,
-							"debit": flt(d.credit, d.precision("credit")),
-							"credit": flt(d.debit, d.precision("credit")),
-							"account_currency": d.account_currency,
-							"debit_in_account_currency": flt(
-								d.credit_in_account_currency, d.precision("credit_in_account_currency")
-							),
-							"credit_in_account_currency": flt(
-								d.debit_in_account_currency, d.precision("debit_in_account_currency")
-							),
-							"against_voucher_type": d.reference_type,
-							"against_voucher": d.reference_name,
-							"remarks": _("Offsetting for Accounting Dimension") + " - {0}".format(dimension),
-							"voucher_detail_no": d.reference_detail_no,
-							"cost_center": d.cost_center,
-							"project": d.project,
-							"finance_book": self.finance_book,
-						},
-						item=d,
-					)
-				)
-
 	def make_gl_entries(self, cancel=0, adv_adj=0):
 		from erpnext.accounts.general_ledger import make_gl_entries
 
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index f1dad87..1299c44 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -30,6 +30,7 @@
 	from_repost=False,
 ):
 	if gl_map:
+		make_acc_dimensions_offsetting_entry(gl_map)
 		if not cancel:
 			validate_accounting_period(gl_map)
 			validate_disabled_accounts(gl_map)
@@ -54,6 +55,50 @@
 			make_reverse_gl_entries(gl_map, adv_adj=adv_adj, update_outstanding=update_outstanding)
 
 
+def make_acc_dimensions_offsetting_entry(gl_map):
+	accounting_dimensions_to_offset = get_accounting_dimensions_for_offsetting_entry(gl_map)
+	if len(accounting_dimensions_to_offset) == 0:
+		return
+
+	offsetting_entries = []
+	for gle in gl_map:
+		for dimension in accounting_dimensions_to_offset:
+			dimension_details = frappe.db.get_values(
+				"Accounting Dimension Detail",
+				{"parent": dimension, "company": gle.company},
+				["automatically_post_balancing_accounting_entry", "offsetting_account"],
+			)
+			dimension_details = dimension_details[0] if len(dimension_details) > 0 else None
+			if dimension_details and dimension_details[0] == 1:
+				offsetting_account = dimension_details[1]
+				offsetting_entry = gle.copy()
+				offsetting_entry.update(
+					{
+						"account": offsetting_account,
+						"debit": flt(gle.credit),
+						"credit": flt(gle.debit),
+						"debit_in_account_currency": flt(gle.credit_in_account_currency),
+						"credit_in_account_currency": flt(gle.debit_in_account_currency),
+						"remarks": _("Offsetting for Accounting Dimension") + " - {0}".format(dimension),
+						"against_voucher": None,
+					}
+				)
+				offsetting_entry["against_voucher_type"] = None
+				offsetting_entries.append(offsetting_entry)
+	gl_map += offsetting_entries
+
+
+def get_accounting_dimensions_for_offsetting_entry(gl_map):
+	acc_dimensions = frappe.db.get_list("Accounting Dimension", {"disabled": 0}, pluck="name")
+	accounting_dimensions_to_offset = []
+	for acc_dimension in acc_dimensions:
+		fieldname = acc_dimension.lower().replace(" ", "_")
+		values = set([entry[fieldname] for entry in gl_map])
+		if len(values) > 1:
+			accounting_dimensions_to_offset.append(acc_dimension)
+	return accounting_dimensions_to_offset
+
+
 def validate_disabled_accounts(gl_map):
 	accounts = [d.account for d in gl_map if d.account]
 
