Tax Switch for WooCommerce
Tax Switch for WooCommerce enhances your WooCommerce store by allowing users to toggle between displaying prices including or excluding VAT. This plugin adds a customizable switch component and provides a flexible way to display both price versions.
Key features
- Display customizable switches where you want
- Gutenberg block support
- Shortcode for easy integration (including shortcode generator)
- Flexible display options for prices with and without VAT
- Remembers the user’s preference for future visits
- Choose between a toggle switch or buttons
For more information about this plugin, please visit the plugin page.
Requirements
- WooCommerce plugin installed and activated
- WooCommerce tax calculations enabled and configured
Configuration
Configure the plugin settings below for proper functionality.
WooCommerce settings
Ensure these WooCommerce settings are configured first:
-
Configure tax calculations
- Go to: WooCommerce > Settings > General
- Verify your shop address is complete
- Enable “Enable tax rates and calculations”
- Set “Default customer location” to “Shop base address”
-
Set up tax rates
- Go to: WooCommerce > Settings > Tax > Standard Rates
- Add your regional tax rates
-
Recommended: tax calculation method
- Go to: WooCommerce > Settings > Tax
- Set “Calculate tax based on” to “Shop base address”
(This provides instant tax calculation. Other methods require customers to enter their address first.)
-
Individual product configuration
- Edit products at: Products > [Product]
- Under Product Data > Tax, set status to “Taxable”
Plugin settings
Configure these plugin-specific settings:
- Main settings
- Go to: WooCommerce > Settings > Tax Switch
- Set your preferred text values
- Optional: Restrict display locations
- Optional: Generate a shortcode via WooCommerce > Settings > Tax Switch > Shortcode
Usage
After installation and configuration, you can add the tax switch to your pages in two ways:
- Use the Gutenberg block “Tax Switch for WooCommerce” in your page or post editor.
- Use the shortcode
[wdevs_tax_switch]anywhere in your content.
Shortcode Usage
Switch/buttons
Basic usage:
[wdevs_tax_switch]
Displays a switch to toggle displaying prices including or excluding VAT.
The shortcode accepts several attributes to customize its appearance and behavior:
class-name: Adds custom CSS classes to the switch.- Default: is-style-default
- Options: is-style-default, is-style-inline, is-style-flat-pill, or custom classes
switch-type: Determines the style of the toggle.- Default:
switch - Options:
switch,buttons
- Default:
switch-color: Sets the color of the switch handle.switch-color-checked: Sets the color of the switch when it’s in the “on” position.switch-background-color: Sets the background color of the switch.switch-text-color: Sets the text color of the switch labels.switch-background-color-checked: Sets the background color of the switch when it’s in the “on” position.switch-label-incl: Sets the text for the “including VAT” label.- Default: Uses the text set in the plugin settings or “Incl. VAT” if not set.
switch-label-excl: Sets the text for the “excluding VAT” label.- Default: Uses the text set in the plugin settings or “Excl. VAT” if not set.
switch-aria-label: Sets the aria label of the switch.- Default: Uses the text set in the plugin settings or “Switch between prices including and excluding VAT” if not set.
Example with custom attributes:
[wdevs_tax_switch class-name="is-style-inline" switch-type="switch" switch-color="#ffffff" switch-color-checked="#000000" switch-background-color="#000000" switch-background-color-checked="#4CAF50" switch-text-color="#FF0000" switch-label-incl="Incl. tax" switch-label-excl="Excl. tax" switch-aria-label="Switch between prices including and excluding VAT"]
Label
Basic usage:
[wdevs_tax_switch_label]
Displays text indicating the currently selected tax setting. The text updates automatically when the tax switch is toggled.
The shortcode accepts several attributes to customize its appearance and behavior:
class-name: Adds custom CSS classes to the label.- Default: is-style-default
- Options: is-style-default or custom classes
label-text-incl: Sets the text to display when “including VAT” is selected.- Default: Uses the text set in the plugin settings or “Incl. VAT” if not set.
label-text-excl: Sets the text to display when “excluding VAT” is selected.- Default: Uses the text set in the plugin settings or “Excl. VAT” if not set.
label-text-color: Sets the “excluding VAT” text color.label-text-color-checked: Sets the “including VAT” text color.
Example with custom attributes:
[wdevs_tax_switch_label class-name="tax-indicator" label-text-incl="Prices include tax" label-text-excl="Prices exclude tax" label-text-color="#FF0000" label-text-color-checked="#4CAF50"]
PHP implementation
You can use these shortcodes with PHP with the do_shortcode() function:
JavaScript events
The switch fires a JavaScript event when the tax display is toggled. You can listen for this event to execute custom code when a user switches between inclusive and exclusive VAT display. This is useful for when you need to perform additional actions based on the tax display state.
document.addEventListener('wdevs-tax-switch-changed', function(event) {
console.log(event.detail);
// event.detail contains:
// - isSwitched: boolean - the raw switch state
// - displayIncludingVat: boolean - whether prices now display including VAT
});
If you are loading the switch dynamically (via AJAX), dispatch this event after rendering to initialize the component:
document.dispatchEvent( new CustomEvent('wdevs-tax-switch-appeared') );
WPML
To translate the option texts via WPML:
- Save your options first in: WooCommerce -> Settings -> Tax Switch
- Then translate the texts in: WPML -> String Translations and search for your option values in the domain ‘tax-switch-for-woocommerce’
Compatibility
This plugin integrates with WooCommerce’s standard filters and actions for price display and calculation. While most plugins and themes work out of the box, some third-party code use custom price building methods that require specific compatibility integrations.
The following themes have been tested and confirmed compatible:
- GeneratePress
- Blocksy
- Thrive
- Flatsome
- Kapee
- Entr
- Woodmart
- Hello Elementor
The following plugins have been tested and confirmed compatible:
- WooCommerce Product Table Lite (+ PRO)
- Tiered Pricing Table for WooCommerce (+ Premium)
- Measurement Price Calculator for WooCommerce
- Discount Rules for WooCommerce
- YITH WooCommerce Product Add-Ons (+ & Extra Options Premium)
- JetEngine Listing Grid (Elementor)
- Product Add-Ons for WooCommerce
- B2BKing – Ultimate WooCommerce Wholesale and B2B Solution (+ Premium)
- Advanced Product Fields Pro for WooCommerce
- WooCommerce Quantity Discounts, Rules & Swatches
- FacetWP
- Variation Swatches for WooCommerce (+ PRO)
- Variation Price Display Range for WooCommerce (+ PRO)
- WooCommerce Product Add-Ons Ultimate
- Advanced Woo Search (+ PRO)
- B2B Market
- FiboFilters
- Extra Product Options & Add-Ons for WooCommerce
- FiboSearch – Ajax Search for WooCommerce (+ Pro)
- YayMail – WooCommerce Email Customizer
- PDF Invoices & Packing Slips for WooCommerce
- WooCommerce Product Bundles
- LiteSpeed Cache
- Elementor Pro
- YITH WooCommerce Role Based Prices
- WooCommerce Dynamic Pricing and Discount Rules
- Price Based on Country for WooCommerce
- WP Grid Builder
If you encounter any compatibility issues with other plugins or themes, please let us know. Your feedback helps us improve the plugin and extend compatibility to more third-party solutions.
Incompatibility
After multiple attempts to create compatibility functions, reaching out to the plugin developers several times, and still finding no viable solution, the following plugins remain incompatible:
- Unlimited Elements for Elementor (+ Pro): AJAX pagination and filtering issues
- Barn2: WooCommerce Product Options
Additional Information
This plugin is fully open source. You can find the source code on GitHub
For more information and other WordPress plugins, visit Wijnberg Developments.
| Domain | Exposures | Headers | Last Checked |
|---|---|---|---|
| r*v*c*l*.fi (WP 6.9.4) | F | 2026-06-09 15:11:13 | |
| w*t*r*o*l*n*u*.c*.uk | A | 2026-06-08 14:13:17 | |
| r*i*g*a*d.c*.uk (WP 7.0) | F | 2026-06-07 09:53:09 | |
| n*t*o*k*i*.shop (WP 7.0) | F | 2026-06-07 06:37:06 | |
| w*w.l*c*t*a*k.nl (WP 7.0) | D | 2026-06-03 16:49:57 | |
| s*e*t*a*e*i*l*w*o*e*a*e.c*.uk | F | 2026-06-03 03:29:11 | |
| i*s*l*t*o*w*o*e*a*e.c*.uk | F | 2026-06-03 03:29:11 | |
| g*a*m*t*.c*.uk | F | 2026-06-03 00:22:48 | |
| g*p*.pl (WP 6.8.1) | F | 2026-06-02 02:25:12 | |
| m*s*r*b*t*c*.com (WP 7.0) | A | 2026-06-01 22:43:05 | |
| b*t*k*.o*k*l.no (WP 6.9.4) | F | 2026-06-01 08:59:18 | |
| p*i*t*3.com (WP 7.0) | D | 2026-06-01 04:08:24 | |
| v*v*m*r*d*.com (WP 7.0) | F | 2026-05-31 04:26:26 | |
| v*s*e*l*f*b*i*e*.se (WP 7.0) | F | 2026-05-30 19:31:39 | |
| s*l*r*r*s*.c*.uk | F | 2026-05-30 17:22:59 | |
| r*f*x*n*s.com (WP 7.0) | F | 2026-05-30 09:27:32 | |
| f*a*g*t*n*e*.com | F | 2026-05-29 15:51:11 | |
| l*b*u*i*u*-*e*.com (WP 7.0) | B | 2026-05-28 16:01:11 | |
| v*o*r*e*w*r*i*g*e*o*.nl (WP 7.0) | D | 2026-05-28 14:52:03 | |
| b*b.b*c*s*a*e*o*s*e*s.com | F | 2026-05-28 13:48:38 | |
| t*m*e*s*o*e*t*.c*.uk | B | 2026-05-28 12:46:43 | |
| b*u*d*e*s*e.w*e*g*n*p*w*r*d.com | F | 2026-05-28 09:14:55 | |
| g*p*-*r*u*.com (WP 6.8.1) | F | 2026-05-28 08:41:06 | |
| h*t*u*s*e*a*e*u.nl (WP 6.9.4) | C | 2026-05-28 02:51:59 | |
| v*r*k*k*u*p*.n*r*a*t*k*a.fi (WP 7.0) | F | 2026-05-27 19:11:20 | |
| t*d*t*m*e*.se (WP 6.9.4) | D | 2026-05-26 08:57:51 | |
| a*g*m*s*e*r*g*r*t*o*.c*m.au (WP 7.0) | C | 2026-05-25 19:08:28 | |
| p*o*f*a.no (WP 6.9.4) | F | 2026-05-25 17:08:37 | |
| u*t*n*o*d.com | F | 2026-05-25 09:48:46 | |
| k*l*.se (WP 6.9.4) | F | 2026-05-24 09:03:24 | |
| r*p*x.no (WP 7.0) | D | 2026-05-23 16:46:17 | |
| k*i*k*e*o*i*s.nl | F | 2026-05-22 18:03:00 | |
| k*i*k*e*o*i*s.com | F | 2026-05-21 18:22:50 | |
| l*c*t*a*k.nl (WP 6.9.4) | D | 2026-05-21 03:09:12 | |
| y*u*i*h.nl | F | 2026-05-20 09:10:40 | |
| s*o*.m*s*r*b*t*c*.com (WP 6.9.4) | A | 2026-05-20 08:41:18 | |
| e*u*n*p*y*h*t*e*a*y.n*t.au | F | 2026-05-20 08:17:48 | |
| h*u*i*k*e*d.com (WP 6.8.1) | F | 2026-05-20 08:10:16 | |
| s*r*o.fi | D | 2026-05-20 06:20:37 | |
| v*s*y*t*m*.com (WP 6.9.4) | F | 2026-05-19 03:12:52 | |
| s*o*.l*d*s*g*.si | F | 2026-05-17 23:26:08 | |
| a*n*r*j*t*c*n*e*.nl (WP 6.7.1) | F | 2026-05-17 22:03:32 | |
| v*r*s*a*s*r*d*k*e*.se (WP 6.8.5) | F | 2026-05-17 19:30:03 | |
| e*o*t*a*i*g.com (WP 6.9.4) | F | 2026-05-16 21:42:40 | |
| t*a*k*s*r*i*e*.com | F | 2026-05-16 21:21:08 | |
| m*s*r*b*t*c*.de (WP 6.9.4) | A | 2026-05-16 19:08:59 | |
| a*a*t*r*f*o*c*e*e.com (WP 6.9.4) | F | 2026-05-16 15:49:52 | |
| e*h*p.n*p*s.cz | F | 2026-05-15 20:01:22 | |
| h*n*y*n*i*e.c*.uk | D | 2026-05-15 05:07:50 | |
| v*x*i*r*d*r*a.se (WP 6.9.4) | F | 2026-05-14 13:39:30 | |
| v*l*e*f*r*s*r*e*u*p*e*t.eu (WP 6.9.4) | F | 2026-05-14 12:30:33 | |
| a*m*n*r*a*e*i*r.com (WP 6.9.4) | F | 2026-05-14 11:19:42 | |
| m*p*p*e*.nl | F | 2026-05-13 18:41:26 | |
| d*r*c*a*e*a*l*n.nl | F | 2026-05-13 18:41:26 | |
| m*n*k*s.com (WP 6.9.4) | F | 2026-05-13 17:44:04 | |
| h*m*e*s*a*e*.no (WP 6.9) | F | 2026-05-13 16:51:58 | |
| t*o*p*o*s*p*r*s.c*.uk | F | 2026-05-13 06:20:13 | |
| t*d*o*o*.com (WP 6.8.3) | F | 2026-05-13 03:55:31 | |
| s*l*g*a*.com (WP 6.9.4) | F | 2026-05-12 15:13:19 | |
| b*i*k*h*l*s*l*.c*.uk | F | 2026-05-12 13:06:31 | |
| l*s*e*m*o*-*e*e*r*.com | F | 2026-05-12 05:48:22 | |
| g*i*t*.com | D | 2026-05-12 02:42:59 | |
| t*p*e*s*e*t*n*.com | F | 2026-05-11 22:14:31 | |
| v*r*n*.ee (WP 6.9.1) | F | 2026-05-11 00:07:43 | |
| p*b*i*r*f*.pt (WP 6.9.4) | D | 2026-05-10 23:57:59 | |
| h*n*y*r*d*.c*.uk | D | 2026-05-10 20:31:32 | |
| n*r*a*t*k*a.fi (WP 6.9.4) | F | 2026-05-10 16:15:26 | |
| t*e*a*.nl (WP 6.9.4) | F | 2026-05-10 15:13:31 | |
| d*r*k*e.o*k*l.no (WP 6.9.4) | F | 2026-05-10 12:55:36 | |
| b*t*k*.o*k*l.n*.d*v.e*i*o.no (WP 6.9.4) | F | 2026-05-10 12:51:41 | |
| b*u*d*e*s.me | F | 2026-05-10 10:35:07 | |
| p*n*o*r.net (WP 6.9.4) | F | 2026-05-10 04:01:52 | |
| z*u*b*o*k*n.nl (WP 6.9.4) | F | 2026-05-09 21:32:45 | |
| b*t*n*e*z*.nl (WP 6.9.4) | F | 2026-05-09 14:59:12 | |
| s*o*.n*t*o*k*i*.be (WP 6.9.4) | F | 2026-05-07 16:33:50 | |
| c*t*o*i*.fr (WP 6.9.4) | F | 2026-05-07 05:48:33 | |
| h*s.se (WP 6.9.4) | B | 2026-05-04 11:19:50 | |
| a*r*g*n*e.com | A | 2026-05-04 07:39:52 | |
| s*r*d*c*.com (WP 6.8.1) | F | 2026-05-03 19:43:51 | |
| d*c*u*.com (WP 6.9.4) | F | 2026-05-03 18:49:31 | |
| p*n*o*r.com (WP 6.9.4) | F | 2026-05-03 13:11:03 | |
| m*n*k*s.lt (WP 6.9.4) | F | 2026-05-03 02:37:16 | |
| c*t*r*e*v*u*.com (WP 6.9.4) | F | 2026-05-02 22:07:11 | |
| t*y*k*n*.no | F | 2026-05-02 17:29:39 | |
| b*i*k*n.no (WP 6.9.4) | F | 2026-05-02 15:09:28 |