diff --git a/erpnext/regional/india/setup.py b/erpnext/regional/india/setup.py
index 95fc680..8ccbc54 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -15,6 +15,7 @@
 	setup_company_independent_fixtures(patch=patch)
 	if not patch:
 		make_fixtures(company)
+		setup_gst_settings(company)
 
 # TODO: for all countries
 def setup_company_independent_fixtures(patch=False):
@@ -699,6 +700,57 @@
 	# create records for Tax Withholding Category
 	set_tax_withholding_category(company)
 
+def setup_gst_settings(company):
+	# Will only add default GST accounts if present
+	input_account_names = ['Input Tax CGST', 'Input Tax SGST', 'Input Tax IGST']
+	output_account_names = ['Output Tax CGST', 'Output Tax SGST', 'Output Tax IGST']
+	gst_settings = frappe.get_single('GST Settings')
+	existing_account_list = []
+
+	for account in gst_settings.get('gst_accounts'):
+		for key in ['cgst_account', 'sgst_account', 'igst_account']:
+			existing_account_list.append(account.get(key))
+
+	gst_accounts = frappe._dict(frappe.get_all("Account",
+		{'company': company, 'name': ('like', "%GST%")}, ['account_name', 'name'], as_list=1))
+
+	all_input_account_exists = 0
+	all_output_account_exists = 0
+
+	for account in input_account_names:
+		if not gst_accounts.get(account):
+			all_input_account_exists = 1
+
+		# Check if already added in GST Settings
+		if gst_accounts.get(account) in existing_account_list:
+			all_input_account_exists = 1
+
+	for account in output_account_names:
+		if not gst_accounts.get(account):
+			all_output_account_exists = 1
+
+		# Check if already added in GST Settings
+		if gst_accounts.get(account) in existing_account_list:
+			all_output_account_exists = 1
+
+	if not all_input_account_exists:
+		gst_settings.append('gst_accounts', {
+			'company': company,
+			'cgst_account': gst_accounts.get(input_account_names[0]),
+			'sgst_account': gst_accounts.get(input_account_names[1]),
+			'igst_account': gst_accounts.get(input_account_names[2])
+		})
+
+	if not all_output_account_exists:
+		gst_settings.append('gst_accounts', {
+			'company': company,
+			'cgst_account': gst_accounts.get(output_account_names[0]),
+			'sgst_account': gst_accounts.get(output_account_names[1]),
+			'igst_account': gst_accounts.get(output_account_names[2])
+		})
+
+	gst_settings.save()
+
 def set_salary_components(docs):
 	docs.extend([
 		{'doctype': 'Salary Component', 'salary_component': 'Professional Tax',
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index d112e8e..36a7d20 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -448,7 +448,7 @@
 			frappe.get_attr(module_name)(company, False)
 		except Exception as e:
 			frappe.log_error()
-			frappe.throw(_("Failed to setup defaults for country {0}. Please contact support@erpnext.com").format(frappe.bold(company_doc.country)))
+			frappe.throw(_("Failed to setup defaults for country {0}. Please contact support@erpnext.com").format(frappe.bold(country)))
 
 
 def update_company_current_month_sales(company):
