Un client peut-il se faire rembourser un e-book téléchargé la veille au prétexte qu’il a changé d’avis ? En droit français comme dans la directive européenne relative aux droits des consommateurs, la réponse dépend d’une case à cocher précise, pas d’une mention vague en bas de page.
Le droit de rétractation de 14 jours s’applique par défaut à toute vente à distance, y compris numérique. Il existe une exception légale pour le contenu numérique non fourni sur support matériel, mais elle n’est valable que si deux conditions techniques sont réunies au moment de la commande : le consentement exprès du consommateur à l’exécution immédiate, et sa renonciation expresse au droit de rétractation. Sans ces deux éléments correctement enregistrés, l’exception ne tient pas.
Distinguer contenu numérique et service numérique
La distinction compte : un e-book ou une licence logicielle téléchargeable relève du contenu numérique, régi par l’article L221-28 13° du Code de la consommation en droit français. Un accès à une plateforme SaaS relève davantage du service numérique, avec des règles de computation du délai légèrement différentes. Sur une boutique WooCommerce vendant des produits numériques via une extension comme WooCommerce Product Vendors ou un système de téléchargement natif, il faut traiter ces deux catégories séparément si elles coexistent dans le même catalogue.
Ce qu’il faut coder avant la mise en ligne
- Une case à cocher, non pré-cochée, associée à un texte explicite de renonciation au droit de rétractation, positionnée juste avant le bouton de validation de commande
- Un blocage de soumission du formulaire de commande tant que la case n’est pas cochée pour les produits numériques concernés
- Un enregistrement horodaté de cet accord dans les métadonnées de la commande, consultable en cas de litige
- Un texte de renonciation distinct des conditions générales de vente, car une case cochant globalement les CGV ne vaut pas renonciation expresse selon la jurisprudence constante sur ce point
- Une vérification que le téléchargement n’est débloqué qu’après validation de cette case, pas avant

Implémenter la case côté WooCommerce
Le hook woocommerce_review_order_before_submit est le point d’accroche classique pour insérer un champ juste avant le bouton de commande :
add_action('woocommerce_review_order_before_submit', function () {
if (!panier_contient_produit_numerique()) {
return;
}
echo '<p class="form-row">'
. '<label><input type="checkbox" name="renonciation_retractation" /> '
. 'Je demande l\'exécution immédiate et je renonce expressément '
. 'à mon droit de rétractation.</label></p>';
});
add_action('woocommerce_checkout_process', function () {
if (panier_contient_produit_numerique()
&& empty($_POST['renonciation_retractation'])) {
wc_add_notice(
'Merci de confirmer votre renonciation au droit de rétractation.',
'error'
);
}
});
La fonction panier_contient_produit_numerique() reste à écrire selon la structure du catalogue, par exemple en testant une catégorie de produit ou un champ personnalisé marquant les produits téléchargeables.
Conserver la preuve en cas de litige
L’accord doit être conservé, pas seulement collecté. Le hook woocommerce_checkout_update_order_meta permet d’attacher l’information à la commande avec un horodatage exact, exploitable des mois plus tard si un client conteste un refus de remboursement :
add_action('woocommerce_checkout_update_order_meta', function ($order_id) {
if (!empty($_POST['renonciation_retractation'])) {
update_post_meta(
$order_id,
'_renonciation_retractation_horodatage',
current_time('mysql')
);
}
});
En résumé
L’exception au droit de rétractation sur les biens numériques n’est pas automatique : elle se gagne case par case, au sens propre. Une case à cocher explicite, un blocage de commande tant qu’elle n’est pas validée, et un enregistrement horodaté de l’accord constituent le socle minimal pour qu’une boutique WooCommerce vendant du contenu numérique tienne la route en cas de contrôle ou de litige client.