diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
index 2fa1d53..2f53f7b 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
@@ -15,6 +15,17 @@
 			};
 		});
 
+		frm.set_query("offsetting_account", "dimension_defaults", function(doc, cdt, cdn) {
+			let d = locals[cdt][cdn];
+			return {
+				filters: {
+					company: d.company,
+					root_type: ["in", ["Asset", "Liability"]],
+					is_group: 0
+				}
+			}
+		});
+
 		if (!frm.is_new()) {
 			frm.add_custom_button(__('Show {0}', [frm.doc.document_type]), function () {
 				frappe.set_route("List", frm.doc.document_type);
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 81ff6a5..ea44734 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -39,6 +39,8 @@
 		if not self.is_new():
 			self.validate_document_type_change()
 
+		self.validate_dimension_defaults()
+
 	def validate_document_type_change(self):
 		doctype_before_save = frappe.db.get_value("Accounting Dimension", self.name, "document_type")
 		if doctype_before_save != self.document_type:
@@ -46,6 +48,14 @@
 			message += _("Please create a new Accounting Dimension if required.")
 			frappe.throw(message)
 
+	def validate_dimension_defaults(self):
+		companies = []
+		for default in self.get("dimension_defaults"):
+			if default.company not in companies:
+				companies.append(default.company)
+			else:
+				frappe.throw(_("Company {0} is added more than once").format(frappe.bold(default.company)))
+
 	def after_insert(self):
 		if frappe.flags.in_test:
 			make_dimension_in_accounting_doctypes(doc=self)
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index d2f19a1..486e01e 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -1774,10 +1774,10 @@
 		pi.submit()
 
 		expected_gle = [
-			["_Test Account Cost for Goods Sold - _TC", 1000, 0.0, nowdate(), {"branch": branch2.branch}],
-			["Creditors - _TC", 0.0, 1000, nowdate(), {"branch": branch1.branch}],
-			["Offsetting - _TC", 1000, 0.0, nowdate(), {"branch": branch1.branch}],
-			["Offsetting - _TC", 0.0, 1000, nowdate(), {"branch": branch2.branch}],
+			["_Test Account Cost for Goods Sold - _TC", 1000, 0.0, nowdate(), branch2.branch],
+			["Creditors - _TC", 0.0, 1000, nowdate(), branch1.branch],
+			["Offsetting - _TC", 1000, 0.0, nowdate(), branch1.branch],
+			["Offsetting - _TC", 0.0, 1000, nowdate(), branch2.branch],
 		]
 
 		check_gl_entries(
@@ -1786,7 +1786,7 @@
 			expected_gle,
 			nowdate(),
 			voucher_type="Purchase Invoice",
-			check_acc_dimensions=True,
+			additional_columns=["branch"],
 		)
 		clear_dimension_defaults("Branch")
 		disable_dimension()
@@ -1809,7 +1809,7 @@
 	expected_gle,
 	posting_date,
 	voucher_type="Purchase Invoice",
-	check_acc_dimensions=False,
+	additional_columns=None,
 ):
 	gl = frappe.qb.DocType("GL Entry")
 	query = (
@@ -1823,9 +1823,11 @@
 		)
 		.orderby(gl.posting_date, gl.account, gl.creation)
 	)
-	if check_acc_dimensions:
-		for col in list(expected_gle[0][4].keys()):
-			query = query.select(col)
+
+	if additional_columns:
+		for col in additional_columns:
+			query = query.select(gl[col])
+
 	gl_entries = query.run(as_dict=True)
 
 	for i, gle in enumerate(gl_entries):
@@ -1833,9 +1835,12 @@
 		doc.assertEqual(expected_gle[i][1], gle.debit)
 		doc.assertEqual(expected_gle[i][2], gle.credit)
 		doc.assertEqual(getdate(expected_gle[i][3]), gle.posting_date)
-		if check_acc_dimensions:
-			for acc_dimension in expected_gle[i][4]:
-				doc.assertEqual(expected_gle[i][4][acc_dimension], gle[acc_dimension])
+
+		if additional_columns:
+			j = 4
+			for col in additional_columns:
+				doc.assertEqual(expected_gle[i][j], gle[col])
+				j += 1
 
 
 def create_tax_witholding_category(category_name, company, account):
diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py
index a348911..addc9d5 100644
--- a/erpnext/accounts/general_ledger.py
+++ b/erpnext/accounts/general_ledger.py
@@ -30,8 +30,8 @@
 	from_repost=False,
 ):
 	if gl_map:
-		make_acc_dimensions_offsetting_entry(gl_map)
 		if not cancel:
+			make_acc_dimensions_offsetting_entry(gl_map)
 			validate_accounting_period(gl_map)
 			validate_disabled_accounts(gl_map)
 			gl_map = process_gl_map(gl_map, merge_entries)
@@ -64,6 +64,7 @@
 		return
 
 	offsetting_entries = []
+
 	for gle in gl_map:
 		for dimension in accounting_dimensions_to_offset:
 			offsetting_entry = gle.copy()
@@ -82,12 +83,14 @@
 			)
 			offsetting_entry["against_voucher_type"] = None
 			offsetting_entries.append(offsetting_entry)
+
 	gl_map += offsetting_entries
 
 
 def get_accounting_dimensions_for_offsetting_entry(gl_map, company):
 	acc_dimension = frappe.qb.DocType("Accounting Dimension")
 	dimension_detail = frappe.qb.DocType("Accounting Dimension Detail")
+
 	acc_dimensions = (
 		frappe.qb.from_(acc_dimension)
 		.inner_join(dimension_detail)
@@ -99,11 +102,13 @@
 			& (dimension_detail.automatically_post_balancing_accounting_entry == 1)
 		)
 	).run(as_dict=True)
+
 	accounting_dimensions_to_offset = []
 	for acc_dimension in acc_dimensions:
 		values = set([entry.get(acc_dimension.fieldname) for entry in gl_map])
 		if len(values) > 1:
 			accounting_dimensions_to_offset.append(acc_dimension)
+
 	return accounting_dimensions_to_offset
 
 
diff --git a/erpnext/accounts/report/trial_balance/test_trial_balance.py b/erpnext/accounts/report/trial_balance/test_trial_balance.py
index cd0429b..4682ac4 100644
--- a/erpnext/accounts/report/trial_balance/test_trial_balance.py
+++ b/erpnext/accounts/report/trial_balance/test_trial_balance.py
@@ -91,7 +91,8 @@
 		accounting_dimension = frappe.new_doc("Accounting Dimension")
 		accounting_dimension.document_type = document_type
 		accounting_dimension.insert()
-	accounting_dimension.save()
+
+	accounting_dimension.set("dimension_defaults", [])
 	accounting_dimension.append(
 		"dimension_defaults",
 		{
