Reset shipping method on cart empty and order complete
You're right, this does not seem to clear automatically when you remove all line items, but you could I think just set an extra post value in your form that calls removeAllLineItems to clear the shipping handle at the same time...because in this controller there is a call to $cart-&gt;setContentFromPost('fields'); I presume if you set the shipping handle to "", that set content will cause the shipping method to be dropped from the cart.

So basically add &lt;input type="hidden" name="shippingMethod" value=""&gt; to your form &amp; it should work.