The disount is applied automatically in checkout, not in cart.Not great and bit desorienteing for customer but the simplest is to tell them the discount will be deducted in the next step.
Easy ! Here is a code to add discount to actual page url inside liquid if it help someone : {{ shop.url }}/discount/<your discount code>?redirect={{ request.path }}