diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 53d9e21..fa889c0 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1836,3 +1836,74 @@
 		self.query_for_outstanding()
 
 		return self.voucher_outstandings
+
+
+def create_gain_loss_journal(
+	company,
+	party_type,
+	party,
+	party_account,
+	gain_loss_account,
+	exc_gain_loss,
+	dr_or_cr,
+	reverse_dr_or_cr,
+	ref1_dt,
+	ref1_dn,
+	ref1_detail_no,
+	ref2_dt,
+	ref2_dn,
+	ref2_detail_no,
+) -> str:
+	journal_entry = frappe.new_doc("Journal Entry")
+	journal_entry.voucher_type = "Exchange Gain Or Loss"
+	journal_entry.company = company
+	journal_entry.posting_date = nowdate()
+	journal_entry.multi_currency = 1
+
+	party_account_currency = frappe.get_cached_value("Account", party_account, "account_currency")
+
+	if not gain_loss_account:
+		frappe.throw(_("Please set default Exchange Gain/Loss Account in Company {}").format(company))
+	gain_loss_account_currency = get_account_currency(gain_loss_account)
+	company_currency = frappe.get_cached_value("Company", company, "default_currency")
+
+	if gain_loss_account_currency != company_currency:
+		frappe.throw(_("Currency for {0} must be {1}").format(gain_loss_account, company_currency))
+
+	journal_account = frappe._dict(
+		{
+			"account": party_account,
+			"party_type": party_type,
+			"party": party,
+			"account_currency": party_account_currency,
+			"exchange_rate": 0,
+			"cost_center": erpnext.get_default_cost_center(company),
+			"reference_type": ref1_dt,
+			"reference_name": ref1_dn,
+			"reference_detail_no": ref1_detail_no,
+			dr_or_cr: abs(exc_gain_loss),
+			dr_or_cr + "_in_account_currency": 0,
+		}
+	)
+
+	journal_entry.append("accounts", journal_account)
+
+	journal_account = frappe._dict(
+		{
+			"account": gain_loss_account,
+			"account_currency": gain_loss_account_currency,
+			"exchange_rate": 1,
+			"cost_center": erpnext.get_default_cost_center(company),
+			"reference_type": ref2_dt,
+			"reference_name": ref2_dn,
+			"reference_detail_no": ref2_detail_no,
+			reverse_dr_or_cr + "_in_account_currency": 0,
+			reverse_dr_or_cr: abs(exc_gain_loss),
+		}
+	)
+
+	journal_entry.append("accounts", journal_account)
+
+	journal_entry.save()
+	journal_entry.submit()
+	return journal_entry.name
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 6bf9d29..b9fc082 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -38,7 +38,12 @@
 	get_party_gle_currency,
 	validate_party_frozen_disabled,
 )
-from erpnext.accounts.utils import get_account_currency, get_fiscal_years, validate_fiscal_year
+from erpnext.accounts.utils import (
+	create_gain_loss_journal,
+	get_account_currency,
+	get_fiscal_years,
+	validate_fiscal_year,
+)
 from erpnext.buying.utils import update_last_purchase_rate
 from erpnext.controllers.print_settings import (
 	set_print_templates_for_item_table,
@@ -968,78 +973,6 @@
 
 				d.exchange_gain_loss = difference
 
-	def create_gain_loss_journal(
-		self,
-		party_type,
-		party,
-		party_account,
-		gain_loss_account,
-		exc_gain_loss,
-		dr_or_cr,
-		reverse_dr_or_cr,
-		ref1_dt,
-		ref1_dn,
-		ref1_detail_no,
-		ref2_dt,
-		ref2_dn,
-		ref2_detail_no,
-	) -> str:
-		journal_entry = frappe.new_doc("Journal Entry")
-		journal_entry.voucher_type = "Exchange Gain Or Loss"
-		journal_entry.company = self.company
-		journal_entry.posting_date = nowdate()
-		journal_entry.multi_currency = 1
-
-		party_account_currency = frappe.get_cached_value("Account", party_account, "account_currency")
-
-		if not gain_loss_account:
-			frappe.throw(
-				_("Please set default Exchange Gain/Loss Account in Company {}").format(self.get("company"))
-			)
-		gain_loss_account_currency = get_account_currency(gain_loss_account)
-		company_currency = frappe.get_cached_value("Company", self.company, "default_currency")
-
-		if gain_loss_account_currency != self.company_currency:
-			frappe.throw(_("Currency for {0} must be {1}").format(gain_loss_account, company_currency))
-
-		journal_account = frappe._dict(
-			{
-				"account": party_account,
-				"party_type": party_type,
-				"party": party,
-				"account_currency": party_account_currency,
-				"exchange_rate": 0,
-				"cost_center": erpnext.get_default_cost_center(self.company),
-				"reference_type": ref1_dt,
-				"reference_name": ref1_dn,
-				"reference_detail_no": ref1_detail_no,
-				dr_or_cr: abs(exc_gain_loss),
-				dr_or_cr + "_in_account_currency": 0,
-			}
-		)
-
-		journal_entry.append("accounts", journal_account)
-
-		journal_account = frappe._dict(
-			{
-				"account": gain_loss_account,
-				"account_currency": gain_loss_account_currency,
-				"exchange_rate": 1,
-				"cost_center": erpnext.get_default_cost_center(self.company),
-				"reference_type": ref2_dt,
-				"reference_name": ref2_dn,
-				"reference_detail_no": ref2_detail_no,
-				reverse_dr_or_cr + "_in_account_currency": 0,
-				reverse_dr_or_cr: abs(exc_gain_loss),
-			}
-		)
-
-		journal_entry.append("accounts", journal_account)
-
-		journal_entry.save()
-		journal_entry.submit()
-		return journal_entry.name
-
 	def make_exchange_gain_loss_journal(self, args: dict = None) -> None:
 		"""
 		Make Exchange Gain/Loss journal for Invoices and Payments
@@ -1068,7 +1001,8 @@
 
 							reverse_dr_or_cr = "debit" if dr_or_cr == "credit" else "credit"
 
-							self.create_gain_loss_journal(
+							create_gain_loss_journal(
+								self.company,
 								arg.get("party_type"),
 								arg.get("party"),
 								party_account,
@@ -1140,7 +1074,8 @@
 							"Company", self.company, "exchange_gain_loss_account"
 						)
 
-						self.create_gain_loss_journal(
+						create_gain_loss_journal(
+							self.company,
 							self.party_type,
 							self.party,
 							party_account,
