Fonctionnement des abonnements
Gérez les paiements récurrents et le cycle de vie des abonnements.
Les abonnements permettent aux clients d’effectuer des paiements récurrents pour accéder à un produit ou à un service. Lorsque vous créez un abonnement, Stripe génère automatiquement des factures, tente l’encaissement des paiements et gère l’état de l’abonnement tout au long de son cycle de vie. Un abonnement passe par un ensemble d’états prévisibles, de la création à l’annulation.
Contrairement aux paiements ponctuels, les abonnements nécessitent d’enregistrer les informations du client et du moyen de paiement pour les cycles de facturation futurs. Stripe gère la logique de nouvelle tentative de paiement, la relance et les transitions d’état.
Le cycle de vie d’un abonnement
Chacune des phases suivantes du cycle de vie de l’abonnement correspond à un changement d’état sur l’objet Subscription. Comprendre ces états vous permet de savoir quand fournir un accès, informer les clients et gérer les erreurs. Vous pouvez utiliser des événements de webhook pour surveiller et gérer les transitions entre chaque état.
Créer l’abonnement
Créez un nouvel abonnement dans le Dashboard ou avec l’API Subscriptions. L’objet Subscription qui en résulte contient le client abonné, le product, le price et le status reflétant l’état actuel du cycle de vie de l’abonnement.
Lorsque vous créez un abonnement qui nécessite un paiement immédiat, Stripe crée également un Invoice et un PaymentIntent. L’état initial de l’abonnement est incomplete, puis devient active après que le client a payé la première facture.
La gestion par défaut des échecs et de l’encaissement du paiement des abonnements dépend du moyen de paiement. Dans l’API, vous pouvez configurer le paramètre payment_behavior d’un abonnement pour en modifier le comportement par défaut.
Si vous créez une période d’essai pour retarder le premier paiement de l’abonnement, l’état initial est trialing, et l’abonnement passe automatiquement à l’état active lorsque l’essai se termine et que le paiement réussit.
Gérer la facture
Pour les abonnements dont le paramètre collection_ est défini sur charge_, Stripe crée une facture avec l’état open lorsque vous créez l’abonnement. Votre client dispose de 23 heures pour payer. Pendant ce temps, l’état de l’abonnement est incomplete et l’état de la facture reste open. Cette fenêtre de 23 heures est prévue pour les clients qui paient pendant une session. Si le client retourne sur votre formulaire d’inscription après 23 heures, créez-lui un nouvel abonnement.
Pour les abonnements dont le paramètre collection_ est défini sur send_, Stripe envoie au client un e-mail contenant un lien vers la facture avec une date d’échéance configurable. L’abonnement reste incomplete jusqu’au paiement par le client.
Pour en savoir plus, consultez la section consacrée aux factures d’abonnement.
Confirmer le paiement
Si votre client paie la facture, l’état de l’abonnement passe à active et celui de la facture à paid. Écoutez l’événement invoice.paid ou confirmez que l’état de l’abonnement est défini sur active.
Si le client ne paie pas dans les 23 heures, l’abonnement passe à incomplete_ et la facture passe à l’état void. Pour réactiver son accès, créez un nouvel abonnement.
Pour en savoir plus, consultez les états des abonnements et des paiements.
Fournir l’accès à votre produit
Lorsqu’un abonnement devient active, Stripe crée un entitlement actif pour chaque fonctionnalité associée au produit souscrit. Lorsqu’un client accède à vos services, utilisez ses droits d’accès actifs pour lui accorder l’accès aux fonctionnalités incluses dans son abonnement.
Vous pouvez également assurer le suivi des abonnements actifs à l’aide d’événements webhook et fournir le produit au client en fonction de cette activité.
Mettre à jour l’abonnement
Vous pouvez modifier des Abonnement existantes si nécessaire sans avoir à les annuler ni à les recréer. Parmi les changements les plus importants que vous pourriez apporter, citons le passage à une offre abonnement ou inférieure ou la suspension paiement du collecter d’un abonnement actif.
Pour les intégrations Stripe Checkout, vous ne pouvez pas mettre à jour l’abonnement ou sa facture si l’abonnement de la session est incomplete. Vous pouvez écouter l’événement checkout.session.completed pour effectuer la mise à jour une fois la session terminée. Vous pouvez également faire expirer la session si vous souhaitez annuler l’abonnement de la session, annuler la facture d’abonnement ou marquer la facture comme irrécouvrable.
Gérer les abonnement impayés
Si le client ne paie pas une facture d’abonnement, Stripe suspend les tentatives de recouvrement ultérieures. L’abonnement continue de générer des factures à chaque période de facturation, qui conservent l’état draft. L’état de l’abonnement (past_ ou unpaid) dépend de vos paramètres d’échec de paiement dans le Dashboard.
Stripe ignore les factures annulées lors de la détermination de l’état de l’abonnement et utilise plutôt la facture non annulée la plus récente.
Pour en savoir plus, consultez la section consacrée aux Échecs des paiement d’abonnement.
Annuler l’abonnement
Vous pouvez résilier un abonnement à tout moment, y compris à la fin d’un cycle de facturation ou après un nombre défini de cycles de facturation.
Par défaut, l’annulation d’un abonnement désactive la création de nouvelles factures et arrête le recouvrement automatique de toutes les factures en souffrance de l’abonnement. Elle supprime également l’abonnement et vous ne pouvez plus le mettre à jour, à l’exception de ses metadata et cancellation_. Si votre client souhaite se réabonner, vous devez recueillir de nouvelles informations de paiement auprès de lui et créer un nouvel abonnement.
États des abonnements
Subscriptions peuvent avoir les états suivants. Les actions que vous pouvez effectuer sur un abonnement dépendent de son état.
| État | Description |
|---|---|
trialing | L’abonnement est actuellement en période d’essai et vous pouvez fournir votre produit à votre client en toute sécurité. L’abonnement passe automatiquement à l’état active lorsqu’un client effectue son premier paiement. |
active | L’abonnement est en règle. Pour les abonnements past_, le paiement de la dernière facture associée ou sa mise en impayé fait passer l’abonnement à l’état active. Notez que active n’indique pas que toutes les factures en cours ont été réglées. Vous pouvez laisser d’autres factures ouvertes, les mettre en impayé ou les annuler. |
incomplete | Le client doit effectuer un paiement dans les 23 heures suivant la création de l’abonnement pour l’activer. Ou une action est requise pour le paiement, telle que l’authentification du client. Les abonnements peuvent également être à l’état incomplete si un paiement est en attente et que l’état du PaymentIntent est défini sur processing. |
incomplete_ | Le paiement initial de l’abonnement a échoué et le client n’a pas effectué de paiement dans les 23 heures suivant la création de l’abonnement. Ces abonnements ne facturent pas les clients. Cet état vous permet de suivre les clients qui n’ont pas réussi à activer leur abonnement. |
past_ | Le paiement de la dernière facture finalisée a échoué ou n’a pas été tenté. L’abonnement continue de générer des factures. Les paramètres d’abonnement de votre Dashboard déterminent le prochain état de l’abonnement. Si la facture reste impayée après toutes les tentatives de relances intelligentes, vous pouvez configurer l’abonnement pour qu’il passe à canceled, unpaid ou reste à past_. Pour réactiver l’abonnement, demandez à votre client de régler la facture la plus récente. L’état de l’abonnement devient active, que le paiement soit effectué avant ou après la date d’échéance de la dernière facture. |
canceled | L’abonnement a été annulé. Lors de l’annulation, l’encaissement automatique de toutes les factures impayées est désactivé (auto_). Cet état est définitif et ne peut pas être mis à jour. |
unpaid | La dernière facture n’a pas été réglée, mais l’abonnement reste actif. La dernière facture reste ouverte et les factures continuent d’être générées, mais aucune tentative de paiement n’est effectuée. Révoquez l’accès à votre produit lorsque l’abonnement passe à l’état unpaid, car des tentatives de paiement ont déjà été effectués à plusieurs reprises lorsque qu’il était à l’état past_. Pour passer l’abonnement à l’état active, la facture la plus récente doit être réglée avant sa date d’échéance. |
paused | L’abonnement a terminé sa période d’essai sans moyen de paiement par défaut et le paramètre trial_settings.end_behavior.missing_payment_method est défini sur pause. Les factures ne sont plus créées pour l’abonnement. Après avoir associé un moyen de paiement par défaut au client, vous pouvez reprendre l’abonnement. |
États des paiements
Une PaymentIntent suit le cycle de vie de chaque paiement. Lorsqu’un paiement est dû pour un abonnement, Stripe génère une facture et une PaymentIntent. L’ID de la PaymentIntent est associé à la facture et vous pouvez y accéder à partir des objets Invoice et Subscription.
L’état du PaymentIntent affecte l’état de la facture et de l’abonnement. Voici comment les différents résultats d’un paiement correspondent aux différents états :
| Résultat du paiement | État du PaymentIntent | État de la facture | État de l’abonnement |
|---|---|---|---|
| Opération réussie | succeeded | paid | active |
| Échecs dus à une erreur de carte bancaire | requires_ | open | incomplete |
| Échecs d’authentification | requires_ | open | incomplete |
Les moyens de paiement asynchrones, comme le prélèvement automatique ACH Direct Debit, traitent les changements d’état des abonnements différemment des paiements instantanés. Avec un moyen de paiement asynchrone, un abonnement peut passer à l’état active immédiatement après sa création sans passer par l’état incomplete. En cas d’échec de paiement ultérieur, Stripe invalide la facture, tandis que l’abonnement reste à l’état active. Adaptez votre gestion des accès et votre logique de relance en fonction de ce fonctionnement.
Les sections suivantes expliquent ces différents états et précisent les actions à mettre en œuvre pour chacun d’entre eux.
Paiement réussi
Lorsque le paiement du client aboutit :
- Le
statusdu PaymentIntent passe àsucceeded. - Le
statusde l’abonnement estactive. - Le
statusde la facture estpaid. - Stripe envoie un événement
invoice.aux endpoints de webhook que vous avez configurés.paid
Pour les moyens de paiement dont la période de traiter est plus longue, les Subscriptions sont immédiatement activées. Dans ce cas, l’état de la PaymentIntent peut être processing pour un abonnement active jusqu’à ce que le paiement aboutisse.
Maintenant que votre abonnement est activé, fournissez l’accès à votre produit.
Moyen de paiement requis
Si le paiement échoue en raison d’une erreur de carte bancaire telle qu’un refus de paiement :
- Le
statusde la PaymentIntent estrequires_.payment_ method - Le
statusde l’abonnement estincomplet. - Le
statusde la facture estopen.
Dans un tel scénario :
- Prévenez votre client.
- Collecter de nouvelles informations de paiement et confirmez le PaymentIntent.
- Mettez à jour le moyen de paiement par défaut de l’abonnement.
- Stripe effectue une nouvelle tentative de paiement à l’aide de Smart Retries ou établi vos règles de relance personnalisées.
- Utilisez l’événement invoice.payment_failed pour surveiller les échecs de paiement des abonnements et relancer les mises à jour des tentatives. Après une tentative de paiement sur une facture, sa valeur next_payment_attempt est définie à l’aide des paramètres d’abonnement actuels dans votre Dashboard.
Découvrez comment gérer les échecs de paiement dans le cadre d’un abonnement.
Action requise
Certains moyens de paiement nécessitent l’authentification du client avec 3D Secure (3DS). La nécessité de l’authentification dépend de vos règles Radar et de la banque émettrice de la carte bancaire.
Si le paiement échoue parce que le client doit s’identifier un paiement :
- Le
statusde la PaymentIntent estrequires_.action - Le
statusde l’abonnement estincomplet. - Le
statusde la facture estopen.
Dans un tel scénario :
- Surveillez la notification d’événement
invoice.à l’aide des endpoints de webhook. Cela indique qu’une authentification est requise.payment_ action_ required - Avertissez votre client qu’une authentification est requise.
- Récupérez la clé secrète du client pour le PaymentIntent et transmettez-la dans un appel à stripe.ConfirmCardPayment. Cette action entraîne la présentation d’une fenêtre modale d’authentification à vos clients, une tentative de paiement, puis la fermeture de la fenêtre modale et le renvoi du contexte à votre formulaire d’inscription.
- Surveillez l’événement
invoice.sur votre destination d’événement pour vérifier que le paiement a abouti. Les utilisateurs peuvent quitter votre application avant que la fonctionpaid confirmCardPayment()ne se termine. Le fait de vérifier que le paiement a abouti vous permet de fournir l’accès à votre produit de manière adéquate.