← Toutes les notes

Mai 2026

Stripe en production : des webhooks idempotents

Le paiement réussit côté Stripe, mais votre base ne le sait pas toujours. La fiabilité tient à l'idempotence des webhooks, pas au flux nominal.

Intégrer Stripe pour un cas passant prend une heure. Le rendre fiable en production prend le reste. Le vrai sujet n'est pas la page de paiement, c'est la réconciliation.

Pourquoi le webhook est la source de vérité

Le retour navigateur après paiement n'est pas fiable : l'utilisateur ferme l'onglet, le réseau coupe. Seul le webhook serveur confirme l'état. C'est lui qui doit déclencher l'activation, jamais la redirection front.

Stripe peut envoyer le même événement plusieurs fois. Sans garde-fou, on crédite deux fois ou on envoie deux emails. La parade : stocker l'identifiant d'événement et traiter chaque événement une seule fois.

Réconcilier, pas faire confiance

On vérifie la signature du webhook, on rend le traitement idempotent, et on gère les états intermédiaires : paiement en attente, échec, remboursement. Un cron de réconciliation rattrape les événements manqués.

Un système de paiement se juge sur ses cas limites. C'est là que se logent les litiges, pas dans le parcours heureux.