WC_Abstract_Order::remove_coupon()publicWC 3.2.0

Remove a coupon from the order and recalculate totals.

Coupons affect line item totals, but there is no relationship between coupon and line total, so to remove a coupon we need to work from the line subtotal (price before discount) and re-apply all coupons in this order.

Manual discounts are not affected; those are separate and do not affect stored line totals.

{} It's a method of the class: WC_Abstract_Order{}

No Hooks.


null. Nothing.


$WC_Abstract_Order = new WC_Abstract_Order();
$WC_Abstract_Order->remove_coupon( $code );
$code(string) (required)
Coupon code.


Since 3.2.0 Introduced.

Code of WC_Abstract_Order::remove_coupon() WC 6.8.2

public function remove_coupon( $code ) {
	$coupons = $this->get_items( 'coupon' );

	// Remove the coupon line.
	foreach ( $coupons as $item_id => $coupon ) {
		if ( $coupon->get_code() === $code ) {
			$this->remove_item( $item_id );
			$coupon_object = new WC_Coupon( $code );
			$coupon_object->decrease_usage_count( $this->get_user_id() );