Use dynamic shipping to charge for shipping the upsell separately.
NOTE: This Plugin require Upstroke: WooCommerce One Click Upsell
- In dynamic shipping, the product price is shown independent of the shipping charges.
- When the user adds the upsell offer to the order the new shipping charges are shown on the side panel that emerges.
- These new shipping charges are based on the shipment method chosen in the initial purchase and are calculated as if the main product + the upsell product were in the same cart.
Since the user has already paid for shipping the main product, he’s now billed for the remainder shipping charges.