Скидку можно добавить так:
$kupon = new WC_Coupon('uniquecode');
$amount = $kupon->coupon_amount;//значение скидки
$order->add_coupon( 'uniquecode', $amount, $amount );
$order->set_total( $amount, 'cart_discount' );
Но после выполнения:
$order->calculate_totals();
она пропадает в админке, остается только название купона, который применили…