IRPF en WooCommerce

NOTA IMPORTANTE: La información sobre aplicación de IRPF de este artículo no es del todo correcta, solo es útil la sección sobre la sobretasa por país. Si quieres aplicar correctamente el IRPF en WooCommerce revisa este otro artículo más reciente.

WooCommerce es un plugin fantástico para hacer tiendas online baratas y rápidas pero no siempre tiene solución para todas las necesidades.

De hecho, una de sus carencias es la imposibilidad de, por defecto, incluir impuestos negativos, como por ejemplo el IRPF.

El problema

Todo autónomo sabe que si factura a otro autónomo o una empresa debe incluir en la factura dos impuestos, la retención del IRPF, que es negativa, que lo más habitual es que sea del -15%, y luego como siempre el 21% de IVA.

Con el IVA no hay ningún problema, incluso la instalación de WooCommerce te lo configura él solito solo con poner como país España, pero intenta añadir un impuesto negativo como nueva tasa, simplemente no deja, lo toma como positivo.

Tampoco valen los plugins de facturación para WooCommerce, pues aunque hay algunos como Sliced Invoices, genial por otra parte, que te permite añadir un campo adicional llamado «Ajuste«, este se incorpora en forma de descuento en las líneas de artículos de la factura.

Pero esto, como ya sabrás, no sirve en la legislación española, que indica claramente que el IRPF debe aplicarse después del subtotal de los precios, al ser una retención, no algo relativo a los productos.

Es una petición habitual de mucha gente en varios foros, en la página de soporte de WooCommerce, y en más sitios, pero tiene fácil solución.

El truco: la sobretasa de WooCommerce

Y la solución pasa por añadir lo que se denomina una sobretasa. Es una solución que está disponible en la documentación de la API de WooCommerce.

El truco es simplemente añadir lo que se denomina un surcharge, una sobretasa, en nuestro caso negativa, que se aplicará al final de los impuestos, después del subtotal y antes del total del cargo y, más importante, de la factura.

El código de ejemplo, disponible en la API de WooCommerce es este:

/**
 * Add a 1% surcharge to your cart / checkout
 * change the $percentage to set the surcharge to a value to suit
 * Uses the WooCommerce fees API
 *
 * Add to theme functions.php
 */
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
  global $woocommerce;

	if ( is_admin() && ! defined( 'DOING_AJAX' ) )
		return;

	$percentage = 0.01;
	$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;	
	$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );

}

Añadiendo la retención de IRPF a WooCommerce

Con lo que personalizarlo para que lo podamos usar para restar el 15% de IRPF en WooCommerce sería así:

/**
 * Resta un 15% de sobretasa al carrito y página de pago
 * cambia el $percentage para poner la sobretasa al valor que necesites
 * Usa la API de fees de WooCommerce
 *
 * Añadelo al archivo functions.php de tu tema
 */
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
  global $woocommerce;

	if ( is_admin() && ! defined( 'DOING_AJAX' ) )
		return;

	$percentage = -0.15;
	$surcharge = ( $woocommerce->cart->cart_contents_total) * $percentage;	
	$woocommerce->cart->add_fee( '-15% IRPF', $surcharge, true, '' );

}
}

Como ves, en el código simplemente cambiamos el $percentage  a -0.15 y el valor de add_fee  de Surcharge al texto que queramos que se muestre, en nuestro ejemplo «-15% IRPF«.

Simplemente adapta el código a tus necesidades, a tu retención de IRPF y con el texto que quieras mostrar, y añadelo al archivo functions.php de tu tema o mételo en tu plugin de personalizaciones y ya está.

Y lo mejor de todo es que esta sobretasa negativa, el IRPF, se incorpora no solo en el cálculo de la página de finalizar compra sino también en los correos de pedido y en la factura si usas algún plugin de facturas para WooCommerce.

irpf en pago woocommerce
IRPF al finalizar compra

Extra: Añade una sobretasa por país

Otra posible utilidad de este código es para, por ejemplo, añadir una sobretasa, en este caso positiva, para compradores de otros países, y se haría así:

/**
 * Añade un 10% de sobretasa basado en el país de entrega
 * En la sobretasa también están incluidos gastos de envío, es final
 *
 * Cambia $percentage según tus necesidades
 *
 * Añade los países al array('US'); para incluir más países en la sobretasa
 * http://en.wikipedia.org/wiki/ISO_3166-1#Current_codes for available alpha-2 country codes 
 *
 * Cambia in_array a !in_array para EXCLUIR países $countries del array de la sobretasa
 *
 * Uses the WooCommerce fees API
 * Add to theme functions.php
 */
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
  global $woocommerce;
 
	if ( is_admin() && ! defined( 'DOING_AJAX' ) )
		return;

 	$county 	= array('US');
	$percentage 	= 0.10;

	if ( in_array( $woocommerce->customer->get_shipping_country(), $county ) ) :
		$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;
		$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );
	endif;
 
}

El mismo código es autoexplicativo, simplemente cambia el porcentaje de sobretasa y añade en el array los países a los que se aplique, sencillo.

Espero que esto te solucione este problema que tenemos todos los autónomos con la facturación del IRPF en WooCommerce.

¿Lo prefieres en un plugin?

Si te da mieditis usar códigos aquí te lo dejo como plugin, simplemente descárgalo y lo instalas desde la administración de WordPress como cualquier otro plugin y lo activas.

Añadirá automáticamente la retención del -15% de IRPF a tu carrito, página de finalizar compra, pedidos y facturas de WooCommerce. Si tienes que aplicar otra retención simplemente cambia el parámetro que hemos visto arriba y lo tendrás a tu gusto.

[download id=»83521″]

¡Que lo disfrutes y factures bien!

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(11 votos, promedio: 4.6)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

8 comentarios en “IRPF en WooCommerce”

  1. Buenas noches, le sigo habitualmente y le felicito por el Post, ya que me ha ayudado mucho con algunas dudas de WP, pero me permito comentar en esta entrada, sin entender del todo el funcionamiento completo ni la configuración del plugin informáticamente hablando, pero si por comentar la forma de hacer los cálculos, ya que entiendo, para evitar confundir a la gente y que pueda hacer mal las facturas lo siguiente:

    No se puede generalizar la frase:

    «Todo autónomo sabe que si factura a otro autónomo o una empresa debe incluir en la factura dos impuestos, la retención del IRPF, que es negativa, que lo más habitual es que sea del -15%, y luego como siempre el 21% de IVA.»

    Ya que salvo error, la aplicación de retención en la factura dependerá de si quien realiza la factura está dado de alta o no en un epígrafe profesional, no todos los autónomos tienen que aplicar retención en sus facturas por el hecho de serlos.

    Y del mismo modo, en caso de practicar retención efectivamente se calcula sobre la Base Imponible, pero el IVA también, no se calcula una vez restada la retención como parece ser que se ha realizado en la imagen. Es decir, el importe del IVA es el mismo, haya o no retención en la factura.

    Salvo mejor opinión, si considera esta información errónea y que induce a error borre el comentario

    1. Son dos valores distintos, el uno un impuesto y el otro una retención, siento si las capturas pueden inducir a error, pero todo autónomo que tenga que aplicar el IRPF en sus facturas lo entenderá.

      De todos modos, lo que yo aporto es una solución técnica a una carencia, también técnica, en WooCommerce para su adaptación a nuestra fiscalidad, y en concreto también la mía, que soy autónomo y me toca aplicar la retención del IRPF y sin esto no podría aplicar los impuestos correctamente en una tienda online.

      Gracias por tu aportación

  2. Muchísimas gracias Fernando por tu magnífico post. Me ha salvado de un quebradero de cabeza que llevo durante días sobre cómo solventar el problema del IRPF en Woocommerce. Una pregunta, ¿es posible añadir una línea al código para que sólo añada el IRPF en las facturas emitidas en España?

    ¡Muchas gracias!

  3. Flavia Bernárdez Rodríguez

    Cuidado Fernando, que he comprobado que si usamos este snippet, el IRPF te lo calcula según la base, pero luego al aplicar el IVA, no te lo hace correctamente…

  4. Hola Fernando! Tengo 3 roles creados para clientes profesionales, en 1 le aplico solo el descuento, en otro el descuento y el RE y en otro el descuento y despues la retención del IRPF. Tengo creada una función que aplica en el carrito según el rol los descuentos/impuestos necesarios sobre cada producto. La historia está en que para que el cliente sepa que se le han aplicado unos u otros impuestos, necesitaría agregar un par de lineas (como hace tu función) pero sólo con texto, sin ningún tipo de cálculo. Por ejemplo, si mi cliente es con el rol de autónomo con dto y re que apareciese 2 lineas por encima del total especificándolo……… Algo así:
    DTO 15%
    RE 5.2%
    TOTAL x EUROS
    Como ves no requiero cálculos ni descuentos, simplemente ‘informar’ al cliente profesional de los descuentos-impuestos que le he aplicado al precio del producto.
    Tú codigo de arriba ya veo que agrega 1 linea, pero no se como tengo que modificarlo para que solo me muestre el texto en cuestión, y que sean varias lineas (máximo serán 3 nuevas).
    Te agradezco de antemano si me pudieses ayudar. Un saludo.

  5. Hola a todos. Llevaba días buscando algo así, como todos. Yo me estaba planteando, en lugar de los roles, colocar una checkbox en el formulario de registro de WooCommerce (ya que tengo habilitada la opción de que el cliente se registre para hacer una compra) con un label que diga «Autónomo o empresa». En este caso en el if, en lugar de evaluar el rol, tendríamos que evaluar si el checkbox ha sido marcado o no. ¿Cómo podría hacer eso?
    Según veo por los comentarios hay un problemilla con la aplicación del IRPF. Tendría que aplicarse después del IVA ¿no? En este caso tendríamos que conseguir establecer un orden de precedencia para que la función se aplicara una vez se haya aplicado el IVA. En la condicional también tendríamos que evaluar si el cliente es español o no. Quizá con ifs anidados, preguntando en el primero si es español y si entra en el if dar paso al segundo en el que se evaluaría si está marcada la check box mencionada y ejecutar entonces la función.
    La última duda que tengo es si esto quedaría reflejado en el plugin de facturación «WooCommerce PDF invoices and packing slips».
    Muchas gracias de antemano. Siento mucho no ser más concisa. Me encanta la programación, pero soy una recién llegada a WooCommerce y necesito esto como la que más. Sería estupendo que pudiera indicarme la forma de conseguir esto que tantas vueltas me está haciendo dar.
    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido