Skip to main content
Tous les événements ci-dessous sont livrés sur vos endpoints webhook habituels (voir Webhooks : vue d’ensemble pour la configuration, les en-têtes et la vérification de signature). Abonnez-vous aux noms tels quels.

Le corps livré

Les champs de data sont en camelCase (subscriptionId, currentPeriodEnd), l’enveloppe en snake_case (created_at). Ne présumez pas d’une convention unique.

Événements d’abonnement

Lisez data.status, jamais le seul nom de l’événement. subscription.canceled avec status: "active" veut dire « départ programmé, droits maintenus ». subscription.created avec status: "unpaid" veut dire « le premier paiement n’a pas abouti ».

Événements de facture et de paiement

invoice.paid et payment.completed sont livrés au moins une fois : sur un renouvellement réussi, les deux peuvent arriver deux fois. Dédupliquez sur data.invoiceId / data.orderId.

Ce qui n’est pas émis

Pour ne pas attendre un événement qui ne viendra pas :
  • checkout.session.completed en mode subscription : n’existe que pour les paiements ponctuels. Écoutez subscription.created.
  • invoice.created : jamais émis. La première trace d’une facture est invoice.finalized.
  • invoice.overdue : réservé aux factures manuelles, jamais aux factures d’abonnement.
  • Rien à la fin d’un essai ni sur un changement de quantité. Pour l’essai, surveillez invoice.finalized puis invoice.paid.

Un parcours type