diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
index 305093b..43e7268 100644
--- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
+++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json
@@ -380,6 +380,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
+   "default": "1", 
    "fieldname": "add_taxes_from_item_tax_template", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -709,7 +710,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-12-28 23:18:29.863177", 
+ "modified": "2019-01-07 00:42:34.510150", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "Accounts Settings", 
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 9b8a69d..917176a 100755
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -580,3 +580,4 @@
 erpnext.patches.v10_0.repost_gle_for_purchase_receipts_with_rejected_items
 erpnext.patches.v11_0.set_missing_gst_hsn_code
 erpnext.patches.v11_0.rename_bom_wo_fields
+erpnext.patches.v11_0.move_item_tax_to_item_tax_template
diff --git a/erpnext/patches/v11_0/move_item_tax_to_item_tax_template.py b/erpnext/patches/v11_0/move_item_tax_to_item_tax_template.py
new file mode 100644
index 0000000..8de7009
--- /dev/null
+++ b/erpnext/patches/v11_0/move_item_tax_to_item_tax_template.py
@@ -0,0 +1,80 @@
+import frappe
+import json
+from six import iteritems
+
+old_item_taxes = {}
+item_tax_templates = {}
+rename_template_to_untitled = []
+
+def execute():
+	for d in frappe.db.sql("""select parent as item_code, tax_type, tax_rate from `tabItem Tax`""", as_dict=1):
+		old_item_taxes.setdefault(d.item_code, [])
+		old_item_taxes[d.item_code].append(d)
+
+	frappe.reload_doc("accounts", "doctype", "item_tax_template_detail")
+	frappe.reload_doc("accounts", "doctype", "item_tax_template")
+	frappe.reload_doc("stock", "doctype", "item")
+	frappe.reload_doc("stock", "doctype", "item_tax")
+	frappe.reload_doc("selling", "doctype", "quotation_item")
+	frappe.reload_doc("selling", "doctype", "sales_order_item")
+	frappe.reload_doc("stock", "doctype", "delivery_note_item")
+	frappe.reload_doc("accounts", "doctype", "sales_invoice_item")
+	frappe.reload_doc("buying", "doctype", "supplier_quotation_item")
+	frappe.reload_doc("buying", "doctype", "purchase_order_item")
+	frappe.reload_doc("stock", "doctype", "purchase_receipt_item")
+	frappe.reload_doc("accounts", "doctype", "purchase_invoice_item")
+	frappe.reload_doc("accounts", "doctype", "accounts_settings")
+
+	# for each item that have item tax rates
+	for item_code in old_item_taxes.keys():
+		# make current item's tax map
+		item_tax_map = {}
+		for d in old_item_taxes[item_code]:
+			item_tax_map[d.tax_type] = d.tax_rate
+
+		item_tax_template_name = get_item_tax_template(item_tax_map, item_code)
+
+		# update the item tax table
+		item = frappe.get_doc("Item", item_code)
+		item.set("taxes", [])
+		item.append("taxes", {"item_tax_template": item_tax_template_name, "tax_category": ""})
+		item.save()
+	
+	doctypes = [
+		'Quotation', 'Sales Order', 'Delivery Note', 'Sales Invoice',
+		'Supplier Quotation', 'Purchase Order', 'Purchase Receipt', 'Purchase Invoice'
+	]
+	for dt in doctypes:
+		for d in frappe.db.sql("""select name, parent, item_code, item_tax_rate from `tab{0} Item`
+								where ifnull(item_tax_rate, '') not in ('', '{{}}')""".format(dt), as_dict=1):
+			item_tax_map = json.loads(d.item_tax_rate)
+			item_tax_template = get_item_tax_template(item_tax_map, d.item_code, d.parent)
+			frappe.db.set_value(dt + " Item", d.name, "item_tax_template", item_tax_template)
+
+	idx = 1
+	for oldname in rename_template_to_untitled:
+		frappe.rename_doc("Item Tax Template", oldname, "Untitled {}".format(idx))
+		idx += 1
+
+	settings = frappe.get_single("Accounts Settings")
+	settings.add_taxes_from_item_tax_template = 0
+	settings.determine_address_tax_category_from = "Billing Address"
+	settings.save()
+
+def get_item_tax_template(item_tax_map, item_code, parent=None):
+	# search for previously created item tax template by comparing tax maps
+	for template, item_tax_template_map in iteritems(item_tax_templates):
+		if item_tax_map == item_tax_template_map:
+			if not parent:
+				rename_template_to_untitled.append(template)
+			return template
+
+	# if no item tax template found, create one
+	item_tax_template = frappe.new_doc("Item Tax Template")
+	item_tax_template.title = "{}--{}".format(parent, item_code) if parent else "Item-{}".format(item_code)
+	for tax_type, tax_rate in iteritems(item_tax_map):
+		item_tax_template.append("taxes", {"tax_type": tax_type, "tax_rate": tax_rate})
+		item_tax_templates.setdefault(item_tax_template.title, {})
+		item_tax_templates[item_tax_template.title][tax_type] = tax_rate
+	item_tax_template.save()
+	return item_tax_template.name
