We do plenty of exchanges selling clothing. In most cases the customer need to pay for the exchange item to be posted out.
The way we go around it now is by setting an additional cost equal to the postage payment required when booking an exchange. This works in a way, as when the exchange booking is actioned and a new order is generated, this order will have a pending payment equal to the postage charge required, therefore will not be posted until the payment is cleared.
However the charge is associated to goods and not to postage as it should, so when we need to pull out the sales records for analisys purposes the information on the postage charges is wrong.
Ideally, along with the additional cost field, there would be a shipping charged field in the exchange booking screen, so that when that exchange is actioned, the new order will have an outstanding (not paid) postage charge.