Commerce: are Shipping prices always assumed to include tax?
We fixed this by doing three things...

On our tax rate, setting &quot;Taxable Subject&quot; to &quot;Order total taxable price (Line item subtotal + Total discounts + Total shipping)&quot;
Also on our tax rate, turning on the &quot;Is this tax is already
included in the taxable subject?&quot; switch.
In our templates, wherever tax is displayed, changing from {{getTotalTax}} to {{getTotalTaxIncluded}} — eg to display the total tax (included) on a basket for both line items and shipping you'd want something like {{ cart.getTotalTaxIncluded('tax')|commerceCurrency(cart.currency) }}