diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 014dde5..5b034f8 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -41,21 +41,24 @@
 				throw(_("Invalid Master Name"))
 
 	def validate_parent(self):
-		"""Fetch Parent Details and validation for account not to be created under ledger"""
+		"""Fetch Parent Details and validate parent account"""
 		if self.parent_account:
 			par = frappe.db.get_value("Account", self.parent_account,
-				["name", "group_or_ledger", "report_type", "root_type"], as_dict=1)
+				["name", "group_or_ledger", "report_type", "root_type", "company"], as_dict=1)
 			if not par:
-				throw(_("Parent account does not exist"))
-			elif par["name"] == self.name:
-				throw(_("You can not assign itself as parent account"))
-			elif par["group_or_ledger"] != 'Group':
-				throw(_("Parent account can not be a ledger"))
+				throw(_("Account {0}: Parent account {1} does not exist").format(self.name, self.parent_account))
+			elif par.name == self.name:
+				throw(_("Account {0}: You can not assign itself as parent account").format(self.name))
+			elif par.group_or_ledger != 'Group':
+				throw(_("Account {0}: Parent account {1} can not be a ledger").format(self.name, self.parent_account))
+			elif par.company != self.company:
+				throw(_("Account {0}: Parent account {1} does not belong to company: {2}")
+					.format(self.name, self.parent_account, self.company))
 
-			if par["report_type"]:
-				self.report_type = par["report_type"]
-			if par["root_type"]:
-				self.root_type = par["root_type"]
+			if par.report_type:
+				self.report_type = par.report_type
+			if par.root_type:
+				self.root_type = par.root_type
 
 	def validate_root_details(self):
 		#does not exists parent
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index f8e043a..bd623e6 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -35,6 +35,18 @@
 			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()
+		
+	def validate_default_accounts(self):
+		for field in ["default_bank_account", "default_cash_account", "receivables_group", "payables_group", 
+			"default_expense_account", "default_income_account", "stock_received_but_not_billed", 
+			"stock_adjustment_account", "expenses_included_in_valuation"]:
+				if self.get(field):
+					for_company = frappe.db.get_value("Account", self.get(field), "company")
+					if for_company != self.name:
+						frappe.throw(_("Account {0} does not belong to company: {1}")
+							.format(self.get(field), self.name))
 
 	def on_update(self):
 		if not frappe.db.sql("""select name from tabAccount
@@ -60,7 +72,7 @@
 		for whname in (_("Stores"), _("Work In Progress"), _("Finished Goods")):
 			if not frappe.db.exists("Warehouse", whname + " - " + self.abbr):
 				stock_group = frappe.db.get_value("Account", {"account_type": "Stock",
-					"group_or_ledger": "Group"})
+					"group_or_ledger": "Group", "company": self.name})
 				if stock_group:
 					frappe.get_doc({
 						"doctype":"Warehouse",
@@ -115,7 +127,8 @@
 			_set_default_account("expenses_included_in_valuation", "Expenses Included In Valuation")
 
 		if not self.default_income_account:
-			self.db_set("default_income_account", frappe.db.get_value("Account", {"account_name": _("Sales")}))
+			self.db_set("default_income_account", frappe.db.get_value("Account", 
+				{"account_name": _("Sales"), "company": self.name}))
 
 	def create_default_cost_center(self):
 		cc_list = [
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 2b68928..0095bbb 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -22,11 +22,16 @@
 		self.update_parent_account()
 
 	def update_parent_account(self):
-		if not getattr(self, "__islocal", None) and (self.create_account_under !=
-			frappe.db.get_value("Warehouse", self.name, "create_account_under")):
-				warehouse_account = frappe.db.get_value("Account",
-					{"account_type": "Warehouse", "company": self.company,
-					"master_name": self.name}, ["name", "parent_account"])
+		
+		if not getattr(self, "__islocal", None) \
+			and (self.create_account_under != frappe.db.get_value("Warehouse", self.name, "create_account_under")):
+				
+				self.validate_parent_account()
+				
+				warehouse_account = frappe.db.get_value("Account", 
+					{"account_type": "Warehouse", "company": self.company, "master_name": self.name}, 
+					["name", "parent_account"])
+					
 				if warehouse_account and warehouse_account[1] != self.create_account_under:
 					acc_doc = frappe.get_doc("Account", warehouse_account[0])
 					acc_doc.parent_account = self.create_account_under
@@ -57,13 +62,21 @@
 					msgprint(_("Account head {0} created").format(ac_doc.name))
 
 	def validate_parent_account(self):
+		if not self.company:
+			frappe.throw(_("Warehouse {0}: Company is mandatory").format(self.name))
+		
 		if not self.create_account_under:
 			parent_account = frappe.db.get_value("Account",
 				{"account_name": "Stock Assets", "company": self.company})
+			
 			if parent_account:
 				self.create_account_under = parent_account
 			else:
 				frappe.throw(_("Please enter parent account group for warehouse account"))
+		elif frappe.db.get_value("Account", self.create_account_under, "company") != self.company:
+			frappe.throw(_("Warehouse {0}: Parent account {1} does not bolong to the company {2}")
+				.format(self.name, self.create_account_under, self.company))
+			
 
 	def on_trash(self):
 		# delete bin
