Refunds are a third object, not a mode of the credit note
Xero · QBO · NetSuiteReducing a receivable and returning cash are separate events with separate documents in all three systems, and QuickBooks needs two objects (VendorCredit plus Deposit) to express a vendor refund at all. A UI that treats 'credit' and 'refund' as one action will produce the wrong pair of records.
Do — Model the credit and the cash movement as two linked records, and make the UI ask which one the user means before it writes anything.