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 |
|---|---|---|---|
| v*s*e*l*f*b*i*e*.se (WP 7.0.2) | F | 2026-07-28 02:46:42 | |
| s*l*r*r*s*.c*.uk (WP 7.0.2) | D | 2026-07-28 00:16:00 | |
| r*f*x*n*s.com (WP 7.0.2) | F | 2026-07-27 14:52:05 | |
| f*a*g*t*n*e*.com | F | 2026-07-26 17:33:49 | |
| c*m*e*s.com (WP 6.9.5) | F | 2026-07-26 00:39:08 | |
| v*o*r*e*w*r*i*g*e*o*.nl (WP 7.0.2) | D | 2026-07-25 11:20:30 | |
| t*m*e*s*o*e*t*.c*.uk | B | 2026-07-25 08:48:20 | |
| g*p*-*r*u*.com (WP 6.8.1) | F | 2026-07-25 04:02:00 | |
| h*t*u*s*e*a*e*u.nl (WP 7.0.2) | C | 2026-07-24 21:19:11 | |
| a*d*o*i*i*n.nl (WP 7.0.2) | C | 2026-07-23 16:19:33 | |
| c*b*r*a*c*.nl (WP 7.0.2) | C | 2026-07-23 16:19:33 | |
| t*d*t*m*e*.se (WP 7.0.2) | D | 2026-07-22 20:32:28 | |
| a*g*m*s*e*r*g*r*t*o*.c*m.au (WP 7.0.2) | C | 2026-07-22 06:04:01 | |
| l*f*i*g*e*r*r*d.c*.uk | D | 2026-07-22 04:16:17 | |
| d*h*n*i*e.c*.uk | F | 2026-07-22 04:11:36 | |
| p*o*f*a.no (WP 7.0.2) | F | 2026-07-22 03:48:52 | |
| u*t*n*o*d.com | F | 2026-07-21 20:09:46 | |
| k*l*.se (WP 7.0.2) | F | 2026-07-20 18:28:16 | |
| r*p*x.no (WP 7.0.2) | D | 2026-07-20 01:04:00 | |
| d*f*o*t*u*k.nl (WP 7.0.2) | D | 2026-07-20 00:08:50 | |
| k*i*k*e*o*i*s.nl | F | 2026-07-19 02:43:02 | |
| l*c*t*a*k.nl (WP 7.0.1) | D | 2026-07-17 15:03:15 | |
| g*e*n*t*l*s*o*.it (WP 7.0) | F | 2026-07-17 05:53:06 | |
| y*u*i*h.nl | F | 2026-07-16 23:00:42 | |
| e*u*n*p*y*h*t*e*a*y.n*t.au | F | 2026-07-16 22:09:46 | |
| h*u*i*k*e*d.com (WP 6.8.1) | F | 2026-07-16 22:02:01 | |
| s*r*o.fi | D | 2026-07-16 20:25:47 | |
| m*o*r*d*r*.com (WP 6.9.4) | F | 2026-07-16 14:34:23 | |
| v*s*y*t*m*.com (WP 7.0.1) | F | 2026-07-15 18:40:39 | |
| f*o*s*o*i*s.lt (WP 7.0.1) | F | 2026-07-14 20:01:05 | |
| a*n*r*j*t*c*n*e*.nl (WP 7.0) | F | 2026-07-14 13:59:08 | |
| v*r*s*a*s*r*d*k*e*.se (WP 6.8.5) | F | 2026-07-14 11:36:58 | |
| d*p*g*e*i*t*r*e*r*.nl (WP 7.0) | F | 2026-07-14 05:08:31 | |
| e*o*t*a*i*g.com (WP 7.0.1) | F | 2026-07-13 14:59:00 | |
| m*s*r*b*t*c*.de (WP 7.0.1) | A | 2026-07-13 12:36:08 | |
| a*a*t*r*f*o*c*e*e.com (WP 7.0) | F | 2026-07-13 09:17:38 | |
| h*n*y*n*i*e.c*.uk | D | 2026-07-12 01:28:25 | |
| v*x*i*r*d*r*a.se (WP 7.0) | F | 2026-07-11 11:04:13 | |
| b*r*s*o*.com (WP 6.7.5) | F | 2026-07-10 19:30:32 | |
| m*p*p*e*.nl | F | 2026-07-10 16:59:50 | |
| d*r*c*a*e*a*l*n.nl | F | 2026-07-10 16:59:50 | |
| h*m*e*s*a*e*.no (WP 6.9) | F | 2026-07-10 15:15:20 | |
| a*v*g*o*p.ua | F | 2026-07-09 21:40:50 | |
| s*l*g*a*.com (WP 7.0) | F | 2026-07-09 14:44:40 | |
| b*i*k*h*l*s*l*.c*.uk | D | 2026-07-09 12:43:01 | |
| l*s*e*m*o*-*e*e*r*.com | F | 2026-07-09 05:47:49 | |
| g*i*t*.com | D | 2026-07-09 02:52:25 | |
| t*p*e*s*e*t*n*.com | F | 2026-07-08 22:25:20 | |
| p*b*i*r*f*.pt (WP 6.9.4) | D | 2026-07-08 01:01:35 | |
| h*n*y*r*d*.c*.uk | D | 2026-07-07 21:18:06 | |
| r*c*a*m*t.nl | F | 2026-07-07 16:54:58 | |
| t*e*a*.nl (WP 6.9.4) | F | 2026-07-07 15:32:53 | |
| c*r*p*a*e*s.com (WP 7.0) | F | 2026-07-07 10:40:18 | |
| b*u*d*e*s.me | F | 2026-07-07 10:23:08 | |
| p*n*o*r.net (WP 7.0) | F | 2026-07-07 03:44:19 | |
| b*t*n*e*z*.nl (WP 6.9.4) | D | 2026-07-06 13:05:54 | |
| j*m*t*a.nl (WP 7.0) | C | 2026-07-05 07:46:55 | |
| g*s*r*u*a*.com (WP 7.0) | F | 2026-07-04 15:22:11 | |
| s*u*e*v*r*w*r*n.nl | C | 2026-07-04 08:05:42 | |
| c*t*o*i*.fr (WP 7.0) | F | 2026-07-04 05:13:16 | |
| t*e*i*e*a*d*t*r*.c*.uk (WP 7.0) | D | 2026-07-04 02:17:59 | |
| g*a*i*g*e*a*t*r*.c*.uk (WP 7.0) | F | 2026-07-03 10:30:32 | |
| k*n*r*.fi (WP 7.0) | F | 2026-07-03 05:00:41 | |
| p*b*x*a*t*.com | F | 2026-07-02 16:07:44 | |
| i*p*e*e*.com (WP 7.0) | F | 2026-07-02 14:57:23 | |
| d*r*.com | F | 2026-07-02 09:38:20 | |
| p*r*o*m*n*e*o*k*l*t*i*g.c*.uk | F | 2026-07-02 07:21:42 | |
| h*s.se (WP 6.9.4) | B | 2026-07-02 03:56:48 | |
| a*r*g*n*e.com | A | 2026-07-02 00:02:33 | |
| s*r*d*c*.com (WP 6.9.4) | F | 2026-07-01 10:50:08 | |
| d*c*u*.com (WP 7.0) | F | 2026-07-01 09:51:24 | |
| p*n*o*r.com (WP 7.0) | F | 2026-07-01 03:48:54 | |
| c*t*r*e*v*u*.com (WP 7.0) | F | 2026-06-30 13:16:12 | |
| s*e*s*m*t*l*.se (WP 7.0) | F | 2026-06-30 10:17:36 | |
| t*y*k*n*.no | F | 2026-06-30 08:36:59 | |
| w*t*r*o*s.se | F | 2026-06-29 22:08:49 | |
| a*g*e*a*t*i*b*r*.nl (WP 7.0) | D | 2026-06-29 21:35:54 | |
| p*i*t*o*o.eu (WP 7.0) | F | 2026-06-29 09:23:57 | |
| c*y*t*e*.se (WP 7.0) | F | 2026-06-19 15:19:32 | |
| p*u*a*.nl | D | 2026-06-19 13:44:09 | |
| e*e*t*e*t*l*.nl (WP 7.0) | D | 2026-06-19 01:35:28 | |
| w*i*c*u*c*.builders | F | 2026-06-17 08:18:12 | |
| g*r*e*m*g*s*o*e.c*.uk (WP 7.0) | F | 2026-06-13 23:07:34 | |
| d*l*a*i*d*s*r*e.fr (WP 7.0) | F | 2026-06-13 22:15:49 | |
| s*e*g*r*c*i*s.nl (WP 7.0) | D | 2026-06-13 17:10:33 | |
| 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 | |
| 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 | |
| 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 |