Desde el 19 de junio de 2026, el derecho de la Unión espera que cada tienda online que vende a consumidores les ofrezca una función para desistir de la compra tan fácilmente como la hicieron. La regla es el artículo 11 bis de la Directiva 2011/83/UE sobre los derechos de los consumidores, añadido por la Directiva (UE) 2023/2673. En España, la versión consolidada del texto refundido de la Ley General para la Defensa de los Consumidores y Usuarios que publica el BOE todavía no la recoge. Aquí tienes qué exige el artículo 11 bis, qué dice hoy la ley española, cuándo te obliga igualmente si vendes a otros países y cómo montarlo en WooCommerce, Shopify o una tienda a medida.
Este artículo describe la normativa y el estado de la transposición en la fecha de publicación. No es asesoramiento jurídico para tu tienda.
Qué es el botón de desistimiento
La Directiva (UE) 2023/2673, de 22 de noviembre de 2023 (EUR-Lex), trata sobre todo de servicios financieros contratados a distancia, y por eso muchas tiendas no la vieron venir. Su artículo 1, punto 3, añade sin embargo a la directiva general de derechos de los consumidores un artículo 11 bis que cubre todos los contratos a distancia celebrados mediante una interfaz en línea en los que existe derecho de desistimiento. El considerando 37 lo dice sin rodeos: la obligación se extiende también a otros bienes y servicios, para que el consumidor pueda salir del contrato con la misma facilidad con la que lo celebró.
El calendario está en el artículo 2:
| Paso | Fecha | Disposición |
|---|---|---|
| Adopción y publicación de las medidas nacionales | hasta el 19 de diciembre de 2025 | art. 2, apartado 1 |
| Aplicación de las medidas nacionales | desde el 19 de junio de 2026 | art. 2, apartado 1 |
| Informe de la Comisión, incluida la función de desistimiento | hasta el 31 de julio de 2030 | art. 2, apartado 3 |
La directiva habla de una “función”, no de un botón. Vale un botón, un enlace u otro control, siempre que lleve la etiqueta exigida.
Qué exige el artículo 11 bis, apartado por apartado
Cinco apartados, cada uno convertido en comportamiento de la tienda, con la redacción oficial española del Diario Oficial de la UE:
| Apartado | Requisito | Qué significa en tu tienda |
|---|---|---|
| ap. 1 | Función etiquetada con “desistir del contrato aquí” o una formulación inequívoca equivalente, fácilmente legible | botón o enlace con ese texto, no “Ayuda” ni “Devoluciones” |
| ap. 1 | Disponible de forma permanente durante todo el plazo, mostrada de manera destacada, fácilmente accesible | visible desde el pedido hasta el fin del plazo, no escondida en las condiciones |
| ap. 2 | La declaración en línea permite proporcionar o confirmar el nombre, los datos del contrato y el medio electrónico para la confirmación | formulario con número de pedido y correo, ya rellenado si el cliente ha iniciado sesión |
| ap. 3 | Presentación mediante una función de confirmación etiquetada únicamente con “confirmar desistimiento” o una formulación inequívoca equivalente | segundo paso con botón propio; antes no se envía nada |
| ap. 4 | Acuse de recibo en soporte duradero, sin demora indebida, con el contenido y la fecha y hora de presentación | correo automático que repite la declaración con marca de tiempo |
| ap. 5 | El desistimiento se considera ejercido en plazo si la declaración se presentó antes de que expirase | cuenta el momento del clic, no cuando el equipo lee la solicitud |
El considerando 37 añade pistas de interpretación. El consumidor no debe tener que hacer trámites para encontrar la función, por ejemplo descargar una aplicación si no contrató en ella. El comerciante puede llevar hasta la función mediante hipervínculos. Quien ya se ha identificado, por ejemplo al iniciar sesión, no debería tener que identificarse otra vez. Si el pedido tiene varios artículos, la tienda puede permitir desistir de una parte. El paso de confirmación está para evitar desistimientos involuntarios.
Dos detalles se pierden a menudo. La etiqueta: “Devolver producto” describe la consecuencia del desistimiento, la devolución física, no la declaración. Y el apartado 5 convierte el momento de la presentación en un dato con efectos jurídicos, así que hay que registrarlo en el servidor en el instante del clic, aunque el correo salga después desde una cola.
Cómo está el botón de desistimiento en la ley española
El desistimiento en contratos a distancia está regulado en el texto refundido de la Ley General para la Defensa de los Consumidores y Usuarios, aprobado por el Real Decreto Legislativo 1/2007 (BOE, versión consolidada). Su artículo 106, “Ejercicio y efectos del derecho de desistimiento”, dice que el consumidor comunicará su decisión antes de que venza el plazo, con el modelo de formulario del anexo B o con otra declaración inequívoca, y que el desistimiento está en plazo si envió la comunicación antes de que terminara.
No hay más. A 24 de octubre de 2026, la versión consolidada del BOE, con última actualización publicada el 28 de febrero de 2026, no contiene una función de desistimiento, la etiqueta “desistir del contrato aquí” ni una referencia a la Directiva 2023/2673. No hemos encontrado una norma española posterior que la incorpore. Si se aprobara, el BOE la reflejaría en la versión consolidada del texto refundido, que es el lugar donde conviene comprobarlo antes de fijar tu calendario.
La Organización de Consumidores y Usuarios llegó a la misma conclusión el día en que la directiva empezó a aplicarse. En su nota de prensa del 19 de junio de 2026, la OCU lamentaba que:
“España no haya incorporado aún a su ordenamiento jurídico la Directiva (UE) 2023/2673”
Hemos comprobado en la fuente otros dos países. Alemania la ha incorporado en el artículo 356a del BGB, con las etiquetas “Vertrag widerrufen” y “Widerruf bestätigen”. Polonia no: el texto consolidado de su ley de derechos del consumidor, de 4 de septiembre de 2026 (Dz.U. 2026 poz. 1244), no la recoge. No citamos países que no hemos verificado.
Qué tiendas tienen que ofrecer la función
El artículo 11 bis se aplica a los contratos a distancia celebrados “mediante una interfaz en línea”: webs, tiendas, aplicaciones. La plataforma da igual. Una tienda WooCommerce, una Shopify, PrestaShop, Magento, un escaparate headless en Astro o Next.js y una app móvil están igual de afectados. El límite lo marca el propio derecho de desistimiento.
- Las ventas a empresas quedan fuera, porque la directiva protege a consumidores. Una tienda que vende a ambos necesita la función para los pedidos de consumidores.
- Las excepciones del artículo 16 de la Directiva 2011/83/UE (EUR-Lex), en España el artículo 103 del texto refundido, siguen vigentes: bienes confeccionados conforme a las especificaciones del consumidor o claramente personalizados, bienes que se deterioran con rapidez, bienes precintados desprecintados tras la entrega que no se pueden devolver por motivos de higiene, contenido digital cuando la ejecución empezó con el consentimiento expreso del consumidor, y otras.
- Los catálogos mixtos necesitan la función, pero pueden dejar fuera de la selección los artículos exceptuados.
- Suscripciones y servicios digitales contratados en línea están cubiertos durante el plazo de desistimiento. La baja de una suscripción después de ese plazo es otro asunto, que el artículo 11 bis no regula.
Vender a otros países de la UE: cuándo el botón ya te obliga
Que España no haya transpuesto todavía no protege a una tienda que vende a consumidores de un país que sí lo ha hecho. El artículo 6 del Reglamento Roma I (CE) n.º 593/2008 (EUR-Lex) decide qué ley rige un contrato de consumo. Si el profesional ejerce sus actividades en el país de residencia habitual del consumidor o, “por cualquier medio”, las dirige a ese país, el contrato se rige por la ley de ese país (apartado 1, letra b). Las partes pueden elegir otra ley, pero esa elección no puede privar al consumidor de la protección de las normas que no pueden excluirse mediante acuerdo (apartado 2).
Dirigir la actividad a un país se valora en conjunto: idioma, moneda, envíos a ese país, dominio nacional, publicidad orientada a ese mercado. Una tienda española con versión alemana y envíos a Alemania difícilmente puede decir que no se dirige allí, y el artículo 356a del BGB se aplica a sus contratos con consumidores alemanes, diga lo que diga la cláusula de ley aplicable.
La respuesta práctica más sencilla es una sola función para todos los mercados, con etiquetas traducidas. Construirla una vez cuesta lo mismo, y no tendrás que rehacer nada cuando España apruebe su norma.
Qué pasa si tu tienda no tiene botón de desistimiento
Las sanciones las fija cada país, así que depende del país del consumidor. En Alemania, el artículo 246e, § 1, apartado 2, número 14a, de la ley de introducción al BGB (EGBGB) incluye la falta de la función entre las infracciones prohibidas de los intereses de los consumidores cuando la infracción es generalizada, y el § 2 la sanciona con multa. En España, mientras no haya norma, no hay precepto específico que incumplir.
Hay una consecuencia que sale de la propia directiva. El artículo 6, apartado 1, letra h), de la Directiva 2011/83/UE, en su redacción modificada, exige que la información precontractual incluya, “cuando proceda”, la existencia y ubicación de la función de desistimiento. El artículo 10 alarga el plazo de desistimiento 12 meses si el comerciante no ha facilitado la información de la letra h). En España, el equivalente es el artículo 105 del texto refundido. Si un tribunal aplicará esa ampliación a una tienda que nunca mencionó la función, el texto no lo resuelve. Incluir esa información cuesta una frase en tus condiciones.
Por eso conviene actualizar la información sobre desistimiento de tus condiciones a la vez que el botón: una frase que diga que el consumidor puede desistir en línea, con enlace a la función.
Cómo añadir el botón de desistimiento en WooCommerce
En WooCommerce tienes tres caminos: la función integrada desde la versión 11.1, un plugin o código propio. Todos tienen que responder a lo mismo: dónde ve el cliente el botón, si los compradores sin cuenta lo encuentran, qué se guarda y qué correo sale.
Función integrada. WooCommerce 11.1, publicado el 3 de septiembre de 2026 (GitHub), añadió Order withdrawal. Según la documentación de WooCommerce y el código de la versión 11.2.1, que hemos leído:
- viene desactivada por defecto y se activa en WooCommerce > Settings > Advanced > Features (ruta de la interfaz en inglés),
- el formulario funciona sin iniciar sesión en /my-account/withdraw-order/, y la dirección se puede cambiar en Advanced > Page setup,
- pide nombre, apellidos, correo dos veces y número de pedido, y si se desiste del pedido completo o de artículos concretos (descritos en texto libre),
- un paso de revisión lleva el botón “Confirm withdrawal”, y el cliente recibe un acuse con los datos y la fecha y hora,
- una solicitud que coincide con un pedido añade una nota al pedido y un aviso en la bandeja de entrada; cada pedido admite una solicitud, y los reintentos se limitan a uno cada 30 segundos por correo e IP,
- el aviso de 14 días cuenta desde la creación del pedido, porque WooCommerce no conoce la fecha de entrega, y es solo informativo para el comerciante.
Lo que no hace: no coloca ningún enlace. En el código de la 11.2.1 no hay entrada en el menú de Mi cuenta, ni botón junto al pedido, ni enlace en los correos o en el pie. Sin eso el formulario existe, pero el cliente no lo encuentra, y el artículo 11 bis, apartado 1, exige que la función se muestre de manera destacada. La etiqueta “desistir del contrato aquí” y los puntos de entrada son trabajo tuyo, igual que traducir el botón de confirmación a “confirmar desistimiento”.
Plugin. Una opción es Withdraw, un plugin para WooCommerce que desarrollamos en WPPoland y publicamos en el directorio de WordPress.org, versión 1.7.0. Según su descripción, añade un botón Withdraw from contract here bajo los detalles del pedido y en la lista de pedidos de Mi cuenta, mete el enlace en los correos de pedido en proceso y completado, permite desistir de cantidades concretas de cada artículo, cuenta el plazo desde que el pedido se completa y lleva un registro de solicitudes con estados en el que rechazar exige indicar el motivo. No mueve dinero: el reembolso sigue en la pantalla normal del pedido. La imagen de este artículo es una captura de la lista de pedidos de Mi cuenta con el plugin.
Código propio tiene sentido con procesos de devolución especiales, reembolsos gestionados por un ERP o tiendas headless. Entonces la tabla de arriba es tu especificación.
Sea cual sea el camino, el punto de entrada va en cuatro sitios:
| Ubicación | Para quién | Notas |
|---|---|---|
| Lista y detalle de pedidos en Mi cuenta | clientes con cuenta | ocultar al acabar el plazo |
| Correo de confirmación y correo de envío o pedido completado | todos, también sin cuenta | enlace con la referencia del pedido, sin obligar a iniciar sesión |
| Pie de la tienda | compradores sin cuenta que perdieron el correo | formulario con búsqueda por número y correo |
| Información sobre desistimiento en las condiciones | todos | existencia y ubicación de la función |
Los compradores sin cuenta son el punto débil. La función integrada y Withdraw los atienden con número de pedido y correo. Un formulario que exige cuenta obligaría a registrarse a quien compró como invitado, y eso encaja mal con el considerando 37.
Botón de desistimiento en Shopify
Shopify trata el tema en dos páginas de ayuda. La del derecho de desistimiento en la UE resume la directiva: un botón o enlace fácil de encontrar, por ejemplo desde la cuenta del cliente o la página de estado del pedido, confirmación en dos pasos y confirmación automática en soporte duradero. La de reglas de devolución da la configuración:
- activa las devoluciones y cancelaciones de autoservicio, con solicitudes de devolución y de cancelación,
- pon la ventana de cancelación en Until item is fulfilled, para que el cliente pueda cancelar antes del envío,
- pon la ventana de devolución en al menos 14 días desde la entrega del último artículo y amplíala en fines de semana y festivos,
- añade un enlace visible a las cuentas de cliente, o un elemento de menú a la página de pedidos, por mercado si usas menús por mercado.
El propio Shopify advierte que estas herramientas no hacen la tienda conforme por sí solas. El elemento de menú admite cualquier nombre, así que llámalo “desistir del contrato aquí” y no “Mis pedidos”. Las cuentas de cliente de Shopify piden iniciar sesión con un código por correo; valora si eso es un trámite adicional para quien compró sin cuenta y plantéate una página de formulario propia sin inicio de sesión.
Tiendas headless y a medida: qué debe guardar el backend
En Astro, Next.js o un framework propio, todo lo anterior lo construyes tú. Un registro mínimo para poder demostrar el cumplimiento de los apartados 4 y 5:
- identificador del pedido y, si el desistimiento es parcial, los artículos y cantidades,
- nombre y la dirección de correo a la que fue el acuse,
- el texto exacto de la declaración que el cliente vio en el paso de confirmación, guardado al enviarse y no reconstruido después desde una plantilla,
- marca de tiempo del servidor en UTC, mostrada en hora peninsular (o canaria, si es tu caso) en el correo,
- el identificador del mensaje y el estado de entrega de tu proveedor de correo.
El último punto ata el cumplimiento a la entrega del correo. El soporte duradero suele ser un correo, y una tienda cuyos correos acaban en spam o ni siquiera salen incumple el apartado 4 aunque el formulario funcione. Cómo comprobarlo en WordPress lo explicamos en la guía de SMTP.
Un formulario público es además una superficie de ataque: quien conozca un número de pedido y un correo puede desistir en nombre de otro o ver qué compró. Limitar intentos, responder igual a pedidos existentes e inexistentes y mostrar los artículos solo tras verificar es un mínimo razonable. Withdraw incluye para esto un enlace de un solo uso opcional enviado al correo del pedido, desactivado por defecto porque hace depender el desistimiento de que el correo funcione.
Cómo probar el botón antes de publicarlo
Prueba en un entorno de staging, con un pedido ficticio y un buzón que controles. La documentación de WooCommerce propone un procedimiento parecido para su función integrada.
- Abre la tienda en una ventana privada, sin sesión. Llega a la función desde la portada en dos clics o menos.
- Haz un pedido como invitado. Comprueba que el correo de confirmación enlaza a la función.
- Rellena el formulario. Comprueba que el segundo paso tiene su propio botón “confirmar desistimiento” y que no se ha enviado nada antes del clic.
- Confirma. Comprueba que el acuse llega al momento, repite la declaración completa con fecha y hora y no cae en spam.
- En el panel, comprueba que la solicitud está asociada al pedido y que el estado del pago no ha cambiado.
- Envía una solicitud con un número de pedido inexistente. Comprueba que se acepta y se marca para revisión manual.
- Mueve la fecha de finalización de un pedido de prueba más allá del plazo. Comprueba que el botón desaparece de la cuenta.
- Usa el formulario solo con teclado y lector de pantalla. Las obligaciones de accesibilidad de una tienda están en nuestro artículo sobre WCAG 2.2 y EAA.
Tras publicar, comprueba que los scripts de analítica no se cargan en la página del formulario sin consentimiento. Los fallos habituales de los banners de consentimiento están en nuestro artículo sobre el seguimiento que sigue cargando tras el rechazo.
Por dónde empezar en tu tienda
Empieza por la lista de mercados: a qué países diriges tu oferta para consumidores y cuáles han transpuesto el artículo 11 bis. Después elige el camino técnico y las ubicaciones de la tabla, actualiza la información sobre desistimiento de tus condiciones y pasa la lista de pruebas. El orden importa, porque la lista de mercados decide si el botón es urgente hoy o cuando España apruebe su norma.
Si quieres una revisión de tu tienda frente a esta y otras obligaciones europeas (accesibilidad, consentimiento, GPSR, precios Omnibus), es lo que cubre nuestra auditoría de cumplimiento UE para WordPress. La implementación en WooCommerce, de la función integrada a la conexión de reembolsos con un ERP, forma parte de nuestros servicios de desarrollo WooCommerce.







