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 hay ninguna norma española publicada que la incorpore. Cuando se apruebe, 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”
Hay un texto en tramitación. El 14 de septiembre de 2026, la Comisión Nacional de los Mercados y la Competencia emitió su informe IPN/CNMC/037/26 sobre el anteproyecto de ley de contratos de crédito al consumo y de modificación del texto refundido, que le había remitido el Ministerio de Economía, Comercio y Empresa y que la CNMC recibió el 4 de agosto. Según el informe, el anteproyecto transpone la Directiva 2023/2673 y modifica el texto refundido para, entre otras cosas, “regular las funciones de desistimiento en interfaces digitales” (CNMC, IPN/CNMC/037/26). Sigue siendo un anteproyecto, y mientras no se publique en el BOE no obliga a ninguna tienda. El informe tampoco reproduce la redacción del futuro artículo, así que no sabemos qué etiqueta exigirá la versión española.
Fuera de España hemos comprobado en la fuente un país. Alemania ya la ha incorporado en el artículo 356a del BGB, con las etiquetas “Vertrag widerrufen” y “Widerruf bestätigen”. En otro país, a tu tienda la obliga la ley con la que ese país transpone la directiva, que llega a tus contratos por las reglas de ley aplicable que explicamos más abajo. 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
Actualización, . Polski for WooCommerce 1.44.0 (changelog) añade dos casillas en el checkout clásico y de bloques. Services (request to start early) aparece cuando el carrito tiene un producto en una categoría marcada con exclusión de servicio del desistimiento (patrón del art. 16 de la Directiva 2011/83/UE / TRLGDCU): la respuesta se guarda en el pedido, y el servicio solo pierde el desistimiento cuando la solicitud está en el pedido y este está completado. Age confirmation (18+) aparece en productos Adults only (18+); la confirmación, la edad mínima y una nota de pedido se guardan. Para tiendas ES el mismo patrón va en la capa de cumplimiento UE (Shoplex / Withdraw).

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 desarrollé en WPPoland y publiqué en el directorio de WordPress.org, versión 1.10.1. 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 de los bienes 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.
Actualización del . Withdraw 1.8.0 cuenta el plazo de desistimiento según el artículo 3 del Reglamento 1182/71: el día de inicio no se cuenta, el plazo termina a medianoche de su último día, y si ese día cae en sábado o domingo pasa al lunes siguiente. Los plazos solo se alargan, nunca se acortan. Para usar la fecha real de entrega, el filtro withdraw/delivery_date sustituye a “completado” como inicio, un ajuste de días de gracia suma días y un modo informativo acepta una declaración tardía y la marca en el registro y en la nota del pedido. Tras un desistimiento parcial, el resto del pedido sigue pudiendo desistirse: las unidades cubiertas por una declaración pendiente, aceptada o procesada ya no se ofrecen, y una rechazada libera las suyas. Puedes marcar productos y categorías para las excepciones del artículo 16, letras c, d y e, con un aviso en la ficha de producto, y la marca se guarda en cada línea del pedido al pagar, de modo que un cambio posterior no altera el derecho en pedidos ya hechos. Es plugin propio, gratuito en el directorio de WordPress.org.
Actualización, . Withdraw 1.8.1 muestra un hash de verificación SHA-256 del acuse (Directiva 2011/83/UE art. 11 bis, apdo. 4) en la pantalla de confirmación, lo incluye en el acuse al cliente y en el registro de solicitudes, y exporta el registro a CSV con filtros de estado/fecha y protección frente a inyección de fórmulas en hojas de cálculo. La lista de pedidos de WooCommerce añade una columna con el estado del desistimiento, enlace directo al registro y aviso de presentación tardía (registro de cambios).
Actualización del . Withdraw 1.11.0, mi propio plugin para WooCommerce, envía ahora un acuse de recibo también cuando una declaración de desistimiento no coincide con ningún pedido. Activas Accept declarations that match no order y el cliente que escribió un número de pedido equivocado u otro correo recibe igualmente confirmación (Directiva 2011/83/UE, anexo I, parte A, instrucción de cumplimentación 3). La dirección no está verificada, así que el correo indica solo que llegó una declaración, cuándo, y su código de recepción, sin número de pedido, bienes ni motivo. Para tu tienda, ninguna declaración queda sin respuesta.
Actualización, . Withdraw 1.9.0 y 1.10.0 distinguen bienes de servicios. Un pedido con solo productos virtuales (servicios, contenido digital) cuenta el plazo de desistimiento desde la fecha del pedido, el día de la celebración del contrato (artículo 9.2 a) y c) de la Directiva 2011/83/UE). Un pedido con al menos un artículo físico sigue contando desde la entrega. El nuevo ajuste Your contracts are for (bienes, servicios, contenido digital) adapta las instrucciones tipo y el formulario tipo de desistimiento: para servicios y contenido digital las instrucciones cuentan desde la celebración del contrato y omiten los párrafos sobre la devolución de los bienes, y los servicios añaden el párrafo sobre el pago de lo prestado hasta el desistimiento y la versión del formulario para servicios (anexo I, partes A y B). Los bienes, el valor por defecto, funcionan como antes (registro de cambios).
Actualización del . Desde la versión 1.0.18, Redono Pro, mi plugin de devoluciones para WooCommerce, trabaja con Withdraw. Una declaración de desistimiento registrada por Withdraw abre una solicitud de devolución que hace referencia a esa declaración, y el reembolso sale solo de esa solicitud (registro de cambios). La tienda tiene así un único rastro desde la declaración hasta el reembolso y no paga dos veces cuando el cliente además manda un correo o abre una segunda solicitud.
Actualización del . Casi todas las trampas están en la fecha desde la que se cuenta el plazo. En la venta de bienes, el plazo de desistimiento termina a los catorce días naturales contados desde el día en que el consumidor adquiere la posesión material de los bienes (artículo 104 b) del TRLGDCU, que traslada el artículo 9.2 b) de la Directiva 2011/83/UE), y la función de desistimiento debe estar disponible de forma continua durante todo ese plazo (artículo 11 bis, apartado 1). Una tienda que cuente 14 días desde la fecha del pedido le quita el botón a un cliente cuyo paquete aún está en camino, por ejemplo en una preventa o con un envío lento. Nuestro plugin de cumplimiento europeo Shoplex cuenta los 14 días desde que se completa el pedido en sus mensajes. Withdraw muestra la acción en Mi cuenta y el enlace en los correos del pedido solo mientras corre el plazo, y no imprime ningún enlace mientras la página del formulario no esté publicada. Nuestro plugin para tiendas polacas, Polski for WooCommerce, ofrece el botón desde la celebración del contrato (pedido en proceso o en espera) hasta 14 días después de completarse y muestra en la declaración el nombre del cliente y el correo de la confirmación, como exige el artículo 11 bis, apartado 2. El estado “completado” sustituye a la fecha de entrega, así que márcalo después de la entrega y no al enviar el paquete. Una prueba te muestra cómo cuenta tu tienda: deja un pedido de prueba en proceso más de 14 días y comprueba si el botón sigue visible.
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 mi 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 mis servicios de desarrollo WooCommerce.







