diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 2fe1f61..87459dc 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -1070,6 +1070,7 @@
 		Validate Allocation on Payment Entry based on Payment Schedule. Upon overallocation, validation error must be thrown.
 
 		"""
+		customer = create_customer()
 		create_payment_terms_template()
 
 		# Validate allocation on base/company currency
@@ -1082,7 +1083,7 @@
 		# Allocated amount should be according to the payment schedule
 		for idx, schedule in enumerate(si1.payment_schedule):
 			with self.subTest(idx=idx):
-				self.assertEqual(schedule.payment_amount, pe.references[idx].allocated_amount)
+				self.assertEqual(flt(schedule.payment_amount), flt(pe.references[idx].allocated_amount))
 		pe.save()
 
 		# Overallocation validation should trigger
@@ -1110,7 +1111,7 @@
 		# Allocated amount should be according to the payment schedule
 		for idx, schedule in enumerate(si2.payment_schedule):
 			with self.subTest(idx=idx):
-				self.assertEqual(schedule.payment_amount, pe.references[idx].allocated_amount)
+				self.assertEqual(flt(schedule.payment_amount), flt(pe.references[idx].allocated_amount))
 		pe.save()
 
 		# Overallocation validation should trigger
@@ -1123,9 +1124,9 @@
 		si2.delete()
 
 		# Validate allocation in base/company currency on a foreign currency document
-		# when invoice is made is foreign currency, but posted to base/company currency account
+		# when invoice is made is foreign currency, but posted to base/company currency debtors account
 		si3 = create_sales_invoice(
-			customer="_Test Customer USD",
+			customer=customer,
 			currency="USD",
 			conversion_rate=80,
 			do_not_save=1,
@@ -1138,17 +1139,17 @@
 		# Allocated amount should be according to the payment schedule
 		for idx, schedule in enumerate(si3.payment_schedule):
 			with self.subTest(idx=idx):
-				self.assertEqual(schedule.payment_amount, pe.references[idx].allocated_amount)
+				self.assertEqual(flt(schedule.base_payment_amount), flt(pe.references[idx].allocated_amount))
 		pe.save()
 
 		# Overallocation validation should trigger
-		pe.paid_amount = 400
-		pe.references[0].allocated_amount = 200
-		pe.references[1].allocated_amount = 200
+		pe.paid_amount = 16000
+		pe.references[0].allocated_amount = 8000
+		pe.references[1].allocated_amount = 8000
 		self.assertRaises(frappe.ValidationError, pe.save)
-		# pe.delete()
-		# si3.cancel()
-		# si3.delete()
+		pe.delete()
+		si3.cancel()
+		si3.delete()
 
 
 def create_payment_entry(**args):
@@ -1239,3 +1240,17 @@
 def create_payment_term(name):
 	if not frappe.db.exists("Payment Term", name):
 		frappe.get_doc({"doctype": "Payment Term", "payment_term_name": name}).insert()
+
+
+def create_customer(name="_Test Customer 2 USD", currency="USD"):
+	customer = None
+	if frappe.db.exists("Customer", name):
+		customer = name
+	else:
+		customer = frappe.new_doc("Customer")
+		customer.customer_name = name
+		customer.default_currency = currency
+		customer.type = "Individual"
+		customer.save()
+		customer = customer.name
+	return customer
