This post only works for installations on WooCommerce 2.0. If you are looking for the way to do it under WooCommerce 2.1, you should visit How do you configure VAT for the Canary Islands, Ceuta and Melilla in WooCommerce 2.1?.
Having finished configuring our first online shop under the WooCommerce plugin for WordPress, and discovering its glories and its miseries, we are going to publish a series of posts in which we are going to tell you about a few small tricks that are going to make the task of configuring your WooCommerce much simpler.
WooCommerce’s official documentation explains very well how to configure the various types of tax (VAT) we need in our online shop, but we can tell you now that for our particular case, Spain, it is absolutely no use at all and it does not work.
So how do we configure VAT?
To do it properly we have to follow the path WooCommerce -> Settings -> Tax and, once there, create all the VAT rates we need for our eCommerce project.
In our particular case, just as we can see in the screenshot on the right, we have needed and configured three VAT rates:
- VAT at 10%: which has been configured as the standard tax and which is the one used by default by the online shop. As we can see in the screenshot, it is a universal VAT that affects all the supported countries and that is not applied to the shipping costs.
- VAT at 21%: which has been configured exactly the same as the previous one, just as we can see in the screenshot, although this time with a rate of 21% and affecting the shipping costs, since this is the VAT rate that is going to be used to calculate their amount correctly.
- VAT at 0%: which, as in the previous case, has also been configured to affect the shipping costs, although for this to work a plugin we have created and that we will publish in the next few days, called WC - APG Weight Shipping, is needed.
Once we have the 3 VAT rates configured, and given that WooCommerce is not going to know when to use them, we need to introduce some modification in the functions.php file of our WordPress child theme. Specifically this handful of lines of code:
Thanks to them, our online shop will use the 0% VAT rate, called Excluido in our particular case, whenever the customer is in the Canary Islands, Ceuta or Melilla.
Is everything done now?
Not really; if we want everything to work properly we have to configure WooCommerce so that the products have VAT added, just as we can see in the first screenshot, and we have to enter the net prices, without VAT, in the products, and state the VAT rate we want to be applied, in our particular case, 10% or 21%.
The problem arises when we go to our online shop and find that the prices of the products are shown just as we entered them, that is, without VAT added. To solve it we need to add another handful of lines of code to our functions.php file:
With these configurations and small modifications we will see that our shop will show the prices with their corresponding VAT throughout Spain, and in the Canary Islands, Ceuta and Melilla it will show us the prices without VAT.
By the way, you will notice that a message will come up saying (incl. IGC) instead of (incl. IVA); to fix it, which has to be done every time WooCommerce is updated, we have to edit the WooCommerce language files: woocommerce-es_ES.po and woocommerce-es_ES.mo. To do that we can use a plugin such as CodeStyling Localization, which will be a great help to you. What we cannot quite understand is why this bug is still with us, when it is a known bug that has been reported over and over again.
Everything explained here can be seen working in the Herves-Vida online shop. We hope you find this post useful and, if so, we look forward to your comments.
Another day we will explain to you how to add a NIF/CIF field easily and simply, although we are already thinking about creating a plugin to make it even more straightforward and, obviously, we will let you know about the release of WC - APG Weight Shipping, but that will be another day.
Update: thanks to the heads-up from Jose Costa Ros we have found that the precio_con_iva function was not correct when the product used a sale price or any other combination. Now, with the new function we are publishing, it works properly.
Related posts
Comments









Hola. Muchas gracias por la aportación pero tengo una duda: dejando en Canarias exenta de aplicar el IVA no aplicamos ningún impuesto, pero en Canarias ¿no habría que aplicar el IGIC que sustituye al IVA en ese territorio?
En tal caso supongo que habría que configurar otro impuesto más, el IGIC con sus variantes, para ese territorio.
Gracias
De todas formas en tus Condiciones de compra, debes dejarle claro al cliente este punto. Por ejemplo en las Condiciones de compra de Herves-Vida tienes el punto 2.6 que dice:
2.6. Moneda,impuestos y precio
De acuerdo con la legislación vigente, toda la compra desde nuestro sitio web estará sujeta al impuesto sobre el valor añadido, excepción hecha de Canarias, Ceuta y Melilla. El tipo aplicable será el legalmente vigente en cada momento.
En los pedidos con destino a Canarias, Ceuta y Melilla, las entregas se considerarán exentas de IVA, sin perjuicio de la aplicación de los impuestos y aranceles derivados de la entrada del producto en dichos territorios (según normativa vigente), y que deberán ser pagados directamente por el cliente al operador logístico encargado de la entrega del producto.
Todos los precios se muestran en euros (€) y deben ser considerados como el precio final a pagar por el cliente (incluyendo el IVA o no en función del territorio de entrega, tal y como se indica en los párrafos anteriores). Los costes de transporte (si proceden) así como los impuestos y aranceles para la entrada del producto en Canarias, Ceuta y Melilla no están incluidos en dicho precio.
Las compras con destino a Canarias están exentas de IVA español, pero el cliente deberá asumir los impuestos y gastos de entrada del producto en su Comunidad (IGIC, despachos aduaneros, etc.). Estos gastos deberán ser pagados directamente por el cliente al operador logístico encargado de la entrega del producto. Del mismo modo, el cliente deberá asumir el coste de la salida del producto de su comunidad (despachos aduaneros) cuando se realiza la devolución del pedido, más el coste del envío del paquete, que variará en función del origen.
Efectivamente en Canarias existe el IGIC, pero este normalmente se cobra directamente por la empresa de transporte al cliente a la hora de entregar el paquete. Lo mismo ocurre en Ceuta y Melilla, donde también tienen un recargo especial. Dado que este tipo de recargos varían en función de varios factores, no creemos que sea necesario programarlo. Aún así, si alguien tiene especial interés y nos hace llegar la documentación al respecto, podemos estudiar la forma de implementarlo en el plugin.
Muchas gracias por usar nuestro plugin.
Un saludo.
Funcionando perfectamente :-D GRACIAS!
Nos alegramos :-D
Una vez más, ¡gracias!, los plugins que nos ofreces son muy útiles y funcionaes, así como las instrucciones de uso “paso a paso” que nos facilitan mucho el trabajo a los usuarios.
Hola a todos he instalado el pluging shiping y va bien pero tengo problema con el calculo de la IVA he hecho como ponéis en el tutorial pero al momento de realizar la compra con ceuta melilla o gran canarias pone la IVA al cero pero se cumula con la IVA al 21% si tenéis una solución genial , pero os felicito por vuestro pluging
Saludos
Algo has debido de hacer mal, ya que el IVA en Canarias, Ceuta y Melilla debe de salir a 0 en todos los productos y en el gasto de envío, y tal y como está descrito en esta entradas, así es. Somos muchos los que lo usamos sin problema alguno.
Revisa tu configuración y lo explicado aquí, además de la función que hay que insertar en el archivo functions.php.
Suerte.
Voy a revisarlo todo el proceso la unica diferencia es que solo utilizo 2 IVa 1 al 21% y la del 0% para canarias debemos modificar algo en el codigo a añadir
garcias
Mírate la respuesta que le dimos a Raquel, a Illo Gronio, y ahora a ti, con el mismo problema en WC - APG Weight Shipping de APG.
Te lo va a solucionar al 100% ;-).
http://www.galimard-perfumes.es es la web en la cual he puesto el plugin cuando tengáis el tiempo y ver que cuando poner una de las provincias con la IVA al cero pues cumulan las 2 he hecho lo que me habéis dicho pero algo debo hacer mal no logro por ahora solucionarlo
gracias
Buenas tardes Bernardo.
Según hemos visto en tu panel de administración había dos problemas, el primero es que la Localización Base no estaba bien configurada, ya que tenías puesto un país exótico ;-). Por otro lado no has entendido bien el comentario que le escribimos, por lo que hemos escrito una nueva entrada (¿Cómo configurar correctamente el IVA en WooCommerce?) y así lo veréis más claro.
No puedes usar los impuestos estándar para los gastos de envío, ya que WooCommerce no devuelve su valor, creemos que es algún error propio, por lo que tienes que crear un nuevo impuesto al 21% para los gastos de envío, y verás cómo todo funcionará correctamente.
Esperemos que ahora lo veas más claro.
Hola a todos ya todo solucionado genial y sobre todo muchas gracias Emilio por tu atención, respuestas super rápido “chapeau” como se dice en Francia, un milion de gracias tu plugin la bomba.
Muy buen tutorial, pero me surge un problema.
Nosotros operamos desde Canarias y, aunque ya hemos configurado el “IVA” (IGIC) al 3%, no consigo saber como cambiar literalmente la palabra IVA del carrito y sustituirla por IGIC.
Muchas gracias de antemano.
Para eso tienes que modificar las traducciones de WooCommerce.
Puedes hacerlo con un fantástico plugin gratuito que se llama Codestyling Localization.
Un saludo.
Hola, qué sentido tiene el IVA estándar al 10%?. Acabo de instalar ambos plugin y hasta ahora tenía el estándar a 21%. De esa manera los precios aparecen con el IVA Incluído del 21%. Si sigo vuestras instrucciones, cómo logro que eso continúe así?. Puedo imaginar que los precios son mostrados a todo el mundo en el sitio web con el IVA correspondiente a la tienda base, es eso así?. Porque si es así, perfecto, porque estamos en Madrid. Luego, al proyectar el pedido, si el cliente estaría en Canarias, el precio le descontaría el IVA. Estoy en lo cierto?. Gracias por vuestro plugin.
Ninguno si no lo necesitas. En el ejemplo era necesario, y así se ha explicado, con el IVA al 10%. Lo único que tienes que hacer es seguir el ejemplo pero para el tipo de IVA que necesitas.
Lee bien la entrada.
Un saludo.
Hola Equipo!!
En mi caso estoy configurando una tienda online pero no quiero hacer envíos fuera de la península. Es posible configurar vuestro plugin para que si se introduce algún código postal de Canarias, Baleares, Ceuta o Melilla no aparezca ningún método de envío? O que aparezca un mensaje diciendo que no es posible?
Muchas gracias!
Si es posible.
Un saludo.
Hola a todos,
No se si es un problema de mi configuración, pero he observado que en los productos variables, en caso de que existan diferentes precios en las variaciones, desaparece el “precio min-max” (con la nueva versión de woocommerce) y el “desde:precio mínimo” (con la versión anterior de woocommerce) lo que puede provocar confusión a los clientes. Si os soy sincero y dado mis escasos conocimientos de programación, no logro detectar el motivo por el que el código provoque este funcionamiento (si es que es un problema del código… que no estoy yo tan seguro de que no sea mi configuración)
Muchas gracias por vuestro esfuerzo por añadir esta y otras funcionalidades para resolver nuestros problemas del día a día.
Un saludo.
Hola. No sé si se trata de una información antigua o desfasada o me han informado mal. He hecho una consulta a mi gestor y me dice que si se vende desde la peninsula a Canarias (por ejemplo), el producto va exento de iva, pero que el envío, al tratarse como un servicio si que si que debe estar sujeto al impuesto general, normalmente del 21%, pero eso es diferente a lo que se dice aquí. ¿Está esta información desfasada o me han informado mal?. Gracias
Obviamente no seremos nosotros los que desmientan a tu gestor, él sabe mucho más de su trabajo que nosotros que no nos dedicamos a eso :-)
Quien te puede confirmar al 100% este punto es tu empresa de logística. Según nuestra información tal y como está indicado es correcto, de todas formas te agradeceríamos confirmación al respecto de este punto.
Un saludo.
Lo que me dijo mi gestoría es exactamente lo que pone en este artículo:
https://www.denox.es/blog/tiendas-virtuales/se-debe-cobrar-el-iva-a-canarias-en-tiendas-online-de-la-peninsula/
El articulo no debe llevar IVA, pero el envío, al ser tratado como un servicio, se le aplica el Iva peninsular… si es destinatario es un particular. Si el destinatario es una empresa entonces no lleva Iva.
Saludos
Pues si es el asunto del IVA del transporte es así tal cual lo indica la publicación la solución no es nada sencilla y pasa por crear código o plugin totalmente personalizado para lograrlo. Igual un día de estos le damos alguna vuelta y buscamos alguna solución.
Muchas gracias por la información.
Un saludo.