diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
index 28964bb..3947450 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.py
@@ -4,12 +4,18 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
+from frappe.utils import flt
 from frappe.model.document import Document
 from erpnext.controllers.accounts_controller import validate_taxes_and_charges, validate_inclusive_tax
 
 class SalesTaxesandChargesTemplate(Document):
 	def validate(self):
 		valdiate_taxes_and_charges_template(self)
+		
+	def set_missing_values(self):
+		for data in self.taxes:
+			if data.charge_type == 'On Net Total' and flt(data.rate) == 0.0:
+				data.rate = frappe.db.get_value('Account', data.account_head, 'tax_rate')
 
 def valdiate_taxes_and_charges_template(doc):
 	# default should not be disabled
diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json
new file mode 100644
index 0000000..06f7f09
--- /dev/null
+++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json
@@ -0,0 +1,1380 @@
+{
+	"Albania": {
+		"Albania VAT": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+	"Algeria": {
+		"Algeria VAT 17%": {
+			"account_name": "VAT 17%",
+			"tax_rate": 17.00,
+			"default": 1
+		},
+		"Algeria VAT 7%": {
+			"account_name": "VAT 7%",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Andorra": {
+		"Andorra VAT": {
+			"account_name": "VAT",
+			"tax_rate": 4.50
+		}
+	},
+
+	"Angola": {
+		"Angola VAT": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Antigua And Barbuda": {
+		"Antigua & Barbuda Sales Tax": {
+			"account_name": "ABST",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Argentina": {
+		"Argentina Tax": {
+			"account_name": "VAT",
+			"tax_rate": 21.00
+		}
+	},
+
+	"Armenia": {
+		"Armenia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Aruba": {
+		"Aruba Tax": {
+			"account_name": "VAT",
+			"tax_rate": 1.50
+		}
+	},
+
+	"Australia": {
+		"Australia GST1": {
+			"account_name": "GST 10%",
+			"tax_rate": 10.00,
+			"default": 1
+		},
+		"Australia GST 2%": {
+			"account_name": "GST 2%",
+			"tax_rate": 2
+		}
+	},
+
+	"Austria": {
+		"Austria Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Azerbaijan": {
+		"Azerbaijan Tax": {
+			"account_name": "GST",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Bahamas": {
+		"Bahamas Tax": {
+			"account_name": "VAT",
+			"tax_rate": 7.50
+		}
+	},
+
+	"Bangladesh": {
+		"Bangladesh Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Barbados": {
+		"Barbados Tax": {
+			"account_name": "VAT",
+			"tax_rate": 17.50
+		}
+	},
+
+	"Belarus": {
+		"Belarus Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Belgium": {
+		"Belgium VAT 21%": {
+			"account_name": "VAT 21%",
+			"tax_rate": 21.00,
+			"default": 1
+		},
+		"Belgium VAT 12%": {
+			"account_name": "VAT 12%",
+			"tax_rate": 12
+		}
+	},
+
+	"Belize": {
+		"Belize Tax": {
+			"account_name": "GST",
+			"tax_rate": 12.50
+		}
+	},
+
+	"Benin": {
+		"Benin Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Bhutan": {
+		"Bhutan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 50.00
+		}
+	},
+
+	"Bolivia": {
+		"Bolivia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 13.00
+		}
+	},
+
+	"Bosnia and Herzegovina": {
+		"Bosnia & Herzegovina Tax": {
+			"account_name": "VAT",
+			"tax_rate": 17.00
+		}
+	},
+
+	"Botswana": {
+		"Botswana Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Brazil": {
+		"Brazil ICMS 19%": {
+			"account_name": "ICMS 19%",
+			"tax_rate": 19.00,
+			"default": 1
+		},
+		"Brazil ICMS 17%": {
+			"account_name": "ICMS 17%",
+			"tax_rate": 17.00
+		},
+		"Brazil PIS 1.65%": {
+			"account_name": "PIS 1.65%",
+			"tax_rate": 1.65
+		},
+		"Brazil COFINS 7.6%": {
+			"account_name": "COFINS 7.6%",
+			"tax_rate": 7.6
+		},
+		"Brazil COFINS 5.0%": {
+			"account_name": "ISS 5%",
+			"tax_rate": 5.0
+		}
+	},
+
+	"Bulgaria": {
+		"Bulgaria VAT 20%": {
+			"account_name": "VAT 20%",
+			"tax_rate": 20.00,
+			"default": 1
+		},
+		"Bulgaria VAT 7%": {
+			"account_name": "VAT 7%",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Burkina Faso": {
+		"Burkina Faso Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Burundi": {
+		"Burundi Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Cambodia": {
+		"Cambodia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Cameroon": {
+		"Cameroon Tax": {
+			"account_name": "VAT",
+			"tax_rate": 19.25
+		}
+	},
+
+	"Canada": {
+		"Canada GST 5%": {
+			"account_name": "GST",
+			"tax_rate": 5.00,
+			"default": 1
+		},
+		"Canada HST 15%": {
+			"account_name": "HST",
+			"tax_rate": 15.00
+		},
+		"Canada PST 8%": {
+			"account_name": "PST 8%",
+			"tax_rate": 8.00
+		},
+		"Canada PST 7%": {
+			"account_name": "PST 7%",
+			"tax_rate": 7.00
+		},
+		"Canada PST 5%": {
+			"account_name": "PST 5%",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Cape Verde": {
+		"Cape Verde Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Central African Republic": {
+		"Central African Republic Tax": {
+			"account_name": "VAT",
+			"tax_rate": 19.00
+		}
+	},
+
+	"Chad": {
+		"Chad Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Chile": {
+		"Chile Tax": {
+			"account_name": "VAT",
+			"tax_rate": 19.00
+		}
+	},
+
+	"China": {
+		"China Tax": {
+			"account_name": "VAT",
+			"tax_rate": 17.00
+		}
+	},
+
+	"Colombia": {
+		"Colombia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Comoros": {
+		"Comoros Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Congo": {
+		"Congo Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Costa Rica": {
+		"Costa Rica": {
+			"account_name": "VAT",
+			"tax_rate": 13.00
+		}
+	},
+
+	"Croatia": {
+		"Croatia VAT 25%": {
+			"account_name": "VAT 25%",
+			"tax_rate": 25.00,
+			"default": 1
+		},
+		"Croatia VAT 10%": {
+			"account_name": "VAT 10%",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Cuba": {
+		"Cuba Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Cyprus": {
+		"Cyprus Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Czech Republic": {
+		"Czech Republic VAT 21%": {
+			"account_name": "VAT 21%",
+			"tax_rate": 21.00,
+			"default": 1
+		},
+		"Czech Republic VAT 15%": {
+			"account_name": "VAT 15%",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Denmark": {
+		"Denmark Tax": {
+			"account_name": "VAT",
+			"tax_rate": 25.00
+		}
+	},
+
+	"Djibouti": {
+		"Dijbouti Tax": {
+			"account_name": "VAT",
+			"tax_rate": 33.00
+		}
+	},
+
+	"Dominica": {
+		"Dominica Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Dominican Republic": {
+		"Dominican Republic Tax": {
+			"account_name": "ITBIS",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Ecuador": {
+		"Ecuador Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Egypt": {
+		"Egypt Tax": {
+			"account_name": "GST",
+			"tax_rate": 10.00
+		}
+	},
+
+	"El Salvador": {
+		"El Salvador Tax": {
+			"account_name": "VAT",
+			"tax_rate": 13.00
+		}
+	},
+
+	"Equatorial Guinea": {
+		"Equatorial Guinea": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Eritrea": {
+		"Eritrea Tax": {
+			"account_name": "VAT",
+			"tax_rate": 4.00
+		}
+	},
+
+	"Estonia": {
+		"Estonia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Ethiopia": {
+		"Ethiopia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Fiji": {
+		"Fiji Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Finland": {
+		"Finland Tax": {
+			"account_name": "VAT",
+			"tax_rate": 24.00
+		}
+	},
+
+	"France": {
+		"France VAT 19.6%": {
+			"account_name": "VAT 19.6%",
+			"tax_rate": 19.6,
+			"default": 1
+		},
+		"France VAT 5.5%": {
+			"account_name": "VAT 5.5%",
+			"tax_rate": 5.5
+		}
+	},
+
+	"Gabon": {
+		"Gabon Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Gambia": {
+		"Gambia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Georgia": {
+		"Georgia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Germany": {
+		"Germany VAT 19%": {
+			"account_name": "VAT 19%",
+			"tax_rate": 19.00,
+			"default": 1
+		},
+		"Germany VAT 7%": {
+			"account_name": "VAT 7%",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Ghana": {
+		"Ghana Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Greece": {
+		"Greece VAT 23%": {
+			"account_name": "VAT 23%",
+			"tax_rate": 23.00,
+			"default": 1
+		},
+		"Greece VAT 9%": {
+			"account_name": "VAT 9%",
+			"tax_rate": 9.00
+		}
+	},
+
+	"Grenada": {
+		"Grenada Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Guam": {
+		"Guam Tax": {
+			"account_name": "VAT",
+			"tax_rate": 4.00
+		}
+	},
+
+	"Guatemala": {
+		"Guatemala Tax": {
+			"account_name": "IVA",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Guinea": {
+		"Guinea Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Guyana": {
+		"Guyana Tax": {
+			"account_name": "GST",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Haiti": {
+		"Haiti Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Honduras": {
+		"Honduras Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Hungary": {
+		"Hungary Tax": {
+			"account_name": "VAT",
+			"tax_rate": 27.00
+		}
+	},
+
+	"Iceland": {
+		"Iceland VAT 25.5%": {
+			"account_name": "VAT 25.5%",
+			"tax_rate": 25.5,
+			"default": 1
+		},
+		"Iceland VAT 7.5%": {
+			"account_name": "VAT 7.5%",
+			"tax_rate": 7.5
+		}
+	},
+
+	"India": {
+		"India VAT 5%": {
+			"account_name": "VAT 5%",
+			"tax_rate": 5.00,
+			"default": 1
+		},
+		"India VAT 4%": {
+			"account_name": "VAT 4%",
+			"tax_rate": 4.00
+		},
+		"India VAT 14%": {
+			"account_name": "VAT 14%",
+			"tax_rate": 14.00
+		}
+	},
+
+	"Indonesia": {
+		"Indonesia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Iran": {
+		"Iran Tax": {
+			"account_name": "VAT",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Ireland": {
+		"Ireland Tax": {
+			"account_name": "VAT",
+			"tax_rate": 23.00
+		}
+	},
+
+	"Isle Of Man": {
+		"Isle of Man VAT 20%": {
+			"account_name": "VAT",
+			"tax_rate": 20.00,
+			"default": 1
+		},
+		"Isle of Man VAT 5%": {
+			"account_name": "VAT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Israel": {
+		"Israel Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Italy": {
+		"Italy Tax": {
+			"account_name": "VAT",
+			"tax_rate": 22.00
+		}
+	},
+
+	"Ivory Coast": {
+		"Ivory Coast": {
+			"account_name": "Metric",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Jamaica": {
+		"Jamaica Tax": {
+			"account_name": "GCT",
+			"tax_rate": 16.50
+		}
+	},
+
+	"Japan": {
+		"Japan Tax": {
+			"account_name": "CT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Jordan": {
+		"Jordan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Kazakhstan": {
+		"Kazakhstan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Kenya": {
+		"Kenya Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Kosovo": {
+		"Kosovo Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Kyrgyzstan": {
+		"Kyrgyztan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Lao People's Democratic Republic": {
+		"Lao Republic Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Latvia": {
+		"Latvia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Lebanon": {
+		"Lebanon Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Liechtenstein": {
+		"Liechtenstein Tax": {
+			"account_name": "VAT",
+			"tax_rate": 8.00
+		}
+	},
+
+	"Lithuania": {
+		"Lithunia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 21.00
+		}
+	},
+
+	"Luxembourg": {
+		"Luxembourg VAT 15%": {
+			"account_name": "VAT 15%",
+			"tax_rate": 15.00,
+			"default": 1
+		},
+		"Luxembourg VAT 3%": {
+			"account_name": "VAT 3%",
+			"tax_rate": 3.00
+		}
+	},
+
+	"Macedonia": {
+		"Macedonia VAT 18%": {
+			"account_name": "VAT",
+			"tax_rate": 18.00,
+			"default": 1
+		},
+		"Macedonia VAT 5%": {
+			"account_name": "VAT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Madagascar": {
+		"Madagascar Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Malawi": {
+		"Malawi Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.50
+		}
+	},
+
+	"Malaysia": {
+		"Malaysia GST 6%": {
+			"account_name": "GST",
+			"tax_rate": 6.00,
+			"default": 1
+		},
+		"Malaysia GST 5%": {
+			"account_name": "GST",
+			"tax_rate": 5.00
+		},
+		"Malaysia GST 10%": {
+			"account_name": "GST",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Mali": {
+		"Mali Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Malta": {
+		"Malta Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Mauritania": {
+		"Mauritania Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Mauritius": {
+		"Mauritius Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Mexico": {
+		"Mexico Tax": {
+			"account_name": "IVA",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Micronesia": {
+		"Micronesia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Moldova": {
+		"Moldova VAT 20%": {
+			"account_name": "VAT 20%",
+			"tax_rate": 20.00,
+			"default": 1
+		},
+		"Moldova VAT 8%": {
+			"account_name": "VAT 8%",
+			"tax_rate": 8.00
+		}
+	},
+
+	"Monaco": {
+		"Monaco Tax 19.6%": {
+			"account_name": "VAT 19.6%",
+			"tax_rate": 19.6,
+			"default": 1
+		},
+		"Monaco Tax 5.5%": {
+			"account_name": "VAT 5,5%",
+			"tax_rate": 5.5
+		}
+	},
+
+	"Mongolia": {
+		"Mongolia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Montenegro": {
+		"Montenegro Tax 17%": {
+			"account_name": "VAT 17%",
+			"tax_rate": 17.00,
+			"default": 1
+		},
+		"Montenegro Tax 7%": {
+			"account_name": "VAT 7%",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Morocco": {
+		"Morroco VAT 20%": {
+			"account_name": "VAT 20%",
+			"tax_rate": 20.00,
+			"default": 1
+		},
+		"Morroco VAT 10%": {
+			"account_name": "VAT 10%",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Mozambique": {
+		"Mozambique Tax": {
+			"account_name": "VAT",
+			"tax_rate": 17.00
+		}
+	},
+
+	"Myanmar": {
+		"Myanamar Tax": {
+			"account_name": "VAT",
+			"tax_rate": 30.00
+		}
+	},
+
+	"Namibia": {
+		"Namibia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Nepal": {
+		"Nepal Tax": {
+			"account_name": "VAT",
+			"tax_rate": 13.00
+		}
+	},
+
+	"Netherlands": {
+		"Netherlands VAT 21%": {
+			"account_name": "VAT 21%",
+			"tax_rate": 21.00,
+			"default": 1
+		},
+		"Netherlands VAT 6%": {
+			"account_name": "VAT 6%",
+			"tax_rate": 6.00
+		}
+	},
+
+	"New Zealand": {
+		"New Zealand": {
+			"account_name": "GST",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Nicaragua": {
+		"Nicaragua Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Nigeria": {
+		"Nigeria Tax": {
+			"account_name": "VAT",
+			"tax_rate": 5
+		}
+	},
+
+	"North Korea": {
+		"North Korea": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Norway": {
+		"Norway VAT 25%": {
+			"account_name": "VAT 25%",
+			"tax_rate": 25.00,
+			"default": 1
+		},
+		"Norway VAT 12%": {
+			"account_name": "VAT 12%",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Pakistan": {
+		"Pakistan Tax": {
+			"account_name": "GST",
+			"tax_rate": 17.00
+		}
+	},
+
+	"Panama": {
+		"Panama Tax": {
+			"account_name": "VAT",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Papua New Guinea": {
+		"Papua New Guinea Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Paraguay": {
+		"Paraguay Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Peru": {
+		"Peru Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Philippines": {
+		"Philippines Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Poland": {
+		"Poland VAT 23%": {
+			"account_name": "VAT 23%",
+			"tax_rate": 23.00,
+			"default": 1
+		},
+		"Poland VAT 7%": {
+			"account_name": "VAT 7%",
+			"tax_rate": 7
+		}
+	},
+
+	"Portugal": {
+		"Portugal Tax": {
+			"account_name": "VAT",
+			"tax_rate": 23.00
+		}
+	},
+
+	"Republic Of The Congo": {
+		"Congo Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Romania": {
+		"Romania Tax": {
+			"account_name": "VAT",
+			"tax_rate": 24.00
+		}
+	},
+
+	"Russia": {
+		"Russia VAT 18%": {
+			"account_name": "VAT 18%",
+			"tax_rate": 18.00,
+			"default": 1
+		},
+		"Russia VAT 10%": {
+			"account_name": "VAT 10%",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Rwanda": {
+		"Rwanda Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Senegal": {
+		"Senegal Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Serbia": {
+		"Serbia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Seychelles": {
+		"Seychelles Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Sierra Leone": {
+		"Sierra Leone Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Singapore": {
+		"Singapore Tax": {
+			"account_name": "GST",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Slovakia": {
+		"Slovakia VAT 20%": {
+			"account_name": "VAT 20%",
+			"tax_rate": 20.00,
+			"default": 1
+		},
+		"Slovakia VAT 10%": {
+			"account_name": "VAT 10%",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Slovenia": {
+		"Slovenia VAT 22%": {
+			"account_name": "VAT 22%",
+			"tax_rate": 22.00,
+			"default": 1
+		},
+		"Slovenia VAT 8.5%": {
+			"account_name": "VAT 8.5%",
+			"tax_rate": 8.50
+		}
+	},
+
+	"Solomon Islands": {
+		"Solomon Islands Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Somalia": {
+		"Somalia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"South Africa": {
+		"South Africa Tax": {
+			"account_name": "VAT",
+			"tax_rate": 14.00
+		}
+	},
+
+	"South Korea": {
+		"South Korea Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Spain": {
+		"Spain Tax": {
+			"account_name": "VAT",
+			"tax_rate": 21.00
+		}
+	},
+
+	"Sri Lanka": {
+		"Sri Lanka Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"St Lucia": {
+		"St Lucia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Sudan": {
+		"Sudan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Suriname": {
+		"Suriname Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Swaziland": {
+		"Swaziland tax": {
+			"account_name": "VAT",
+			"tax_rate": 14.00
+		}
+	},
+
+	"Sweden": {
+		"Sweden Tax": {
+			"account_name": "VAT",
+			"tax_rate": 25.00
+		}
+	},
+
+	"Switzerland": {
+		"Switzerland VAT 8%": {
+			"account_name": "VAT 8%",
+			"tax_rate": 8.00,
+			"default": 1
+		},
+		"Switzerland VAT 2.4%": {
+			"account_name": "VAT 2.4%",
+			"tax_rate": 2.40
+		}
+	},
+
+	"Taiwan": {
+		"Taiwan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Tajikistan": {
+		"Tajikistan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20
+		}
+	},
+
+	"Tanzania": {
+		"Tanzania Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Thailand": {
+		"Thailand Tax": {
+			"account_name": "VAT",
+			"tax_rate": 7.00
+		}
+	},
+
+	"Togo": {
+		"Togo Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Tonga": {
+		"Tonga Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Trinidad And Tobago": {
+		"Trinidad & Tobago Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	},
+
+	"Tunisia": {
+		"Tunisia VAT 18%": {
+			"account_name": "VAT 18%",
+			"tax_rate": 18.00,
+			"default": 1
+		},
+		"Tunisia VAT 12%": {
+			"account_name": "VAT 12%",
+			"tax_rate": 12.00
+		},
+		"Tunisia VAT 6%": {
+			"account_name": "VAT 6%",
+			"tax_rate": 6.00
+		}
+	},
+
+	"Turkey": {
+		"Turkey Tax": {
+			"account_name": "VAT 18%",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Turkmenistan": {
+		"Turkmenistan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Uganda": {
+		"Uganda Tax": {
+			"account_name": "VAT",
+			"tax_rate": 18.00
+		}
+	},
+
+	"Ukraine": {
+		"Ukraine Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"United Kingdom": {
+		"United Kingdom Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"United States": {
+		"US ST 6%": {
+			"account_name": "ST 6%",
+			"tax_rate": 6.00,
+			"default": 1
+		},
+		"US ST 4%": {
+			"account_name": "ST 4%",
+			"tax_rate": 4.00
+		},
+		"US ST 6.25%": {
+			"account_name": "ST 6.25%",
+			"tax_rate": 6.25
+		}
+	},
+
+	"Uruguay": {
+		"Uruguay Tax": {
+			"account_name": "VAT",
+			"tax_rate": 22.00
+		}
+	},
+
+	"Uzbekistan": {
+		"Uzbekistan Tax": {
+			"account_name": "VAT",
+			"tax_rate": 20.00
+		}
+	},
+
+	"Vanuatu": {
+		"Vanuatu Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.50
+		}
+	},
+
+	"Venezuela": {
+		"Venezuela Tax": {
+			"account_name": "VAT",
+			"tax_rate": 12.00
+		}
+	},
+
+	"Vietnam": {
+		"Vietnam Tax": {
+			"account_name": "VAT",
+			"tax_rate": 10.00
+		}
+	},
+
+	"Yemen": {
+		"Yemen Tax": {
+			"account_name": "VAT",
+			"tax_rate": 5.00
+		}
+	},
+
+	"Zambia": {
+		"Zambia Tax": {
+			"account_name": "VAT",
+			"tax_rate": 16.00
+		}
+	},
+
+	"Zimbabwe": {
+		"Zimbabwe Tax": {
+			"account_name": "VAT",
+			"tax_rate": 15.00
+		}
+	}
+}
\ No newline at end of file
diff --git a/erpnext/setup/setup_wizard/setup_wizard.py b/erpnext/setup/setup_wizard/setup_wizard.py
index 945dfb1..2c0c85c 100644
--- a/erpnext/setup/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/setup_wizard/setup_wizard.py
@@ -4,6 +4,8 @@
 from __future__ import unicode_literals
 import frappe, copy
 
+import os
+import json
 from frappe.utils import cstr, flt, getdate
 from frappe import _
 from frappe.utils.file_manager import save_file
@@ -15,57 +17,107 @@
 from erpnext.setup.setup_wizard.domainify import setup_domain
 
 def setup_complete(args=None):
-    if frappe.db.sql("select name from tabCompany"):
-        frappe.throw(_("Setup Already Complete!!"))
+	if frappe.db.sql("select name from tabCompany"):
+		frappe.throw(_("Setup Already Complete!!"))
 
-    install_fixtures.install(args.get("country"))
+	install_fixtures.install(args.get("country"))
 
-    create_price_lists(args)
-    create_fiscal_year_and_company(args)
-    create_users(args)
-    set_defaults(args)
-    create_territories()
-    create_feed_and_todo()
-    create_email_digest()
-    create_letter_head(args)
-    create_taxes(args)
-    create_items(args)
-    create_customers(args)
-    create_suppliers(args)
+	create_price_lists(args)
+	create_fiscal_year_and_company(args)
+	create_sales_tax(args)
+	create_users(args)
+	set_defaults(args)
+	create_territories()
+	create_feed_and_todo()
+	create_email_digest()
+	create_letter_head(args)
+	create_taxes(args)
+	create_items(args)
+	create_customers(args)
+	create_suppliers(args)
 
-    if args.domain.lower() == 'education':
-        create_academic_year()
-        create_academic_term()
-        create_program(args)
-        create_course(args)
-        create_instructor(args)
-        create_room(args)
+	if args.domain.lower() == 'education':
+		create_academic_year()
+		create_academic_term()
+		create_program(args)
+		create_course(args)
+		create_instructor(args)
+		create_room(args)
 
-    if args.get('setup_website'):
-        website_maker(args)
+	if args.get('setup_website'):
+		website_maker(args)
 
-    create_logo(args)
+	create_logo(args)
 
-    frappe.local.message_log = []
-    setup_domain(args.get('domain'))
+	frappe.local.message_log = []
+	setup_domain(args.get('domain'))
 
-    frappe.db.commit()
-    login_as_first_user(args)
+	frappe.db.commit()
+	login_as_first_user(args)
 
-    frappe.db.commit()
-    frappe.clear_cache()
+	frappe.db.commit()
+	frappe.clear_cache()
 
-    if args.get("add_sample_data"):
-        try:
-            make_sample_data()
-            frappe.clear_cache()
-        except:
-            # clear message
-            if frappe.message_log:
-                frappe.message_log.pop()
+	if args.get("add_sample_data"):
+		try:
+			make_sample_data()
+			frappe.clear_cache()
+		except:
+			# clear message
+			if frappe.message_log:
+				frappe.message_log.pop()
 
-            pass
+			pass
 
+def create_sales_tax(args):
+	country_wise_tax = get_country_wise_tax(args.get("country"))
+	if len(country_wise_tax)>0:
+		for sales_tax, tax_data in country_wise_tax.items():
+			account = create_account(tax_data, args)
+			if account:
+				create_sales_template(sales_tax, account, args)
+
+def create_account(tax_data, args):
+	try:
+		account = frappe.get_doc({
+			"doctype": "Account",
+			"is_group": 0,
+			"root_type": "Liability",
+			"company": args.get("company_name"),
+			"parent_account": "Duties and Taxes - %s"%(args.get('company_abbr')),
+			"account_name": tax_data.get('account_name'),
+			"account_type": "Tax",
+			"tax_rate": tax_data.get('tax_rate'),
+			"currency": args.get('currency')
+		}).insert(ignore_permissions=True)
+
+		return account.name
+	except:
+		return None
+
+def create_sales_template(sales_tax, account, args):
+	sales_tax_template = frappe.get_doc({
+		"doctype": "Sales Taxes and Charges Template",
+		"title": sales_tax,
+		"company": args.get("company_name"),
+		"taxes": [{
+			"doctype": "Sales Taxes and Charges",
+			"charge_type": "On Net Total",
+			"account_head": account,
+			"description": sales_tax.split("-")[0]
+		}]
+	}).insert(ignore_permissions=True)
+
+	sales_tax_template.set_missing_values()
+	sales_tax_template.save()
+
+def get_country_wise_tax(country):
+	data = {}
+	with open (os.path.join(os.path.dirname(__file__), "data", "country_wise_tax.json")) as countrywise_tax:
+		data = json.load(countrywise_tax).get(country)
+
+	return data
+ 
 def create_fiscal_year_and_company(args):
     if (args.get('fy_start_date')):
         curr_fiscal_year = get_fy_details(args.get('fy_start_date'), args.get('fy_end_date'))
