diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 150f68b..c71ea36 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -204,7 +204,9 @@
 		if not self.account_currency:
 			self.account_currency = frappe.get_cached_value("Company", self.company, "default_currency")
 
-		elif self.account_currency != frappe.db.get_value("Account", self.name, "account_currency"):
+		gl_currency = frappe.db.get_value("GL Entry", {"account": self.name}, "account_currency")
+
+		if gl_currency and self.account_currency != gl_currency:
 			if frappe.db.get_value("GL Entry", {"account": self.name}):
 				frappe.throw(_("Currency can not be changed after making entries using some other currency"))
 
diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py
index efc063d..a6d4488 100644
--- a/erpnext/accounts/doctype/account/test_account.py
+++ b/erpnext/accounts/doctype/account/test_account.py
@@ -241,71 +241,27 @@
 		for doc in to_delete:
 			frappe.delete_doc("Account", doc)
 
+	def test_validate_account_currency(self):
+		from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
 
-def _make_test_records(verbose=None):
-	from frappe.test_runner import make_test_objects
+		if not frappe.db.get_value("Account", "Test Currency Account - _TC"):
+			acc = frappe.new_doc("Account")
+			acc.account_name = "Test Currency Account"
+			acc.parent_account = "Tax Assets - _TC"
+			acc.company = "_Test Company"
+			acc.insert()
+		else:
+			acc = frappe.get_doc("Account", "Test Currency Account - _TC")
 
-	accounts = [
-		# [account_name, parent_account, is_group]
-		["_Test Bank", "Bank Accounts", 0, "Bank", None],
-		["_Test Bank USD", "Bank Accounts", 0, "Bank", "USD"],
-		["_Test Bank EUR", "Bank Accounts", 0, "Bank", "EUR"],
-		["_Test Cash", "Cash In Hand", 0, "Cash", None],
-		["_Test Account Stock Expenses", "Direct Expenses", 1, None, None],
-		["_Test Account Shipping Charges", "_Test Account Stock Expenses", 0, "Chargeable", None],
-		["_Test Account Customs Duty", "_Test Account Stock Expenses", 0, "Tax", None],
-		["_Test Account Insurance Charges", "_Test Account Stock Expenses", 0, "Chargeable", None],
-		["_Test Account Stock Adjustment", "_Test Account Stock Expenses", 0, "Stock Adjustment", None],
-		["_Test Employee Advance", "Current Liabilities", 0, None, None],
-		["_Test Account Tax Assets", "Current Assets", 1, None, None],
-		["_Test Account VAT", "_Test Account Tax Assets", 0, "Tax", None],
-		["_Test Account Service Tax", "_Test Account Tax Assets", 0, "Tax", None],
-		["_Test Account Reserves and Surplus", "Current Liabilities", 0, None, None],
-		["_Test Account Cost for Goods Sold", "Expenses", 0, None, None],
-		["_Test Account Excise Duty", "_Test Account Tax Assets", 0, "Tax", None],
-		["_Test Account Education Cess", "_Test Account Tax Assets", 0, "Tax", None],
-		["_Test Account S&H Education Cess", "_Test Account Tax Assets", 0, "Tax", None],
-		["_Test Account CST", "Direct Expenses", 0, "Tax", None],
-		["_Test Account Discount", "Direct Expenses", 0, None, None],
-		["_Test Write Off", "Indirect Expenses", 0, None, None],
-		["_Test Exchange Gain/Loss", "Indirect Expenses", 0, None, None],
-		["_Test Account Sales", "Direct Income", 0, None, None],
-		# related to Account Inventory Integration
-		["_Test Account Stock In Hand", "Current Assets", 0, None, None],
-		# fixed asset depreciation
-		["_Test Fixed Asset", "Current Assets", 0, "Fixed Asset", None],
-		["_Test Accumulated Depreciations", "Current Assets", 0, "Accumulated Depreciation", None],
-		["_Test Depreciations", "Expenses", 0, None, None],
-		["_Test Gain/Loss on Asset Disposal", "Expenses", 0, None, None],
-		# Receivable / Payable Account
-		["_Test Receivable", "Current Assets", 0, "Receivable", None],
-		["_Test Payable", "Current Liabilities", 0, "Payable", None],
-		["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"],
-		["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"],
-	]
+		self.assertEqual(acc.account_currency, "INR")
 
-	for company, abbr in [
-		["_Test Company", "_TC"],
-		["_Test Company 1", "_TC1"],
-		["_Test Company with perpetual inventory", "TCP1"],
-	]:
-		test_objects = make_test_objects(
-			"Account",
-			[
-				{
-					"doctype": "Account",
-					"account_name": account_name,
-					"parent_account": parent_account + " - " + abbr,
-					"company": company,
-					"is_group": is_group,
-					"account_type": account_type,
-					"account_currency": currency,
-				}
-				for account_name, parent_account, is_group, account_type, currency in accounts
-			],
+		# Make a JV against this account
+		make_journal_entry(
+			"Test Currency Account - _TC", "Miscellaneous Expenses - _TC", 100, submit=True
 		)
 
-	return test_objects
+		acc.account_currency = "USD"
+		self.assertRaises(frappe.ValidationError, acc.save)
 
 
 def get_inventory_account(company, warehouse=None):
