diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index a4bac35..f925bcf 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -903,42 +903,43 @@
 	def allocate_advance_taxes(self, gl_entries):
 		tax_map = self.get_tax_map()
 		for pe in self.get('advances'):
-			pe = frappe.get_doc('Payment Entry', pe.reference_name)
-			for tax in pe.get('taxes'):
-				account_currency = get_account_currency(tax.account_head)
-				dr_or_cr = "credit" if tax.add_deduct_tax == "Add" else "debit"
-				rev_dr_cr = "debit" if tax.add_deduct_tax == "Add" else "credit"
+			if pe.reference_type == 'Payment Entry':
+				pe = frappe.get_doc('Payment Entry', pe.reference_name)
+				for tax in pe.get('taxes'):
+					account_currency = get_account_currency(tax.account_head)
+					dr_or_cr = "credit" if tax.add_deduct_tax == "Add" else "debit"
+					rev_dr_cr = "debit" if tax.add_deduct_tax == "Add" else "credit"
 
-				unallocated_amount = tax.tax_amount - tax.allocated_amount
-				if tax_map.get(tax.account_head):
-					amount = tax_map.get(tax.account_head)
-					if amount < unallocated_amount:
-						unallocated_amount = amount
+					unallocated_amount = tax.tax_amount - tax.allocated_amount
+					if tax_map.get(tax.account_head):
+						amount = tax_map.get(tax.account_head)
+						if amount < unallocated_amount:
+							unallocated_amount = amount
 
-					gl_entries.append(
-						self.get_gl_dict({
-							"account": tax.account_head,
-							"against": self.supplier,
-							dr_or_cr: unallocated_amount,
-							dr_or_cr + "_in_account_currency": unallocated_amount
-							if account_currency==self.company_currency
-							else unallocated_amount,
-							'cost_center': tax.cost_center
-						}, account_currency, item=tax))
+						gl_entries.append(
+							self.get_gl_dict({
+								"account": tax.account_head,
+								"against": self.supplier,
+								dr_or_cr: unallocated_amount,
+								dr_or_cr + "_in_account_currency": unallocated_amount
+								if account_currency==self.company_currency
+								else unallocated_amount,
+								'cost_center': tax.cost_center
+							}, account_currency, item=tax))
 
-					gl_entries.append(
-						self.get_gl_dict({
-							"account": pe.advance_tax_account,
-							"against": self.supplier,
-							rev_dr_cr: unallocated_amount,
-							rev_dr_cr + "_in_account_currency": unallocated_amount
-							if account_currency==self.company_currency
-							else unallocated_amount,
-							'cost_center': tax.cost_center or self.cost_center
-						}, account_currency, item=tax))
+						gl_entries.append(
+							self.get_gl_dict({
+								"account": pe.advance_tax_account,
+								"against": self.supplier,
+								rev_dr_cr: unallocated_amount,
+								rev_dr_cr + "_in_account_currency": unallocated_amount
+								if account_currency==self.company_currency
+								else unallocated_amount,
+								'cost_center': tax.cost_center or self.cost_center
+							}, account_currency, item=tax))
 
-					frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount + unallocated_amount)
-					tax_map[tax.account_head] -= unallocated_amount
+						frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount + unallocated_amount)
+						tax_map[tax.account_head] -= unallocated_amount
 
 	def make_payment_gl_entries(self, gl_entries):
 		# Make Cash GL Entries
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 9a596f2..664b3ab 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -916,42 +916,43 @@
 	def allocate_advance_taxes(self, gl_entries):
 		tax_map = self.get_tax_map()
 		for pe in self.get('advances'):
-			pe = frappe.get_doc('Payment Entry', pe.reference_name)
-			for tax in pe.get('taxes'):
-				account_currency = get_account_currency(tax.account_head)
-				dr_or_cr = "debit" if tax.add_deduct_tax == "Add" else "credit"
-				rev_dr_cr = "credit" if tax.add_deduct_tax == "Add" else "debit"
+			if pe.reference_type == 'Payment Entry':
+				pe = frappe.get_doc('Payment Entry', pe.reference_name)
+				for tax in pe.get('taxes'):
+					account_currency = get_account_currency(tax.account_head)
+					dr_or_cr = "debit" if tax.add_deduct_tax == "Add" else "credit"
+					rev_dr_cr = "credit" if tax.add_deduct_tax == "Add" else "debit"
 
-				unallocated_amount = tax.tax_amount - tax.allocated_amount
-				if tax_map.get(tax.account_head):
-					amount = tax_map.get(tax.account_head)
-					if amount < unallocated_amount:
-						unallocated_amount = amount
+					unallocated_amount = tax.tax_amount - tax.allocated_amount
+					if tax_map.get(tax.account_head):
+						amount = tax_map.get(tax.account_head)
+						if amount < unallocated_amount:
+							unallocated_amount = amount
 
-					gl_entries.append(
-						self.get_gl_dict({
-							"account": tax.account_head,
-							"against": self.customer,
-							dr_or_cr: unallocated_amount,
-							dr_or_cr + "_in_account_currency": unallocated_amount
-							if account_currency==self.company_currency
-							else unallocated_amount,
-							'cost_center': tax.cost_center
-						}, account_currency, item=tax))
+						gl_entries.append(
+							self.get_gl_dict({
+								"account": tax.account_head,
+								"against": self.customer,
+								dr_or_cr: unallocated_amount,
+								dr_or_cr + "_in_account_currency": unallocated_amount
+								if account_currency==self.company_currency
+								else unallocated_amount,
+								'cost_center': tax.cost_center
+							}, account_currency, item=tax))
 
-					gl_entries.append(
-						self.get_gl_dict({
-							"account": pe.advance_tax_account,
-							"against": self.customer,
-							rev_dr_cr: unallocated_amount,
-							rev_dr_cr + "_in_account_currency": unallocated_amount
-							if account_currency==self.company_currency
-							else unallocated_amount,
-							'cost_center': tax.cost_center
-						}, account_currency, item=tax))
+						gl_entries.append(
+							self.get_gl_dict({
+								"account": pe.advance_tax_account,
+								"against": self.customer,
+								rev_dr_cr: unallocated_amount,
+								rev_dr_cr + "_in_account_currency": unallocated_amount
+								if account_currency==self.company_currency
+								else unallocated_amount,
+								'cost_center': tax.cost_center
+							}, account_currency, item=tax))
 
-					frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount + unallocated_amount)
-					tax_map[tax.account_head] -= unallocated_amount
+						frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount + unallocated_amount)
+						tax_map[tax.account_head] -= unallocated_amount
 
 	def make_item_gl_entries(self, gl_entries):
 		# income account gl entries
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index da88853..11a9d90 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -726,16 +726,17 @@
 			tax_map = self.get_tax_map()
 
 			for pe in self.get('advances'):
-				pe = frappe.get_doc('Payment Entry', pe.reference_name)
-				for tax in pe.get('taxes'):
-					allocated_amount = tax_map.get(tax.account_head) - allocated_tax_map.get(tax.account_head)
-					if allocated_amount > tax.tax_amount:
-						allocated_amount = tax.tax_amount
+				if pe.reference_type == 'Payment Entry':
+					pe = frappe.get_doc('Payment Entry', pe.reference_name)
+					for tax in pe.get('taxes'):
+						allocated_amount = tax_map.get(tax.account_head) - allocated_tax_map.get(tax.account_head)
+						if allocated_amount > tax.tax_amount:
+							allocated_amount = tax.tax_amount
 
-					if allocated_amount:
-						frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount - allocated_amount)
-						tax_map[tax.account_head] -= allocated_amount
-						allocated_tax_map[tax.account_head] -= allocated_amount
+						if allocated_amount:
+							frappe.db.set_value('Advance Taxes and Charges', tax.name, 'allocated_amount', tax.allocated_amount - allocated_amount)
+							tax_map[tax.account_head] -= allocated_amount
+							allocated_tax_map[tax.account_head] -= allocated_amount
 
 	def validate_multiple_billing(self, ref_dt, item_ref_dn, based_on, parentfield):
 		from erpnext.controllers.status_updater import get_allowance_for
