added address template:
diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 66b44e2..8db9ef2 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -32,6 +32,11 @@
 				},
 				{
 					"type": "doctype",
+					"name": "Address Template",
+					"description": _("Country wise default Address Templates")
+				},
+				{
+					"type": "doctype",
 					"name": "Terms and Conditions",
 					"description": _("Standard contract terms for Sales or Purchase.")
 				},
diff --git a/erpnext/setup/page/setup_wizard/install_fixtures.py b/erpnext/setup/page/setup_wizard/install_fixtures.py
index 90ef1f4..4bdf15e 100644
--- a/erpnext/setup/page/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/page/setup_wizard/install_fixtures.py
@@ -10,6 +10,9 @@
 def install(country=None):
 	records = [
 
+		# address template
+		{'doctype':"Address Template", "country": country},
+
 		# item group
 		{'doctype': 'Item Group', 'item_group_name': _('All Item Groups'),
 			'is_group': 'Yes', 'parent_item_group': ''},
@@ -189,7 +192,8 @@
 
 	from frappe.modules import scrub
 	for r in records:
-		doc = frappe.get_doc(r)
+		doc = frappe.new_doc(r.get("doctype"))
+		doc.update(r)
 
 		# ignore mandatory for root
 		parent_link_field = ("parent_" + scrub(doc.doctype))
diff --git a/erpnext/utilities/doctype/address/address.py b/erpnext/utilities/doctype/address/address.py
index b00b40d..01b9d9a 100644
--- a/erpnext/utilities/doctype/address/address.py
+++ b/erpnext/utilities/doctype/address/address.py
@@ -10,7 +10,6 @@
 from frappe.model.document import Document
 
 class Address(Document):
-
 	def autoname(self):
 		if not self.address_title:
 			self.address_title = self.customer \
@@ -56,22 +55,16 @@
 	if not isinstance(address_dict, dict):
 		address_dict = frappe.db.get_value("Address", address_dict, "*", as_dict=True) or {}
 
-	meta = frappe.get_meta("Address")
-	sequence = (("", "address_line1"),
-		("\n", "address_line2"),
-		("\n", "city"),
-		("\n", "state"),
-		("\n" + meta.get_label("pincode") + ": ", "pincode"),
-		("\n", "country"),
-		("\n" + meta.get_label("phone") + ": ", "phone"),
-		("\n" + meta.get_label("fax") + ": ", "fax"))
+	template = frappe.db.get_value("Address Template", \
+		{"country": address_dict.get("country")}, "template")
+	if not template:
+		template = frappe.db.get_value("Address Template", \
+			{"is_default": 1}, "template")
 
-	display = ""
-	for separator, fieldname in sequence:
-		if address_dict.get(fieldname):
-			display += separator + address_dict.get(fieldname)
+	if not template:
+		frappe.throw(_("No default Address Template found. Please create a new one"))
 
-	return display.strip()
+	return frappe.render_template(template, address_dict)
 
 def get_territory_from_address(address):
 	"""Tries to match city, state and country of address to existing territory"""
@@ -88,3 +81,6 @@
 			break
 
 	return territory
+
+
+
diff --git a/erpnext/utilities/doctype/address/test_address.py b/erpnext/utilities/doctype/address/test_address.py
index 815449a..1e36a44 100644
--- a/erpnext/utilities/doctype/address/test_address.py
+++ b/erpnext/utilities/doctype/address/test_address.py
@@ -1,6 +1,18 @@
 # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 # License: GNU General Public License v3. See license.txt
 
+from __future__ import unicode_literals
 
 import frappe
-test_records = frappe.get_test_records('Address')
\ No newline at end of file
+test_records = frappe.get_test_records('Address')
+
+import unittest
+import frappe
+
+from erpnext.utilities.doctype.address.address import get_address_display
+
+class TestAddress(unittest.TestCase):
+	def test_template_works(self):
+		address = frappe.get_list("Address")[0].name
+		display = get_address_display(frappe.get_doc("Address", address).as_dict())
+		self.assertTrue(display)
diff --git a/erpnext/utilities/doctype/address_template/__init__.py b/erpnext/utilities/doctype/address_template/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/utilities/doctype/address_template/__init__.py
diff --git a/erpnext/utilities/doctype/address_template/address_template.json b/erpnext/utilities/doctype/address_template/address_template.json
new file mode 100644
index 0000000..f08660b
--- /dev/null
+++ b/erpnext/utilities/doctype/address_template/address_template.json
@@ -0,0 +1,57 @@
+{
+ "autoname": "field:country", 
+ "creation": "2014-06-05 02:22:36.029850", 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "Master", 
+ "fields": [
+  {
+   "fieldname": "country", 
+   "fieldtype": "Link", 
+   "in_list_view": 1, 
+   "label": "Country", 
+   "options": "Country", 
+   "permlevel": 0, 
+   "reqd": 0, 
+   "search_index": 1
+  }, 
+  {
+   "description": "This format is used if country specific format is not found", 
+   "fieldname": "is_default", 
+   "fieldtype": "Check", 
+   "in_list_view": 1, 
+   "label": "Is Default", 
+   "permlevel": 0
+  }, 
+  {
+   "default": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif -%}\n{% if pincode %} PIN / ZIP:  {{ pincode }}<br>{% endif -%}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif -%}\n{% if fax %}Fax: {{ fax }}<br>{% endif -%}\n{% if email_id %}Email: {{ email_id }}<br>{% endif -%}\n", 
+   "description": "<h4>Default Template</h4>\n<p>Uses <a href=\"http://jinja.pocoo.org/docs/templates/\">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p>\n<pre><code>{{ address_title }}&lt;br&gt;\n{{ address_line1 }}&lt;br&gt;\n{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}\n{{ city }}&lt;br&gt;\n{% if state %}{{ state }}&lt;br&gt;{% endif -%}\n{% if pincode %} PIN / ZIP:  {{ pincode }}&lt;br&gt;{% endif -%}\n{{ country }}&lt;br&gt;\n{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}\n{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}\n{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}\n</code></pre>", 
+   "fieldname": "template", 
+   "fieldtype": "Code", 
+   "label": "Template", 
+   "permlevel": 0
+  }
+ ], 
+ "icon": "icon-map-marker", 
+ "modified": "2014-06-05 03:28:45.428733", 
+ "modified_by": "Administrator", 
+ "module": "Utilities", 
+ "name": "Address Template", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "create": 1, 
+   "delete": 1, 
+   "export": 1, 
+   "permlevel": 0, 
+   "read": 1, 
+   "report": 1, 
+   "role": "System Manager", 
+   "set_user_permissions": 1, 
+   "write": 1
+  }
+ ], 
+ "sort_field": "modified", 
+ "sort_order": "DESC"
+}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/address_template/address_template.py b/erpnext/utilities/doctype/address_template/address_template.py
new file mode 100644
index 0000000..bf68d82
--- /dev/null
+++ b/erpnext/utilities/doctype/address_template/address_template.py
@@ -0,0 +1,19 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class AddressTemplate(Document):
+	def validate(self):
+		defaults = frappe.db.get_values("Address Template",
+			{"is_default":1, "name":("!=", self.name)})
+		if not self.is_default:
+			if not defaults:
+				self.is_default = 1
+				frappe.msgprint(frappe._("Setting this Address Template as default as there is no other default"))
+		else:
+			if defaults:
+				for d in defaults:
+					frappe.db.set_value("Address Template", d, "is_default", 0)
diff --git a/erpnext/utilities/doctype/address_template/test_address_template.py b/erpnext/utilities/doctype/address_template/test_address_template.py
new file mode 100644
index 0000000..953c852
--- /dev/null
+++ b/erpnext/utilities/doctype/address_template/test_address_template.py
@@ -0,0 +1,22 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: See license.txt
+
+from __future__ import unicode_literals
+
+import frappe
+test_records = frappe.get_test_records('Address Template')
+
+import unittest
+import frappe
+
+class TestAddressTemplate(unittest.TestCase):
+	def test_default_is_unset(self):
+		a = frappe.get_doc("Address Template", "India")
+		a.is_default = 1
+		a.save()
+
+		b = frappe.get_doc("Address Template", "Brazil")
+		b.is_default = 1
+		b.save()
+
+		self.assertEqual(frappe.db.get_value("Address Template", "India", "is_default"), 0)
diff --git a/erpnext/utilities/doctype/address_template/test_records.json b/erpnext/utilities/doctype/address_template/test_records.json
new file mode 100644
index 0000000..412c9e7
--- /dev/null
+++ b/erpnext/utilities/doctype/address_template/test_records.json
@@ -0,0 +1,13 @@
+[
+ {
+  "country": "India",
+  "is_default": 1,
+  "template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP:  {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n"
+ },
+ {
+  "country": "Brazil",
+  "is_default": 0,
+  "template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP:  {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n"
+ }
+]
+