diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 9568c90..7c366c1 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -196,7 +196,7 @@
 
 			# fetch charges
 			if self.taxes_and_charges and not len(self.get("taxes")):
-				self.set_taxes("taxes", "taxes_and_charges")
+				self.set_taxes()
 
 	def get_advances(self):
 		super(SalesInvoice, self).get_advances(self.debit_to, "Customer", self.customer,
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 6612cb5..2643883 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -140,30 +140,29 @@
 							"discount_percentage", "base_rate", "rate"]:
 								item.set(field, ret.get(field))
 
-	def set_taxes(self, tax_parentfield, tax_master_field):
-		if not self.meta.get_field(tax_parentfield):
+	def set_taxes(self):
+		if not self.meta.get_field("taxes"):
 			return
 
-		tax_master_doctype = self.meta.get_field(tax_master_field).options
+		tax_master_doctype = self.meta.get_field("taxes_and_charges").options
 
-		if not self.get(tax_parentfield):
-			if not self.get(tax_master_field):
+		if not self.get("taxes"):
+			if not self.get("taxes_and_charges"):
 				# get the default tax master
-				self.set(tax_master_field, frappe.db.get_value(tax_master_doctype, {"is_default": 1}))
+				self.set("taxes_and_charges", frappe.db.get_value(tax_master_doctype, {"is_default": 1}))
 
-			self.append_taxes_from_master(tax_parentfield, tax_master_field, tax_master_doctype)
+			self.append_taxes_from_master(tax_master_doctype)
 
-	def append_taxes_from_master(self, tax_parentfield, tax_master_field, tax_master_doctype=None):
-		if self.get(tax_master_field):
+	def append_taxes_from_master(self, tax_master_doctype=None):
+		if self.get("taxes_and_charges"):
 			if not tax_master_doctype:
-				tax_master_doctype = self.meta.get_field(tax_master_field).options
+				tax_master_doctype = self.meta.get_field("taxes_and_charges").options
 
-			self.extend(tax_parentfield,
-				get_taxes_and_charges(tax_master_doctype, self.get(tax_master_field), tax_parentfield))
+			self.extend("taxes", get_taxes_and_charges(tax_master_doctype, self.get("taxes_and_charges")))
 
 	def set_other_charges(self):
 		self.set("taxes", [])
-		self.set_taxes("taxes", "taxes_and_charges")
+		self.set_taxes()
 
 	def validate_enabled_taxes_and_charges(self):
 		taxes_and_charges_doctype = self.meta.get_options("taxes_and_charges")
@@ -335,14 +334,19 @@
 @frappe.whitelist()
 def get_tax_rate(account_head):
 	return frappe.db.get_value("Account", account_head, "tax_rate")
+	
+@frappe.whitelist()
+def get_default_taxes_and_charges(master_doctype):
+	default_tax = frappe.db.get_value(master_doctype, {"is_default": 1})
+	return get_taxes_and_charges(master_doctype, default_tax)
 
 @frappe.whitelist()
-def get_taxes_and_charges(master_doctype, master_name, tax_parentfield):
+def get_taxes_and_charges(master_doctype, master_name):
 	from frappe.model import default_fields
 	tax_master = frappe.get_doc(master_doctype, master_name)
 
 	taxes_and_charges = []
-	for i, tax in enumerate(tax_master.get(tax_parentfield)):
+	for i, tax in enumerate(tax_master.get("taxes")):
 		tax = tax.as_dict()
 
 		for fieldname in default_fields:
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index b9aee62..8fa8fa3 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -44,8 +44,6 @@
 			self.update_if_missing(get_party_details(self.supplier, party_type="Supplier"))
 
 		self.set_missing_item_details()
-		if self.get("__islocal"):
-			self.set_taxes("taxes", "taxes_and_charges")
 
 	def set_supplier_from_item_default(self):
 		if self.meta.get_field("supplier") and not self.supplier:
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index f0a2f08..2dde685 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -42,8 +42,6 @@
 		# set contact and address details for customer, if they are not mentioned
 		self.set_missing_lead_customer_details()
 		self.set_price_list_and_item_details()
-		if self.get("__islocal"):
-			self.set_taxes("taxes", "taxes_and_charges")
 
 	def set_missing_lead_customer_details(self):
 		if getattr(self, "customer", None):
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 106b3cc..0e444cc 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -41,6 +41,11 @@
 
 	onload_post_render: function() {
 		var me = this;
+		if(this.frm.doc.__islocal && !(this.frm.doc.taxes || []).length
+			&& !(this.frm.doc.__onload ? this.frm.doc.__onload.load_after_mapping : false)) {
+				this.apply_default_taxes();
+		}
+		
 		if(this.frm.doc.__islocal && this.frm.doc.company && this.frm.doc["items"] && !this.frm.doc.is_pos) {
 			this.calculate_taxes_and_totals();
 		}
@@ -58,6 +63,23 @@
 		erpnext.pos.make_pos_btn(this.frm);
 		this.setup_sms();
 	},
+	
+	apply_default_taxes: function() {
+		var me = this;
+		return frappe.call({
+			method: "erpnext.controllers.accounts_controller.get_default_taxes_and_charges",
+			args: {
+				"master_doctype": frappe.meta.get_docfield(me.frm.doc.doctype, "taxes_and_charges",
+					me.frm.doc.name).options
+			},
+			callback: function(r) {
+				if(!r.exc) {
+					me.frm.set_value("taxes", r.message);
+					me.calculate_taxes_and_totals();
+				}
+			}
+		});
+	},
 
 	setup_sms: function() {
 		var me = this;
@@ -646,7 +668,6 @@
 					"master_doctype": frappe.meta.get_docfield(this.frm.doc.doctype, "taxes_and_charges",
 						this.frm.doc.name).options,
 					"master_name": this.frm.doc.taxes_and_charges,
-					"tax_parentfield": "taxes"
 				},
 				callback: function(r) {
 					if(!r.exc) {
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 401f047..0b09eb7 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -256,7 +256,7 @@
 	quotation.set("taxes", [])
 
 	# append taxes
-	quotation.append_taxes_from_master("taxes", "taxes_and_charges")
+	quotation.append_taxes_from_master()
 
 def get_lead_or_customer():
 	customer = frappe.db.get_value("Contact", {"email_id": frappe.session.user}, "customer")
