diff --git a/erpnext/accounts/doctype/unreconcile_payments/unreconcile_payments.py b/erpnext/accounts/doctype/unreconcile_payments/unreconcile_payments.py
index c80365b..b6dd363 100644
--- a/erpnext/accounts/doctype/unreconcile_payments/unreconcile_payments.py
+++ b/erpnext/accounts/doctype/unreconcile_payments/unreconcile_payments.py
@@ -82,10 +82,10 @@
 		ple = qb.DocType("Payment Ledger Entry")
 		if _dt in ["Sales Invoice", "Purchase Invoice"]:
 			criteria = [
+				(ple.company == company),
 				(ple.delinked == 0),
 				(ple.against_voucher_no == _dn),
 				(ple.amount < 0),
-				(ple.company == company),
 			]
 
 			res = (
@@ -102,17 +102,26 @@
 			)
 			return res
 		else:
-			return frappe.db.get_all(
-				"Payment Ledger Entry",
-				filters={
-					"delinked": 0,
-					"voucher_no": _dn,
-					"against_voucher_no": ["!=", _dn],
-					"amount": ["<", 0],
-				},
-				group_by="against_voucher_no",
-				fields=["against_voucher_type", "against_voucher_no", "Sum(amount_in_account_currency)"],
+			criteria = [
+				(ple.company == company),
+				(ple.delinked == 0),
+				(ple.voucher_no == _dn),
+				(ple.against_voucher_no != _dn),
+			]
+
+			query = (
+				qb.from_(ple)
+				.select(
+					ple.company,
+					ple.against_voucher_type.as_("voucher_type"),
+					ple.against_voucher_no.as_("voucher_no"),
+					Abs(Sum(ple.amount_in_account_currency)).as_("allocated_amount"),
+				)
+				.where(Criterion.all(criteria))
+				.groupby(ple.against_voucher_no)
 			)
+			res = query.run(as_dict=True)
+			return res
 	return []
 
 
diff --git a/erpnext/public/js/utils/unreconcile.js b/erpnext/public/js/utils/unreconcile.js
index 509cd39..46555fe 100644
--- a/erpnext/public/js/utils/unreconcile.js
+++ b/erpnext/public/js/utils/unreconcile.js
@@ -20,6 +20,34 @@
 		}
 	},
 
+	build_selection_map(frm, selections) {
+		// assuming each row is an individual voucher
+		// pass this to server side method that creates unreconcile doc for each row
+		let selection_map = [];
+		if (['Sales Invoice', 'Purchase Invoice'].includes(frm.doc.doctype)) {
+			selection_map = selections.map(function(elem) {
+				return {
+					company: elem.company,
+					voucher_type: elem.voucher_type,
+					voucher_no: elem.voucher_no,
+					against_voucher_type: frm.doc.doctype,
+					against_voucher_no: frm.doc.name
+				};
+			});
+		} else if (['Payment Entry', 'Journal Entry'].includes(frm.doc.doctype)) {
+			selection_map = selections.map(function(elem) {
+				return {
+					company: elem.company,
+					voucher_type: frm.doc.doctype,
+					voucher_no: frm.doc.name,
+					against_voucher_type: elem.voucher_type,
+					against_voucher_no: elem.voucher_no,
+				};
+			});
+		}
+		return selection_map;
+	},
+
 	build_unreconcile_dialog(frm) {
 		if (['Sales Invoice', 'Purchase Invoice', 'Payment Entry', 'Journal Entry'].includes(frm.doc.doctype)) {
 			let child_table_fields = [
@@ -61,23 +89,9 @@
 
 								let selected_allocations = values.allocations.filter(x=>x.__checked);
 								if (selected_allocations.length > 0) {
-									// assuming each row is an individual voucher
-									// pass this to server side method that creates unreconcile doc for each row
-									if (['Sales Invoice', 'Purchase Invoice'].includes(frm.doc.doctype)) {
-										let selection_map = selected_allocations.map(function(elem) {
-											return {
-												company: elem.company,
-												voucher_type: elem.voucher_type,
-												voucher_no: elem.voucher_no,
-												against_voucher_type: frm.doc.doctype,
-												against_voucher_no: frm.doc.name
-											};
-
-										});
-
-										erpnext.utils.create_unreconcile_docs(selection_map);
-										d.hide();
-									}
+									let selection_map = erpnext.accounts.unreconcile_payments.build_selection_map(frm, selected_allocations);
+									erpnext.accounts.unreconcile_payments.create_unreconcile_docs(selection_map);
+									d.hide();
 
 								} else {
 									frappe.msgprint("No Selection");
