I thought it would be a good idea to return the cheapest shipping rate which I worked out as follows:
string error = null;
ShippingOptionCollection options = GetShippingOptions(ShipmentPackage, ref error);
if (error != null || options.Count == 0)
return null;
return options.Min(option => option.Rate);
However this only works when the shipping address has been set - so I would like to request that customers can set a default shipping address which will be used by all checkouts for that user unless they change it.
Something along the lines of :
ShipmentPackage.ShippingAddress = ShipmentPackage.Customer.ShippingAddresses[0];
It would also be useful to set a default country & state for anonymous customers.