Get Cart Tax Total programmatically in WooCommerce Get Cart Tax Total programmatically in WooCommerce wordpress wordpress

Get Cart Tax Total programmatically in WooCommerce


  1. global $woocommerce; $woocommerce->cart is obsolete for Cart. Use WC()->cart instead.
    Here you can use directly $cart (object) argument instead…
  2. The correct property is taxes instead of tax_total.
  3. Is better to use WC_Cart get_taxes() method intead to be compatible with WooCommerce version 3.0+

To achieve what you are trying to Your code is going to be:

// For Woocommerce 2.5+ (2.6.x and 3.0)add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line', 10, 1 );function prefix_add_discount_line( $cart ) {    if ( is_admin() && ! defined( 'DOING_AJAX' ) )        return;    $discount = 0;    // Get the unformated taxes array    $taxes = $cart->get_taxes();     // Add each taxes to $discount    foreach($taxes as $tax) $discount += $tax;    // Applying a discount if not null or equal to zero    if ($discount > 0 && ! empty($discount) )        $cart->add_fee( __( 'Tax Paid On COD', 'your-text-domain' ) , - $discount );}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

This code is tested and works.


You are using wrong function name. Correct function is as below :-

WC()->cart->get_tax_totals( );

Instead of using $woocommerce->cart->tax_total; to get cart total tax, you can do this by subtracting cart total excluding tax from cart total.

You can do this by following code :-

$total_tax = floatval( preg_replace( '#[^\d.]#', '', WC()->cart->get_cart_total() ) ) - WC()->cart->get_total_ex_tax();

If you want to get array for all taxes then you can get through below code :-

WC()->cart->get_taxes( );