What you list on the invoice typically is your Income, even if being reimbursed for something you incurred. Remember to track Expense as gross and income as gross, even if something is "sold at cost" = reimbursed.
The Funds coming in are Banking, and never get Assigned to anything. They are the Payment for what you listed on the invoice. Invoice = Unpaid sale, and those charges already created Income for you. The payment of funds is just Banking, now. Example:
Fee income
Reimbursement from travel expense (is also tracked as income)
Reimbursement for materials, marked up or not (also is Income)
Sales Taxes
= total owed to you.
That's why the Payment is never split into any Income or expense account. It is the Banking function for Funds paid by customers against the sales you made.
You use a Holding Account, which in QB is a function provided by the account name of Undeposited Funds, because you have a need for some individual transactions that either have a Different Date than the date of deposit, and/or also need to be Batched Together.
Whether inside QB or in reality, this is Common. Example:
You have invoices with payment due by the 10th. You want to Process that the payments arrived by/on the 10th, but you are not going to make the Bank deposit until the 12th. You also have 15 entries, and don't want the QB bank register to show 15 individual entires dated the 12th. You want One Date of Deposit for the 12th, consisting of 15 individual customer payments, received by you by/on the 10th.
You process the payments for the 10th or the date they arrived, because the customers really did pay on time. You let those flow to UF, to be held until you create the Deposit entry (or get it from banking download) that is One Total and is dated the 12th. Now your Recordkeeping and the Bank have an exact match to reality: One deposit date and one deposit Total and all customers are not Late (12th vs 10th).
That is why you use UF. I hope that helps.