Client script to open New Payment Entry but "Party" always blank

Hi, below is the code that initiate before the new_doc()

               frappe.route_options = {
                    "naming_series": "ACC-PAY-.YYYY.-",
                    "payment_type": "Receive",
                    "posting_date": new Date().toISOString().split('T')[0], // current date
                    "mode_of_payment": row.payment_type,
                    "party_type": "Customer",
                    "party": so.customer,
                    "party_name": so.customer_name,
                    "paid_from": "1310 - Debtors - OKSB",
                    "reference_date": so.transaction_date,
                    "paid_amount": row.total_amount
                frappe.new_doc('Payment Entry');

after the code execute, it brings me to new payment entry page, with most of the field pre-filled, but I’m unable to get the “Party” field filled.

I’ve checked, the value is not empty


Any help will greatly appreciate.


Anyone has any thought?