diff --git a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
index b9be9c0..2f39dc5 100644
--- a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
+++ b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_methods.py
@@ -4,10 +4,7 @@
 
 from __future__ import unicode_literals
 import frappe, time, dateutil, math, csv
-try:
-    from StringIO import StringIO
-except ImportError:
-    from io import StringIO
+from six import StringIO
 import erpnext.erpnext_integrations.doctype.amazon_mws_settings.amazon_mws_api as mws
 from frappe import _
 
@@ -26,7 +23,7 @@
 			listings_response = reports.get_report(report_id=report_id)
 
 			#Get ASIN Codes
-			string_io = StringIO(listings_response.original)
+			string_io = StringIO(frappe.safe_decode(listings_response.original))
 			csv_rows = list(csv.reader(string_io, delimiter=str('\t')))
 			asin_list = list(set([row[1] for row in csv_rows[1:]]))
 			#break into chunks of 10
@@ -294,7 +291,8 @@
 			so.submit()
 
 		except Exception as e:
-			frappe.log_error(message=e, title="Create Sales Order")
+			import traceback
+			frappe.log_error(message=traceback.format_exc(), title="Create Sales Order")
 
 def create_customer(order_json):
 	order_customer_name = ""
@@ -451,7 +449,7 @@
 			shipment_item_list = return_as_list(shipment_event.ShipmentEvent.ShipmentItemList.ShipmentItem)
 
 			for shipment_item in shipment_item_list:
-				charges, fees = []
+				charges, fees = [], []
 
 				if 'ItemChargeList' in shipment_item.keys():
 					charges = return_as_list(shipment_item.ItemChargeList.ChargeComponent)
diff --git a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
index 68c2b9c..9925dc4 100755
--- a/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
+++ b/erpnext/erpnext_integrations/doctype/amazon_mws_settings/amazon_mws_api.py
@@ -65,7 +65,8 @@
 	"""
 	md = hashlib.md5()
 	md.update(string)
-	return base64.encodestring(md.digest()).strip('\n')
+	return base64.encodestring(md.digest()).strip('\n') if six.PY2 \
+		else base64.encodebytes(md.digest()).decode().strip()
 
 def remove_empty(d):
 	"""
@@ -87,8 +88,7 @@
 		self.original = xml
 		self._rootkey = rootkey
 		self._mydict = xml_utils.xml2dict().fromstring(remove_namespace(xml))
-		self._response_dict = self._mydict.get(self._mydict.keys()[0],
-												self._mydict)
+		self._response_dict = self._mydict.get(list(self._mydict)[0], self._mydict)
 
 	@property
 	def parsed(self):
