we need to charge 0 VAT for UK orders that are greater than 150 euro including shipping and payment gateway fees but excluding the 20% normal VAT.
So if a British residential address orders something at 130 and shipping and payment gateway fees are 9 then we charge VAT so the customer pays 139+9+20% VAT, but, if the order is 130 and shipping and payment gateway fees are 23 so a total of 153 without VAT we charge no tax.
I created this but still, it’s taxing shipping fees and PayPal added fees also are getting taxed, my head is minced really thought I’d reach out for suggestions.
add_action( 'woocommerce_before_calculate_totals','auto_add_tax_for_room', 10, 1 );
function auto_add_tax_for_room( $cart ) {
if ( is_admin() && ! defined('DOING_AJAX') ) return;
$shipping_country = WC()->customer->get_shipping_country();
$subtotal = 0;
foreach ( WC()->cart->get_cart() as $cart_item ) {
$subtotal += $cart_item['data']->get_price('edit') * $cart_item['quantity'];
}
$subtotal = intval($subtotal);
if($shipping_country!='GB' || $subtotal < 125) return;
$percent = 0;
// Calculation
$surcharge = ( $cart->cart_contents_total + $cart->shipping_total ) * $percent / 100;
// Add the fee (tax third argument disabled: false)
foreach ( $cart->get_cart() as $cart_item ) {
// get product price
$price = $cart_item['data']->get_price();
$cart_item['data']->set_tax_class( 'Zero rate' ); // Above 2500
}
return;
}
2
Answers
Thanks to LoicTheAztec help I made some changes ended up using the following and it worked to fix the UK taxes issues
The hook
woocommerce_before_calculate_totals
is just for cart items and the tax class here only apply to products as$cart_item['data']
is theWC_Product
Object.If your product prices are set without taxes, there is another alternative much more simpler that will remove all taxes when your conditions are met.
Try the following instead:
Code goes in functions.php file of the active child theme (or active theme). Tested and works.