diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 2a871f0..30f51c9 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -210,7 +210,7 @@
 		"on_trash": "erpnext.regional.check_deletion_permission"
 	},
 	'Address': {
-		'validate': 'erpnext.regional.india.utils.validate_gstin_for_india'
+		'validate': ['erpnext.regional.india.utils.validate_gstin_for_india', 'erpnext.regional.italy.utils.validate_address']
 	},
 	('Sales Invoice', 'Purchase Invoice', 'Delivery Note'): {
 		'validate': 'erpnext.regional.india.utils.set_place_of_supply'
diff --git a/erpnext/patches/v11_0/make_italian_localization_fields.py b/erpnext/patches/v11_0/make_italian_localization_fields.py
index b0b5ef1..cb65f23 100644
--- a/erpnext/patches/v11_0/make_italian_localization_fields.py
+++ b/erpnext/patches/v11_0/make_italian_localization_fields.py
@@ -3,12 +3,26 @@
 
 from __future__ import unicode_literals
 from erpnext.regional.italy.setup import make_custom_fields, setup_report
+from erpnext.regional.italy import state_codes
 import frappe
 
+
 def execute():
+
     company = frappe.get_all('Company', filters = {'country': 'Italy'})
     if not company:
       return
 
     make_custom_fields()
     setup_report()
+
+    # Set state codes
+    condition = ""
+    for state, code in state_codes.items():
+      condition += " when '{0}' then '{1}'".format(frappe.db.escape(state), frappe.db.escape(code))
+
+    if condition:
+      frappe.db.sql("""
+        UPDATE tabAddress set state_code = (case state {condition} end)
+        WHERE country in ('Italy', 'Italia', 'Italian Republic', 'Repubblica Italiana')
+      """.format(condition=condition))
diff --git a/erpnext/regional/italy/__init__.py b/erpnext/regional/italy/__init__.py
index 22bf84e..ef1d582 100644
--- a/erpnext/regional/italy/__init__.py
+++ b/erpnext/regional/italy/__init__.py
@@ -61,3 +61,19 @@
     "D-Differita",
     "S-Scissione dei Pagamenti"
 ]
+
+state_codes = {'Siracusa': 'SR', 'Bologna': 'BO', 'Grosseto': 'GR', 'Caserta': 'CE', 'Alessandria': 'AL', 'Ancona': 'AN', 'Pavia': 'PV',
+ 'Benevento or Beneventum': 'BN', 'Modena': 'MO', 'Lodi': 'LO', 'Novara': 'NO', 'Avellino': 'AV', 'Verona': 'VR', 'Forli-Cesena': 'FC',
+ 'Caltanissetta': 'CL', 'Brescia': 'BS', 'Rieti': 'RI', 'Treviso': 'TV', 'Ogliastra': 'OG', 'Olbia-Tempio': 'OT', 'Bergamo': 'BG',
+ 'Napoli': 'NA', 'Campobasso': 'CB', 'Fermo': 'FM', 'Roma': 'RM', 'Lucca': 'LU', 'Rovigo': 'RO', 'Piacenza': 'PC', 'Monza and Brianza': 'MB',
+ 'La Spezia': 'SP', 'Pescara': 'PE', 'Vercelli': 'VC', 'Enna': 'EN', 'Nuoro': 'NU', 'Medio Campidano': 'MD', 'Trieste': 'TS', 'Aosta': 'AO',
+ 'Firenze': 'FI', 'Trapani': 'TP', 'Messina': 'ME', 'Teramo': 'TE', 'Udine': 'UD', 'Verbano-Cusio-Ossola': 'VB', 'Padua': 'PD',
+ 'Reggio Emilia': 'RE', 'Frosinone': 'FR', 'Taranto': 'TA', 'Catanzaro': 'CZ', 'Belluno': 'BL', 'Pordenone': 'PN', 'Viterbo': 'VT',
+ 'Gorizia': 'GO', 'Vatican City': 'SCV', 'Ferrara': 'FE', 'Chieti': 'CH', 'Crotone': 'KR', 'Foggia': 'FG', 'Perugia': 'PG', 'Bari': 'BA',
+ 'Massa-Carrara': 'MS', 'Pisa': 'PI', 'Latina': 'LT', 'Salerno': 'SA', 'Turin': 'TO', 'Lecco': 'LC', 'Lecce': 'LE', 'Pistoia': 'PT', 'Como': 'CO',
+ 'Barletta-Andria-Trani': 'BT', 'Mantua': 'MN', 'Ragusa': 'RG', 'Macerata': 'MC', 'Imperia': 'IM', 'Palermo': 'PA', 'Matera': 'MT', "L'Aquila": 'AQ',
+ 'Milano': 'MI', 'Catania': 'CT', 'Pesaro e Urbino': 'PU', 'Potenza': 'PZ', 'Republic of San Marino': 'RSM', 'Genoa': 'GE', 'Brindisi': 'BR',
+ 'Cagliari': 'CA', 'Siena': 'SI', 'Vibo Valentia': 'VV', 'Reggio Calabria': 'RC', 'Ascoli Piceno': 'AP', 'Carbonia-Iglesias': 'CI', 'Oristano': 'OR',
+ 'Asti': 'AT', 'Ravenna': 'RA', 'Vicenza': 'VI', 'Savona': 'SV', 'Biella': 'BI', 'Rimini': 'RN', 'Agrigento': 'AG', 'Prato': 'PO', 'Cuneo': 'CN',
+ 'Cosenza': 'CS', 'Livorno or Leghorn': 'LI', 'Sondrio': 'SO', 'Cremona': 'CR', 'Isernia': 'IS', 'Trento': 'TN', 'Terni': 'TR', 'Bolzano/Bozen': 'BZ',
+ 'Parma': 'PR', 'Varese': 'VA', 'Venezia': 'VE', 'Sassari': 'SS', 'Arezzo': 'AR'}
\ No newline at end of file
diff --git a/erpnext/regional/italy/e-invoice.xml b/erpnext/regional/italy/e-invoice.xml
index 1c416ee..34053bd 100644
--- a/erpnext/regional/italy/e-invoice.xml
+++ b/erpnext/regional/italy/e-invoice.xml
@@ -6,8 +6,8 @@
 <Indirizzo>{{ address.address_line1 }}</Indirizzo>
 <CAP>{{ address.pincode }}</CAP>
 <Comune>{{ address.city }}</Comune>
-{%- if address.state %}
-<Provincia>{{ address.state }}</Provincia>
+{%- if address.state_code %}
+<Provincia>{{ address.state_code }}</Provincia>
 {%- endif %}
 <Nazione>{{ address.country_code|upper }}</Nazione>
 {%- endmacro %}
diff --git a/erpnext/regional/italy/setup.py b/erpnext/regional/italy/setup.py
index b4ab26f..3e9d7a2 100644
--- a/erpnext/regional/italy/setup.py
+++ b/erpnext/regional/italy/setup.py
@@ -133,7 +133,9 @@
         'Address': [
             dict(fieldname='country_code', label='Country Code',
 			    fieldtype='Data', insert_after='country', print_hide=1, read_only=1,
-                fetch_from="country.code")
+                fetch_from="country.code"),
+            dict(fieldname='state_code', label='State Code',
+			    fieldtype='Data', insert_after='state', print_hide=1)
         ]
     }
 
diff --git a/erpnext/regional/italy/utils.py b/erpnext/regional/italy/utils.py
index 85f7447..c2dc24d 100644
--- a/erpnext/regional/italy/utils.py
+++ b/erpnext/regional/italy/utils.py
@@ -6,6 +6,7 @@
 from frappe import _
 from frappe.utils.file_manager import save_file, remove_file
 from frappe.desk.form.load import get_attachments
+from erpnext.regional.italy import state_codes
 
 
 def update_itemised_tax_data(doc):
@@ -282,4 +283,11 @@
 	progressive_name = frappe.model.naming.make_autoname(company_tax_id + "_.#####")
 	progressive_number = progressive_name.split("_")[1]
 
-	return progressive_name, progressive_number
\ No newline at end of file
+	return progressive_name, progressive_number
+
+def validate_address(doc, method):
+	if not (hasattr(doc, "state_code") and doc.country in ["Italy", "Italia", "Italian Republic", "Repubblica Italiana"]):
+		return
+
+	state_codes_lower = {key.lower():value for key,value in state_codes.items()}
+	doc.state_code = state_codes_lower.get(doc.get('state','').lower())
