diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 83edf1d..fe49163 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -114,21 +114,12 @@
 				
 		
 		if self.party_type and self.party:
-			existing_gle = frappe.db.get_value("GL Entry", {"party_type": self.party_type, 
-				"party": self.party, "company": self.company}, ["name", "account_currency"], as_dict=1)
-			if not existing_gle:
-				party_currency = frappe.db.get_value(self.party_type, self.party, "default_currency")\
-					 or company_currency
-				if party_currency != account_currency:
-					frappe.throw(_("Invalid Account {0}. Account Currency must be {1}, same as {2}: {3}")
-						.format(self.account, party_currency, self.party_type, self.party), 
-							InvalidAccountCurrency)
-			else:
-				currency_in_existing_entries = existing_gle.account_currency or company_currency
-				if currency_in_existing_entries != self.account_currency:
-					frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}")
-						.format(self.party_type, self.party, currency_in_existing_entries), 
-							InvalidAccountCurrency)
+			party_account_currency = frappe.db.get_value(self.party_type, self.party, "party_account_currency") \
+				or company_currency
+				
+			if party_account_currency != self.account_currency:
+				frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}")
+					.format(self.party_type, self.party, party_account_currency), InvalidAccountCurrency)					
 
 def validate_balance_type(account, adv_adj=False):
 	if not adv_adj and account:
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 2b2912d..4a19645 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -142,17 +142,43 @@
 	}
 	return out
 	
+def validate_accounting_currency(party):
+	company_currency = get_company_currency()
+	
+	# set party account currency
+	if not party.party_account_currency:
+		if party.default_currency:
+			party.party_account_currency = party.default_currency
+		else:
+			party.party_account_currency = company_currency
+			
+	party_account_currency_in_db = frappe.db.get_value(party.doctype, party.name, "party_account_currency")
+	if party_account_currency_in_db and party_account_currency_in_db != party.party_account_currency:
+		existing_gle = frappe.db.get_value("GL Entry", {"party_type": party.doctype, 
+			"party": party.name}, ["name", "account_currency"], as_dict=1)
+		if existing_gle:
+			frappe.throw(_("Accounting Currency cannot be changed, as GL Entry exists for this {0}")
+				.format(party.doctype))
+		
+		
 def validate_party_account(party):
-	party_account_defined_for_companies = [d.company for d in party.get("accounts")]
-	party_account_required_for_companies = []
-	for company, company_currency in frappe.db.sql("select name, default_currency from `tabCompany`"):
-		if party.default_currency and party.default_currency != company_currency \
-			and company not in party_account_defined_for_companies:
-				party_account_required_for_companies.append(company)
+	company_currency = get_company_currency()
+	
+	if party.party_account_currency != company_currency:
+		party_account_defined_for_companies = [d.company for d in party.get("accounts")]
+		all_companies = [d.name for d in frappe.get_list("Company")]
+		party_account_required_for_companies = list(set(all_companies) - set(party_account_defined_for_companies))
 				
-	if party_account_required_for_companies:
-		frappe.msgprint(_("Please mention Party Account for the following companies, as party currency is different from company's default currency: {0}")
-			.format("\n" + "\n".join(party_account_required_for_companies)))
+		if party_account_required_for_companies:
+			frappe.msgprint(_("Please mention Default {0} Account for the following companies, as accounting currency is different from company's default currency: {1}")
+				.format(
+					"Receivable" if party.doctype=="Customer" else "Payable", 
+					"\n" + "\n".join(party_account_required_for_companies)
+				)
+			)
+			
+def get_company_currency():
+	return frappe.db.sql("select default_currency from tabCompany limit 1")[0][0]
 				
 @frappe.whitelist()
 def get_party_account(company, party, party_type):
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 35742be..e90ffc5 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -389,8 +389,31 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "party_account_currency", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Accounting Currency", 
+   "no_copy": 0, 
+   "options": "Currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "depends_on": "", 
-   "description": "Mention if non-standard receivable account applicable", 
+   "description": "Mention if non-standard receivable account", 
    "fieldname": "accounts", 
    "fieldtype": "Table", 
    "hidden": 0, 
@@ -511,8 +534,8 @@
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-08-27 16:22:08.762061", 
- "modified_by": "Administrator", 
+ "modified": "2015-09-02 16:31:35.050738", 
+ "modified_by": "nabin@erpnext.com", 
  "module": "Buying", 
  "name": "Supplier", 
  "owner": "Administrator", 
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index a70a771..6ee6b39 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -8,7 +8,7 @@
 from frappe.model.naming import make_autoname
 from erpnext.utilities.address_and_contact import load_address_and_contact
 from erpnext.utilities.transaction_base import TransactionBase
-from erpnext.accounts.party import validate_party_account
+from erpnext.accounts.party import validate_accounting_currency, validate_party_account
 
 class Supplier(TransactionBase):
 	def get_feed(self):
@@ -46,6 +46,7 @@
 			if not self.naming_series:
 				msgprint(_("Series is mandatory"), raise_exception=1)
 				
+		validate_accounting_currency(self)
 		validate_party_account(self)
 
 	def get_contacts(self,nm):
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 7af7369..47d7e7a 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -428,20 +428,12 @@
 		if self.get("currency"):
 			party_type, party = self.get_party()
 			if party_type and party:
-				existing_gle = frappe.db.get_value("GL Entry", {"party_type": party_type, 
-					"party": party, "company": self.company}, ["name", "account_currency"], as_dict=1)
-				if existing_gle:
-					currency_in_existing_entries = existing_gle.account_currency or self.company_currency
-					if currency_in_existing_entries != self.company_currency \
-						and currency_in_existing_entries != self.currency:
-							frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}")
-								.format(party_type, party, currency_in_existing_entries), InvalidCurrency)
-				else:
-					party_currency = frappe.db.get_value(party_type, party, "default_currency") \
-						or self.company_currency
-					if party_currency != self.company_currency and self.currency != party_currency:
-						frappe.throw(_("Currency must be same as {0} currency {1}")
-							.format(party_type, party_currency), InvalidCurrency)
+				party_account_currency = frappe.db.get_value(party_type, party, "party_account_currency") \
+					or self.company_currency
+				
+				if party_account_currency != self.company_currency and self.currency != party_account_currency:
+					frappe.throw(_("Accounting Entry for {0}: {1} can only be made in currency: {2}")
+						.format(party_type, party, party_account_currency), InvalidCurrency)
 				
 @frappe.whitelist()
 def get_tax_rate(account_head):
diff --git a/erpnext/patches/v6_0/multi_currency.py b/erpnext/patches/v6_0/multi_currency.py
index 45e8ebb..0441c4a 100644
--- a/erpnext/patches/v6_0/multi_currency.py
+++ b/erpnext/patches/v6_0/multi_currency.py
@@ -7,7 +7,7 @@
 def execute():
 	# Reload doctype
 	for dt in ("Account", "GL Entry", "Journal Entry", 
-		"Journal Entry Account", "Sales Invoice", "Purchase Invoice"):
+		"Journal Entry Account", "Sales Invoice", "Purchase Invoice", "Customer", "Supplier"):
 			frappe.reload_doctype(dt)
 			
 	for company in frappe.get_all("Company", fields=["name", "default_currency", "default_receivable_account"]):
@@ -65,21 +65,36 @@
 		
 		# Set party account if default currency of party other than company's default currency
 		for dt in ("Customer", "Supplier"):
-			parties = frappe.db.sql("""select name from `tab{0}` p
-				where ifnull(default_currency, '') != '' and default_currency != %s 
-				and not exists(select name from `tabParty Account` where parent=p.name and company=%s)"""
-				.format(dt), (company.default_currency, company.name))
-			
+			parties = frappe.get_all(dt, ["name", "default_currency"])
 			for p in parties:
-				party = frappe.get_doc(dt, p[0])
-				party_gle = frappe.db.get_value("GL Entry", {"party_type": dt, "party": p[0], 
-					"company": company.name}, ["account"], as_dict=True)
+				# Get party GL Entries
+				party_gle = frappe.db.get_value("GL Entry", {"party_type": dt, "party": p.name, 
+					"company": company.name}, ["account", "account_currency"], as_dict=True)
 					
-				party_account = party_gle.account or company.default_receivable_account
+				party = frappe.get_doc(dt, p.name)
 				
-				party.append("accounts", {
-					"company": company.name,
-					"account": party_account
-				})
-				party.ignore_mandatory()
+				# set default currency and party account currency
+				if not party.default_currency:
+					party.default_currency = company.default_currency
+					
+				party.party_account_currency = company.default_currency if party_gle else party.default_currency
+
+				# Add default receivable /payable account if not exists 
+				# and currency is other than company currency
+				if party.default_currency != company.default_currency:
+					party_account_exists = False
+					for d in party.get("accounts"):
+						if d.company == company.name:
+							party_account_exists = True
+							break
+					
+					if not party_account_exists:
+						party_account = party_gle.account if party_gle else company.default_receivable_account
+						if party_account:
+							party.append("accounts", {
+								"company": company.name,
+								"account": party_account
+							})
+				
+				party.flags.ignore_mandatory = True
 				party.save()
\ No newline at end of file
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 952be8b..d160798 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -273,7 +273,7 @@
    "ignore_user_permissions": 1, 
    "in_filter": 0, 
    "in_list_view": 0, 
-   "label": "Currency", 
+   "label": "Default Currency", 
    "no_copy": 1, 
    "options": "Currency", 
    "permlevel": 0, 
@@ -463,8 +463,31 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "party_account_currency", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Accounting Currency", 
+   "no_copy": 0, 
+   "options": "Currency", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "depends_on": "", 
-   "description": "Mention if non-standard receivable account applicable", 
+   "description": "Mention if non-standard receivable account", 
    "fieldname": "accounts", 
    "fieldtype": "Table", 
    "hidden": 0, 
@@ -796,8 +819,8 @@
  "is_submittable": 0, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-08-27 17:00:50.604869", 
- "modified_by": "Administrator", 
+ "modified": "2015-09-02 16:32:54.474655", 
+ "modified_by": "nabin@erpnext.com", 
  "module": "Selling", 
  "name": "Customer", 
  "owner": "Administrator", 
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index ae5cb49..c8f774c 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -10,7 +10,7 @@
 
 from erpnext.utilities.transaction_base import TransactionBase
 from erpnext.utilities.address_and_contact import load_address_and_contact
-from erpnext.accounts.party import validate_party_account
+from erpnext.accounts.party import validate_accounting_currency, validate_party_account
 
 class Customer(TransactionBase):
 	def get_feed(self):
@@ -33,6 +33,7 @@
 			
 	def validate(self):
 		self.validate_mandatory()
+		validate_accounting_currency(self)
 		validate_party_account(self)
 
 	def update_lead_status(self):
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index cf47de5..72c6cdd 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -34,13 +34,8 @@
 		if not self.abbr.strip():
 			frappe.throw(_("Abbreviation is mandatory"))
 
-		self.previous_default_currency = frappe.db.get_value("Company", self.name, "default_currency")
-		if self.default_currency and self.previous_default_currency and \
-			self.default_currency != self.previous_default_currency and \
-			self.check_if_transactions_exist():
-				frappe.throw(_("Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."))
-
 		self.validate_default_accounts()
+		self.validate_currency()
 
 	def validate_default_accounts(self):
 		for field in ["default_bank_account", "default_cash_account", "default_receivable_account", "default_payable_account",
@@ -51,6 +46,21 @@
 					if for_company != self.name:
 						frappe.throw(_("Account {0} does not belong to company: {1}")
 							.format(self.get(field), self.name))
+							
+	def validate_currency(self):
+		self.previous_default_currency = frappe.db.get_value("Company", self.name, "default_currency")
+		if self.default_currency and self.previous_default_currency and \
+			self.default_currency != self.previous_default_currency and \
+			self.check_if_transactions_exist():
+				frappe.throw(_("Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency."))
+				
+		if self.default_currency:
+			currency_in_other_companies = frappe.db.sql("""select default_currency from tabCompany 
+				where name!=%s limit 1""", self.name)
+
+			if currency_in_other_companies and self.default_currency != currency_in_other_companies[0][0]:
+				frappe.throw(_("Currency must be same for all Companies"))
+			
 
 	def on_update(self):
 		if not frappe.db.sql("""select name from tabAccount
