Fonctionnement des abonnements
Gérez les paiements récurrents et le cycle de vie des abonnements.
Avec un abonnement, le client s’acquitte de paiements récurrents en contrepartie de l’accès à un produit. Un abonnement vous amène à conserver davantage d’informations sur votre client que dans le cas d’achats ponctuels, de manière à pouvoir le débiter lors des échéances ultérieures.
Stripe propose de nombreuses fonctionnalités qui vous aident à gérer la facturation des abonnements :
- Prise en charge de différents modèles tarifaires
- Gestion des réductions sur les abonnements
- Gestion des essais
- Calculs au prorata pour les abonnements modifiés
- Gestion des clients en libre-service
- Invoicing pour collecter les paiements
- Recouvrement automatisé des revenus
- Rapports et analyses
Le cycle de vie de l’abonnement
Le processus de création et de gestion des Subscriptions repose sur les référence de l’API Stripe, notamment Customers, Invoices et PaymentIntents. Consultez les définitions d’objets API pour obtenir la liste complète des ressources liées aux abonnements.
Voici à quoi ressemble le flux d’abonnement recommandé :.
Créer l’abonnement
Vous pouvez créer un nouvel abonnement dans le Dashboard ou avec l’API. Chaque fois que vous créez un abonnement, cela déclenche un événement. Écoutez ces événements avec des endpoints de webhook et assurez-vous que votre intégration les gère correctement.
Vous pouvez également créer une période d’essai qui ne nécessite pas de paiement pour l’abonnement. Dans ce cas, l’état
est période d'essai
. Une fois la période d’essai terminée, l’abonnement passe à l’état actif
et le client abonné est débité.
Comportement de paiement
Nous vous recommandons de définir le paramètre payment_
d’un abonnement sur default_incomplete pour faciliter la gestion des échecs de paiement et des tunnels de paiement complexes comme 3DS. Cela crée des Subscriptions à l’état incomplete
si le paiement est requis, ce qui vous permet de collecter et de confirmer ultérieurement les informations de paiement pour activer l’abonnement.
Si vous définissez payment_
sur allow_
, Stripe tente immédiatement collecter le paiement de la facture. Si le paiement échoue, l’état de l’abonnement passe à incomplete
. Si vous définissez payment_
sur error_
, la création de l’abonnement échoue si le paiement échoue.
Abonnement que vous créez dans le Dashboard utilisent par défaut le comportement de paiement approprié en fonction du moyen de paiement.
Gérer la facture
Lorsque vous créez un abonnement, Stripe crée automatiquement une facture dont l’état est ouvert
. Votre client dispose d’environ 23 heures pour effectuer un paiement réussi. Pendant ce temps, l’état de l’abonnement est incomplet
et l’état de la facture reste ouvert
. La fenêtre de 23 heures existe car votre client effectue généralement le premier paiement d’un abonnement pendant une session. Si le client revient sur votre formulaire d’inscription après 23 heures, créez-lui un nouvel abonnement.
Le client paie
Si votre client paie la facture, l’abonnement bascule sur actif
et la facture sur payé
. S’il n’effectue pas de paiement, l’abonnement bascule sur incomplete_
et la facture est annulée
.
Pour confirmer si la facture a été payée :
- Configurez un endpoint webhook ou un autre type de destination d’événement et écoutez l’événement
invoice.
.paid - Vérifiez manuellement l’objet abonnement et recherchez l’état
subscription.
. Lestatus=active status
devientactive
suite au paiement de la facture via un prélèvement automatique ou un paiement manuel de la part du client.
Pour en savoir plus, consultez les états des abonnements et des paiements.
Fournir l’accès à votre produit
Lorsque vous créez un abonnement pour un client, cela crée un droit actif pour chaque fonctionnalité associée à ce produit. Lorsqu’un client accède à vos services, utilisez ses droits actifs pour lui accorder l’accès aux fonctionnalités incluses dans son abonnement.
Vous pouvez également utiliser le filière des abonnement actives avec des événements de webhook et fournir le produit au client en établi 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.
Vous pouvez écouter les événements d’abonnement avec des endpoints de webhook pour modifier l’abonnement. Par exemple, vous pouvez envoyer un e-mail à un client en cas d’échec de paiement ou révoquer l’accès d’un client lorsqu’il annule son abonnement.
Pour les intégrations Stripe Checkout, vous ne pouvez pas mettre à jour l’abonnement ou sa facture si l’abonnement de la session est incomplet
. Vous pouvez écouter l’événement Paiement.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
Pour les abonnements avec des factures impayées, celles-ci restent ouvertes mais les tentatives de paiement ultérieures sont interrompues. L’abonnement continue de générer des factures à chaque période de facturation, lesquelles conservent l’état draft
. Pour réactiver l’abonnement :
- Collectez de nouvelles informations de paiement si nécessaire.
- Activez la collecte automatique en configurant auto_advance sur
true
pour les factures à l’état de projet. - Finalisez et payez les factures en cours. Le paiement de la dernière facture non annulée avant sa date d’échéance met à jour l’état de l’abonnement sur
active
.
Les factures marquées comme irrécouvrables gardent l’abonnement sous-jacent actif
. 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.
L’état
de l’abonnement impayé dépend de vos paramètres d’échec de paiement dans le Dashboard.
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 percevoir automatique de toutes les factures en attente issues de l’abonnement. Elle supprime également l’abonnement et vous ne pouvez plus mettre à jour l’abonnement ou ses métadonnées . Si votre client souhaite se réabonner, vous devez lui collecter de nouvelles informations de paiement 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 son marquage comme irrécouvrable fait passer l’abonnement à l’état active . Notez que la valeur active n’indique pas que toutes les factures impayées associées à l’abonnement ont été réglées. Vous pouvez laisser les autres factures impayées en cours de paiement, les marquer comme irrécouvrables ou les annuler, selon vos besoins. |
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_ | Payment on the latest finalized invoice either failed or wasn’t attempted. The subscription continues to create invoices. Your Dashboard subscription settings determine the subscription’s next status. If the invoice is still unpaid after all attempted smart retries, you can configure the subscription to move to canceled , unpaid , or leave it as past_ . To reactivate the subscription, have your customer pay the most recent invoice. The subscription status becomes active regardless of whether the payment is done before or after the latest invoice due date. |
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 . Aucune facture n’est plus créée pour l’abonnement. Après avoir associé un moyen de paiement par défaut au client, vous pouvez reprendre l’abonnement. |
États des paiements
Un PaymentIntent filière le cycle de vie de chaque paiement. Lorsqu’un paiement est dû pour un abonnement, Stripe génère une facture et un PaymentIntent. L’ID du PaymentIntent est joint à 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 |
Remarque
Les moyens de paiement asynchrones, tels que les ACH Direct Debit, gèrent les changements d’état des abonnements différemment des moyens de paiement immédiats. Lorsque vous utilisez des moyens de paiement asynchrones, les Subscriptions passent directement à l’état actif
après leur création, sans passer par l’état incomplet
généralement associé aux autres types de paiement. Si un paiement asynchrone échoue plus tard, la facture associée est annulée, mais l’abonnement reste à l’état actif
. Ce comportement contraste avec les moyens de paiement immédiats, où les échecs de paiement conduisent souvent à des états incomplets
ou past_
. Prenez garde à cette distinction et implémentez une logique appropriée pour gérer l’état de l’abonnement, le contrôle d’accès et les mécanismes de relance de paiement.
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 :
- L’
état
du PaymentIntent passe àréussi
. - L’
état
de l’abonnement estactif
. - L’
état
de la facture estpayé
. - 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 du PaymentIntent peut être traiter
pour un abonnement actif
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 :
- L’
état
du PaymentIntent estrequires_
.payment_ method - L’
état
de l’abonnement estincomplet
. - L’
état
de la facture estouvert
.
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 une authentification du client avec 3D Secure (3DS) pour finaliser le processus de paiement. 3DS finalise le processus d’authentification. La question de savoir si un moyen de paiement nécessite une 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 :
- L’
état
du PaymentIntent estrequires_
.action - L’
état
de l’abonnement estincomplet
. - L’
état
de la facture estouvert
.
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.