← Blog

E-commerce & paiement

Paiement Stripe refusé sur WooCommerce : les causes réelles à vérifier

Par l’équipe technique HelpApp Pro12 août 20264 min de lecture
Partager
Illustration : Paiement Stripe refusé sur WooCommerce : les causes réelles à vérifier

Un client signale que sa carte est refusée alors qu'elle marche ailleurs. Avant d'accuser Stripe, voici les causes concrètes côté WooCommerce, de la plus fréquente à la plus sournoise.

« Votre paiement a été refusé. » Le message tombe côté client, la vente est perdue, et vous ne voyez rien dans le back-office. Réponse directe : dans la majorité des cas, la carte n'est pas en cause — c'est la configuration WooCommerce ou un conflit local. Les suspects, dans l'ordre : clés en mode test, webhook non configuré, 3D Secure/SCA non déclenché, conflit de plugin sur le checkout, devise/montant non supportés, ou compte Stripe en vérification. Voici comment les écarter un par un.

Comment lire l'erreur brute de Stripe ?

Avant de deviner, lisez la vraie erreur. WooCommerce → État → Logs, fichier woocommerce-gateway-stripe : le message brut de Stripe y figure et désigne presque toujours la cause. Un exemple parlant :

Stripe error: No such payment_intent; a similar object exists in test mode,
but a live mode key was used to make this request.

Ce message précis pointe directement le suspect n°1 : un mélange clés test / production.

Pourquoi les clés « test » bloquent-elles les vraies cartes ?

Les clés Stripe existent en deux jeux : test (pk_test_…, sk_test_…) et production (pk_live_…, sk_live_…). Une boutique mise en ligne avec les clés de test refuse toute vraie carte ; à l'inverse, tester avec de vraies clés facture pour de bon. Vérifiez dans WooCommerce → Réglages → Paiements → Stripe que le mode et le jeu de clés correspondent.

Le webhook est-il bien configuré ?

WooCommerce confirme la commande quand Stripe lui envoie payment_intent.succeeded sur une URL de webhook. Si ce webhook n'est pas déclaré (ou pointe vers une ancienne URL, ou son secret de signature est faux), le paiement passe côté banque mais la commande reste « en attente » — et le client voit un échec. Vérifiez l'URL et le secret dans Stripe → Développeurs → Webhooks.

Les autres suspects : SCA, plugins, devise, compte

  1. 3D Secure / SCA : depuis la DSP2, la plupart des paiements exigent une authentification forte. Une intégration restée sur l'ancienne API Charges (au lieu des Payment Intents) ne déclenche pas l'étape et la banque refuse. Fréquent quand l'extension Stripe n'a pas été mise à jour.
  2. Conflit de plugin : cache agressif, optimiseur JS qui minifie le script Stripe, extension de champs qui intercepte le formulaire. Test : désactivez cache + optimisations JS, retentez une commande.
  3. Devise / montant : Stripe rejette certaines combinaisons devise / moyen de paiement et les montants sous 0,50 €.
  4. Compte en vérification : un compte récent ou signalé peut voir ses paiements bloqués jusqu'à validation des documents (rien à corriger dans le code).

Checklist de diagnostic

  • [ ] Log woocommerce-gateway-stripe lu (message brut de Stripe)
  • [ ] Mode (test/live) et jeu de clés cohérents
  • [ ] Webhook payment_intent.succeeded déclaré, bonne URL, bon secret
  • [ ] Intégration en Payment Intents (SCA/3D Secure actif)
  • [ ] Cache + optimisation JS désactivés pour tester le checkout
  • [ ] Devise et montant supportés par le compte
  • [ ] Compte Stripe vérifié (pas de blocage tableau de bord)

Questions fréquentes

Pourquoi un paiement Stripe passe mais la commande reste « en attente » ?

Parce que le webhook ne remonte pas : la banque a bien débité, mais WooCommerce n'a jamais reçu l'événement payment_intent.succeeded qui fait passer la commande en payée. Vérifiez la déclaration du webhook et son secret dans le tableau de bord Stripe.

Comment tester un paiement sans débiter une vraie carte ?

En mode test avec les cartes de test Stripe (par exemple 4242 4242 4242 4242). Attention à repasser en clés de production avant la mise en ligne — l'oubli est la cause n°1 des « toutes les cartes sont refusées ».

« Your card was declined » vient-il toujours de la banque ?

Non. Ce message générique peut venir d'un 3D Secure non déclenché, d'un montant sous le minimum, ou d'une devise non supportée. Le log Stripe côté WooCommerce donne la raison réelle, bien plus précise que le message affiché au client.

Faut-il mettre à jour l'extension Stripe ?

Souvent oui : les intégrations anciennes utilisent l'API Charges, incompatible avec l'authentification forte SCA. Passer à une version qui utilise les Payment Intents résout une grande partie des refus en Europe.

Quand faire appel à HelpApp Pro

Quand le tunnel est cassé en production, chaque heure compte. HelpApp Pro teste le parcours d'achat de bout en bout, isole l'étape défaillante et la corrige — souvent en une intervention ciblée, sans refondre la boutique. Décrivez le symptôme via le devis en ligne, ou passez en urgence si les ventes sont à l'arrêt.

Cet article vous a été utile ?

Partager

Besoin d'une intervention ciblée ?

Décrivez le blocage — devis sans engagement, ou rappel sous 2 h ouvrées. Supplément urgence possible.

À lire aussi