Planifications d'abonnement
Découvrez les planifications d'abonnements et apprenez à les utiliser.
Version bêta publique
Cette fonctionnalité est uniquement disponible dans la version classique de l’éditeur d’abonnements dans le Dashboard. Vous pouvez passer de la version classique à la nouvelle version à tout moment, et votre choix sera conservé pendant 30 jours. Ceci signifie que lorsque vous rouvrirez l’éditeur, il reprendra par défaut la dernière version que vous aviez sélectionnée.
Utilisez les planifications d’abonnement pour automatiser les modifications apportées aux abonnements au fil du temps. Vous pouvez créer directement un abonnement en même temps que vous créez votre planification ou bien ajouter une planification à un abonnement déjà existant. Utilisez l’attribut phases pour définir les modifications que vous souhaitez apporter à l’abonnement. Une fois toutes ses phases achevées, une planification expire en mettant en œuvre son paramètre end_behavior.
Voici quelques exemples de modifications que vous pouvez planifier :
- Démarrage d’un abonnement à une date ultérieure
- Antidatage d’un abonnement à une date antérieure
- Passage à un abonnement supérieur ou inférieur
Les planifications d’abonnement sont disponibles à la fois dans le Dashboard Stripe Billing et dans l’API.
Pour découvrir comment utiliser les planifications d’abonnement, consultez la section Cas d’usage.
Phases
Lorsque vous créez une planification d’abonnement, utilisez l’attribut phases pour définir à quel moment les changements doivent avoir lieu et quelles propriétés de l’abonnement doivent être modifiées. Par exemple, vous pouvez offrir un bon de réduction de 50 % les trois premiers mois d’un abonnement. Dans ce scénario, vous créez une planification d’abonnement dont la première phase s’étend sur trois mois et contient le bon de réduction de 50 %. Dans un deuxième temps, l’abonnement revient au coût normal et le bon de réduction est supprimé. Les phases doivent être séquentielles, c’est-à-dire qu’une seule phase peut être active à un moment donné. Vous pouvez avoir jusqu’à 10 phases.
Définir la durée d’une phase
Vous pouvez définir la durée d’une phase à l’aide de l’API ou du tableau de bord.
Les phases disposent d’un attribut duration qui permet d’indiquer la durée d’une phase. Le paramètre duration accepte les valeurs suivantes : week, month ou year.
la end_ d’une phase doit correspondre à la start_ de la phase suivante. l’utilisation du paramètre duration définit automatiquement les valeurs start_ et end_. vous pouvez définir ces valeurs manuellement, mais Stripe recommande d’utiliser duration, car la définition manuelle des dates de début et de fin peut générer des erreurs. à réserver aux cas d’usage avancés.
Passer à la phase suivante
Les transitions de phase se produisent automatiquement une fois que le end_ d’une phase est atteint. Lorsque qu’une phase arrive à son terme, Stripe modifie l’abonnement en fonction des attributs de la phase suivante. Vous pouvez éventuellement activer les calculs au prorata afin de créditer l’utilisateur pour les postes ou le temps non utilisés dans le cadre de l’abonnement.
Comportement des calculs au prorata
Il existe deux paramètres différents de comportement des calculs au prorata qui contrôlent la manière dont Stripe traite les réajustements de facturation lors des modifications de la planification d’un abonnement :
Comportement des calculs au prorata pour la mise à jour d’une planification d’abonnement : Le paramètre proration_behavior de niveau supérieur contrôle la manière de gérer les calculs au prorata lors de la mise à jour d’une planification d’abonnement d’une manière qui affecte la configuration de facturation de la phase en cours (par exemple, la modification des prix ou des quantités).
Comportement des calculs au prorata pendant la transition de phase : Chaque phase possède son propre attribut proration_behavior qui contrôle la manière dont Stripe gère les calculs au prorata lors de la transition vers cette phase.
Comportement des calculs au prorata pour la mise à jour d’une planification d’abonnement
Lorsque vous mettez à jour une planification d’abonnement et modifiez la configuration de facturation de current_, vous pouvez contrôler la manière dont les calculs au prorata sont traités à l’aide du paramètre proration_ de premier niveau.
Ce paramètre fonctionne de manière similaire à celui de l’API pour la mise à jour des abonnements et accepte les valeurs suivantes :
create_(par défaut) : Générez des réajustements au prorata pour les changements de facturation.prorations none: Aucun calcul au prorata n’est créé pour la mise à jour.always_: Générez des calculs au prorata et finalisez immédiatement une facture.invoice
Les modifications apportées à des champs autres que la facturation (comme les métadonnées) ne généreront pas de calcul au prorata, quel que soit ce paramètre.
Comportement des calculs au prorata pendant la transition de phase
Chaque phase peut définir son propre proration_ pour contrôler ce qui se passe lorsque l’abonnement entre dans cette phase. Ce paramètre s’applique spécifiquement aux calculs au prorata générés pendant les transitions de phase et est enregistré en tant que champ sur la phase.
Par exemple, si phases[1] augmente la quantité de 1 à 3 au début, le proration_ sur phases[1] détermine comment ces calculs au prorata sont gérés lors du passage de phases[0] à phases[1] :
create_(par défaut) : Générez des postes de facture en attente pour les modifications de facturation.prorations none: Aucun calcul au prorata n’est créé au début de cette phase.always_: Générez des calculs au prorata et créez immédiatement une facture lorsque vous entrez dans cette phase.invoice
Si vous devez modifier le traitement au prorata d’une transition de phase future, mettez à jour le paramètre proration_ de la phase future avant qu’elle ne devienne active.
Utiliser des périodes d’essai
Vous pouvez ajouter une période d’essai à la première phase d’un abonnement en utilisant l’API ou le tableau de bord.
Vous pouvez ajouter une période d’essai sur une phase en définissant une date de fin de la période d’essai. Si vous souhaitez que la période d’essai s’étale sur l’intégralité de la phase, définissez une valeur trial_ identique à la end_ de la phase. Vous pouvez aussi définir trial_ sur une date antérieure à la end_ si vous souhaitez que la période d’essai ne couvre qu’une partie de la phase. Lorsque vous planifiez des mises à jour, vous devez spécifier la nouvelle trial_ pour chaque phase.
Réaliser une planification
Les planifications d’abonnement prennent fin une fois la dernière phase terminée. À ce stade, l’abonnement est laissé tel quel et n’est plus associé à la planification. Si vous souhaitez annuler un abonnement après la dernière phase de planification, vous pouvez définir le paramètre end_behavior sur cancel. L’attribut cancel_on_date de l’abonnement n’est défini que lorsque l’abonnement débute sa phase finale.
Héritage des attributs de phase
Lorsqu’une phase est active, tous les attributs définis sur la phase sont aussi définis sur l’abonnement. À l’issue de la phase, les attributs restent les mêmes, à moins que la phase suivante ne les modifie ou que la planification ne possède pas de paramètres par défaut. Un certain nombre d’attributs peuvent être définis sur les planifications et sur les phases. Ces attributs sont les suivants :
Lorsque l’un de ces attributs est défini sur la planification, il est utilisé par défaut par toutes les phases. Lorsqu’une même propriété est définie sur la planification et sur la phase, l’attribut de phase remplace l’attribut de planification. Les règles comportementales appliquées sont les suivantes :
| Attribut de planification présent | Attribut de phase présent | Résultat |
|---|---|---|
| Non | Non | Utilisation des paramètres par défaut du client ou du compte |
| Oui | Non | Utilisation de l’attribut de planification défini |
| Oui | Oui | Utilisation de l’attribut de phase défini |
| Non | Oui | Utilisation de l’attribut de phase défini |
Utiliser des métadonnées de phase
Vous pouvez utiliser les phases de planification d’abonnement pour définir les métadonnées de l’abonnement sous-jacent. Cela vous permet de contrôler les métadonnées d’un abonnement avec des mises à jour planifiées.
Pour utiliser les métadonnées de phase avec l’API, définissez des métadonnées pour les phases d’une planification d’abonnement. Lorsque l’abonnement sous-jacent entre dans une phase :
- Si la phase contient des métadonnées, les valeurs correspondantes sont ajoutées aux métadonnées de l’abonnement, à condition que les clés ne soient pas déjà présentes dans ce dernier.
- Les métadonnées de la phase ayant des valeurs non-vides sont utilisées pour mettre à jour les métadonnées de l’abonnement si les clés sont déjà présentes dans ce dernier.
- Les métadonnées de la phase ayant des valeurs vides sont utilisées pour désactiver les clés correspondantes dans les métadonnées de l’abonnement.
Afin de désactiver toutes les clés des métadonnées de l’abonnement, mettez l’abonnement à jour directement ou désactivez chaque clé individuellement depuis les métadonnées de la phase. La mise à jour directe des métadonnées de l’abonnement sous-jacent n’affecte pas les métadonnées de la phase en cours.
L’exemple suivant illustre une planification d’abonnement à deux phases, où chacune a ses propres métadonnées :
{ ... "object": "subscription_schedule", "phases": [ { // Phase 1 ... "metadata": { "channel": "self-serve", "region": "apac", "upsell-products": "alpha" } }, { // Phase 2 ... "metadata": { "channel": "sales", "churn-risk": "high", "upsell-products": "" } } ] }
Lorsque cette planification crée un nouvel abonnement et que ce dernier entre dans la Phase 1, les trois clés des métadonnées de la Phase 1 sont ajoutées aux métadonnées de l’abonnement. Par conséquent, l’abonnement en Phase 1possède les métadonnées suivantes :
{ ... "object": "subscription", "metadata": { "channel": "self-serve", "region": "apac", "upsell-products": "alpha" } }
Lorsque l’abonnement entre dans la Phase 2, les métadonnées de l’abonnement sont mises à jour :
- La valeur de
channelest mise à jour car une valeur est spécifiée dans les métadonnées de la phase et l’abonnement dispose déjà de métadonnées avec cette clé. - La valeur de
regionne change pas car elle n’est pas spécifiée dans la phase. churn-riskest ajouté car il s’agit d’une nouvelle clé.upsell-productsest désactivé car une valeur vide est spécifiée dans la phase.
Par conséquent, l’abonnement en Phase 2 possède les métadonnées suivantes :
{ ... "object": "subscription", "metadata": { "channel": "sales", "region": "apac", "churn-risk": "high" } }
Apprenez comment copier des métadonnées d’abonnement sur des factures d’abonnement.
Créer des planifications d’abonnement
Cet exemple illustre comment créer une planification d’abonnement à l’aide d’un client. Lorsque vous créez une planification de cette manière, l’abonnement est automatiquement créé du même coup.
Remarque
Contrairement aux créations directes d’abonnements, la première facture d’une planification d’abonnement, dont le paramètre collection_ est défini sur charge_, se comporte de la même manière qu’une facture récurrente et n’est pas immédiatement finalisée au moment de la création de l’abonnement planifié. La facture est d’abord à l’état draft, puis est finalisée par Stripe environ une heure après sa création.
Par exemple, lorsque vous créez une planification d’abonnement dont la méthode d’encaissement est définie sur la facturation automatique et avec start_, un abonnement et une facture à l’état draft sont également créés. Vous disposez d’une heure pour modifier la facture. Par la suite, la facture passe automatiquement à l’état open ou paid, en fonction du résultat de la tentative de paiement asynchrone au moment de la finalisation.
Utiliser l’API Accounts v2 pour représenter les clients
L’API Accounts v2 est généralement disponible pour les utilisateurs de Connect et en aperçu public pour les autres utilisateurs de Stripe. Si vous avez accès à l’aperçu Accounts v2, vous devez spécifier une version d’aperçu dans votre code.
Pour accéder à l’aperçu Accounts v2, rendez-vous sur aperçus et fonctionnalités de Account dans votre Dashboard et activez Moyens de paiement réutilisables pour les virements internationaux.
Dans la plupart des cas d’usage, nous vous recommandons de modéliser vos clients en tant qu’objets Account configurés par le client, plutôt que d’utiliser des objets Customer.
curl https://api.stripe.com/v1/subscription_schedules \ -u ":" \ -d "customer_account=sk_test_VePHdqKTYQjKNInc7u56JBrQ" \ -d start_date=now \ -d end_behavior=release \ -d "phases[0][items][0][price]=price_1GqNdGAJVYItwOKqEHb" \ -d "phases[0][items][0][quantity]=1" \ -d "phases[0][duration][interval]=month" \ -d "phases[0][duration][interval_count]=12"{{CUSTOMER_ACCOUNT_ID}}
Cette planification :
- Entre en application dès sa création.
- Définit l’abonnement sur une instance du produit au
price_.1GqNdGAJVYItwOKqEHb - Effectue 12 mois et libère ensuite l’abonnement de la planification.
Vous pouvez également créer des planifications d’abonnement en transmettant un ID d’abonnement :
Lorsque vous créez une planification de cette façon, les attributs de l’abonnement sont utilisés pour définir les attributs de la planification.
Comme pour les autres API Stripe, vous pouvez consulter et mettre à jour vos planifications d’abonnement. Il est également possible de les annuler ou de les libérer. L’annulation d’une planification d’abonnement entraîne l’annulation de l’abonnement associé. Si vous souhaitez uniquement dissocier une planification d’un abonnement, utilisez l’appel libérer.
Modifier les planifications d’abonnement
Vous ne pouvez mettre à jour que la phase actuelle et les phases futures des planifications d’abonnement.
Vous devez transmettre toutes les phases actuelles et futures lorsque vous mettez à jour une planification d’abonnement. Vous devez également transmettre les paramètres précédemment définis que vous souhaitez conserver. Tous les paramètres précédemment définis ne sont plus définis pour la phase existante, sauf si vous les transmettez dans la demande de mise à jour. Vous continuez de recevoir des informations dans la réponse sur les phases passées.
Vous pouvez inclure jusqu’à 10 phases actuelles ou futures. La mise à jour de la phase active met également à jour l’abonnement sous-jacent. Par exemple, cet appel met à jour la quantity à 2 :
curl https://api.stripe.com/v1/subscription_schedules/\ -u "{{SUBSCRIPTION_SCHEDULE_ID}}:" \ -d "phases[0][items][0][price]=sk_test_VePHdqKTYQjKNInc7u56JBrQ" \ -d "phases[0][items][0][quantity]=2" \ -d "phases[0][start_date]=1577865600" \ -d "phases[0][end_date]=1580544000"{{PRICE_ID}}
Vous pouvez également mettre immédiatement fin à la phase actuelle et en initier une nouvelle. La phase active devient alors une phase du passé et la nouvelle phase est immédiatement appliquée à l’abonnement. Dans l’exemple ci-dessous, la phase actuelle est terminée et une nouvelle est initiée :
curl https://api.stripe.com/v1/subscription_schedules/\ -u "{{SUBSCRIPTION_SCHEDULE_ID}}:" \ -d "phases[0][items][0][price]=sk_test_VePHdqKTYQjKNInc7u56JBrQ" \ -d "phases[0][items][0][quantity]=1" \ -d "phases[0][start_date]=1577865600" \ -d "phases[0][end_date]=now" \ -d "phases[1][items][0][price]={{PRICE_ID}}" \ -d "phases[1][items][0][quantity]=2" \ -d "phases[1][start_date]=now" \ -d "phases[1][end_date]=1580544000"{{PRICE_ID}}
Pour ajouter de nouvelles phases à une planification d’abonnement, transmettez la phase actuelle et définissez ensuite les nouvelles phases :
curl https://api.stripe.com/v1/subscription_schedules/\ -u "{{SUBSCRIPTION_SCHEDULE_ID}}:" \ -d "phases[0][items][0][price]=sk_test_VePHdqKTYQjKNInc7u56JBrQ" \ -d "phases[0][items][0][quantity]=1" \ -d "phases[0][start_date]=1577865600" \ -d "phases[0][end_date]=1580544000" \ -d "phases[1][items][0][price]={{PRICE_ID}}" \ -d "phases[1][items][0][quantity]=2" \ -d "phases[1][duration][interval]=month" \ -d "phases[1][duration][interval_count]=1"{{PRICE_ID}}
Prévisualiser une facture
Utilisez le paramètre planification dans l’aperçu de création pour prévisualiser la facture suivante d’une planification d’abonnement.
Aperçu de la création et des mises à jour de planifications
Utilisez les paramètres dans schedule_details pour prévisualiser la création ou la mise à jour d’une planification d’abonnement. Transmettez une planification existante pour indiquer à Stripe s’il s’agit d’une création ou d’une mise à jour.
Transmettez toutes les phases actuelles et futures que vous prévisualisez.
Par exemple, le code suivant affiche un aperçu de la première facture d’un calendrier d’abonnement comportant 1 phase d’une durée de 12 mois.
curl https://api.stripe.com/v1/invoices/create_preview \ -u ":" \ -d "customer_details[address][line1]=920 5th Ave" \ -d "customer_details[address][city]=Seattle" \ -d "customer_details[address][state]=WA" \ -d "customer_details[address][postal_code]=98104" \ -d "customer_details[address][country]=US" \ -d "schedule_details[phases][0][start_date]=now" \ -d "schedule_details[phases][0][items][0][price]=sk_test_VePHdqKTYQjKNInc7u56JBrQ" \ -d "schedule_details[phases][0][items][0][quantity]=1" \ -d "schedule_details[phases][0][duration][interval]=month" \ -d "schedule_details[phases][0][duration][interval_count]=12"{{PRICE_ID}}
Autres considérations
Les planifications d’abonnement présentent généralement les mêmes restrictions que les abonnements, mais ont également leurs propres restrictions. De plus, l’interaction entre les planifications d’abonnement et les abonnements peut produire un comportement inattendu. Consultez les sections suivantes pour comprendre les limitations, le comportement des produits et les bonnes pratiques générales d’utilisation de planifications d’abonnement.
Restrictions
- Vous ne pouvez définir que 10 phases actuelles ou futures à la fois sur une planification d’abonnement. Les phases passées ne sont pas prises en compte dans cette limite.
- Les phases de planification d’abonnement suivent également les mêmes restrictions que les abonnements lors de la création de phases de planification d’abonnement avec plusieurs éléments.
Limites du Dashboard
Vous pouvez créer ou modifier des planifications d’abonnement sans code dans le Dashboard.
Le Dashboard vous permet de définir les paramètres suivants pour l’ensemble des phases, mais pas pour des phases individuelles :
- Seuils de facturation
- Moyens de paiement
- Paramètres de facturation
- Description de l’abonnement
- Période d’essai (disponible uniquement pour la première phase)
Les paramètres suivants ne sont pas pris en charge dans le Dashboard :
- Métadonnées de planification d’abonnement
- Métadonnées du poste de phase
- Devise
- Tous les paramètres Connect
Mises à jour d’un abonnement associé à une planification
Utilisez les planifications d’abonnement pour modifier automatiquement les abonnements au fil du temps et au passage à la phase suivante de l’abonnement. Certaines modifications que vous apportez directement à l’abonnement se propagent aux phases de la planification d’abonnement, mais pas toutes. Cela signifie que toute modification apportée directement à l’abonnement peut être remplacée par la planification d’abonnement lors du passage à la phase suivante.
Lorsque vous prévoyez de modifier un abonnement, suivez ces bonnes pratiques :
- Si un abonnement est associé à une planification d’abonnement, utilisez l’API Subscription Schedule pour modifier l’abonnement, au lieu de l’API Subscriptions.
- Enregistrez les ID de planification d’abonnement avec l’ID d’abonnement pour les futures mises à jour de l’API. L’ID de planification d’abonnement est renvoyé lorsque vous utilisez l’API pour le créer ou via le webhook subscription_schedule.created lorsque Stripe le crée automatiquement, par exemple lorsqu’un client a planifié un passage à une offre inférieure dans le portail client.
- Supprimez les identifiants de la planification d’abonnement lorsqu’une planification d’abonnement est publiée. Vous pouvez modifier les abonnements directement ou créer une nouvelle planification d’abonnement. L’identifiant de la planification d’abonnement est renvoyé lorsqu’il est publié avec l’API ou via l’événement de webhook subscription_schedule.released lorsque la planification d’abonnement est publiée.
- Utilisez le Dashboard pour modifier les abonnements, si possible, ce qui met automatiquement à jour toute planification d’abonnement associée.
Plus précisément, lorsque vous modifiez l’un des attributs d’abonnement suivants directement sur un abonnement, cette action peut créer automatiquement une nouvelle phase de planification d’abonnement :
discountstax_rates itemstrial_,end trial_,settings trial_start application_fee_ percent add_invoice_ items automatic_tax
Prenons l’exemple d’un abonnement comportant deux éléments. L’abonnement a une planification d’abonnement associée avec une phase unique, reflétant l’état actuel de l’abonnement. Si vous utilisez l’API pour supprimer l’un des éléments, la phase de la planification d’abonnement associée est automatiquement divisée en deux phases :
- La phase qui vient de s’achever et qui comportait deux éléments d’abonnement
- La nouvelle phase qui n’a qu’un seul élément à l’abonnement
Lorsque les phases de la planification d’abonnement se divisent automatiquement, les propriétés suivantes sont copiées de la phase en cours vers la nouvelle phase :
proration_behavior billing_cycle_ anchor cancel_at_ period_ end descriptionmetadatapause_collection
En outre, Stripe peut copier les attributs d’abonnement généraux suivants dans la planification d’abonnement ou ses default_settings :
| Attribut d’abonnement | Copié dans la nouvelle phase de planification d’abonnement | Copié dans les paramètres default_ de la planification d’abonnement |
|---|---|---|
coupon | ||
trial_ | ||
tax_ | ||
application_ | ||
discounts | ||
collection_ | ||
invoice_ | ||
default_ | ||
default_ | ||
transfer_ | ||
on_ | ||
currency | ||
add_ | ||
automatic_ | ||
items. | ||
billing_ |
Les mises à jour des metadata d’un abonnement ne sont pas propagées vers une planification d’abonnement associée.
Cas d’utilisation
Pour comprendre comment fonctionnent les planifications d’abonnement, prenons l’exemple d’un acteur fictif de la presse nommé The Pacific, qui propose deux options d’abonnement :
- L’option Print, qui abonne le client à la version papier du journal
- l’option Numérique, qui donne accès au contenu exclusif du site web de The Pacific
Les deux types d’abonnement déclenchent une facturation mensuelle. Découvrez ci-après les possibilités de planification qui s’offrent au journal.
Si vous représentez vos clients sous forme d’objets Account configurés par le client plutôt que d’objets Customer, remplacez le paramètre customer dans ces exemples de code par le paramètre customer_. Pour plus d’informations, consultez Représenter les clients à l’aide d’objets Account.