# Modifier le tarif des abonnements existants Découvrez comment passer un client à un abonnement supérieur ou inférieur en modifiant le tarif appliqué. Ce guide vous explique comment utiliser l’API Subscriptions pour gérer les abonnements de vos clients. Vous pouvez également implémenter le [portail client](https://docs.stripe.com/customer-management.md) pour fournir à vos clients un Dashboard hébergé par Stripe dans lequel ils peuvent gérer leurs abonnements et leurs informations de facturation. Lorsqu’un client modifie son abonnement, vous devez modifier le poste d’abonnement pour qu’il prenne en compte la nouvelle sélection. Par exemple, un client peut passer à un niveau premium ou revenir à un niveau de base, ce qui vous demande de remplacer le tarif sous-jacent de ce poste d’abonnement. Pour ce faire, différentes méthodes sont possibles. > #### Utiliser l’API Accounts v2 pour représenter des clients > > Si votre intégration utilise des [Accounts configurés par le client](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), remplacez les références `Customer` et événement dans les exemples de code par les références équivalentes de l’API Accounts v2. Pour plus d’informations, consultez la page [Représenter des clients avec des objets Account](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md). ## Récupérer les identifiants Quelle que soit la méthode choisie, vous devrez fournir des identifiants pour les objets que vous mettez à jour. Utilisez la méthode de [listage d’abonnements](https://docs.stripe.com/api/subscriptions/list.md) avec un filtre approprié (par exemple, l’ID client) pour trouver l’abonnement et le poste à mettre à jour. ```curl curl -G https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} ``` Cette requête renvoie l’ensemble des abonnements pour le client spécifié, à partir duquel vous pouvez récupérer l’ID de l’abonnement (`id`), l’ensemble des ID des postes d’abonnement (`items.data.id`) et l’ID du tarif des postes d’abonnement (`items.data.price.id`). ```json { "object": "list", "url": "/v1/subscriptions", "has_more": false, "data": [ {"id": "su_1NXPiE2eZvKYlo2COk9fohqA", "object": "subscription", "application": null, "application_fee_percent": null, "automatic_tax": { "enabled": false },"items": { "object": "list", "data": [ { "id": "si_OK3pbS1dvdQYJP", "object": "subscription_item", "billing_thresholds": null, "created": 1690208774, "metadata": {},"price": { "id": "price_1NOhvg2eZvKYlo2CqkpQDVRT", "object": "price" } } ] } } ] } ``` ## Mettre à jour l’abonnement [Modifier un abonnement](https://docs.stripe.com/api.md#update_subscription) comprenant les paramètres suivants : - `item ID` : vous devez spécifier l’élément d’abonnement pour remplacer le tarif actuel par le nouveau. Sinon, la mise à jour de l’abonnement avec un nouveau tarif *ajoute* un nouvel élément d’abonnement et les deux tarifs seront actifs pour l’abonnement. - `item price` : indiquez l’identifiant du tarif de remplacement. - `item quantity` : la mise à jour du tarif d’un abonnement rétablit automatiquement la quantité à la valeur par défaut de `1`. Si la quantité existante de l’abonnement est différente de `1` et que vous souhaitez conserver cette valeur, vous devez l’inclure dans la mise à jour. ```curl curl https://api.stripe.com/v1/subscriptions/sub_xxxxxxxxx \ -u "<>:" \ -d "items[0][id]={{SUB_ITEM_ID}}" \ -d "items[0][price]={{NEW_PRICE_ID}}" ``` > Vous devez spécifier le poste d’abonnement pour remplacer le tarif actuel par le nouveau tarif. Sans cela, le nouveau tarif sera *ajouté* et les deux tarifs seront donc actifs pour l’abonnement. Vous pouvez également supprimer le poste d’abonnement actuel et en créer un nouveau avec le nouveau tarif. ```curl curl https://api.stripe.com/v1/subscriptions/sub_xxxxxxxxx \ -u "<>:" \ -d "items[0][id]={{SUB_ITEM_ID}}" \ -d "items[0][deleted]=true" \ -d "items[1][price]={{NEW_PRICE_ID}}" ``` ## Mettre à jour le poste d’abonnement [Mettez à jour un élément d’abonnement ](https://docs.stripe.com/api/subscription_items/update.md) à l’aide des paramètres suivants : - [prix](https://docs.stripe.com/api/subscription_items/update.md#update_subscription_item-price) : Fournissez l’identifiant du prix de remplacement. - [quantity](https://docs.stripe.com/api/subscription_items/update.md#update_subscription_item-quantity) : La mise à jour du prix d’un abonnement rétablit automatiquement la quantité à la valeur par défaut de `1`. Si la quantité existante de l’abonnement est différente de `1` et que vous souhaitez conserver cette valeur, vous devez l’inclure dans la mise à jour. Utilisez cette option si vous n’avez pas besoin d’apporter d’autres modifications au niveau de l’abonnement. ```curl curl https://api.stripe.com/v1/subscription_items/si_xxxxxxxxx \ -u "<>:" \ -d price={{NEW_PRICE_ID}} ``` ## Périodes de facturation Si les deux tarifs sont affectés aux mêmes périodes de facturation (`interval` et `interval_count` identiques), l’abonnement conserve les mêmes dates de facturation. Si les tarifs sont affectés à des périodes de facturation différentes, le nouveau tarif est facturé selon la nouvelle périodicité, à partir du jour du changement. Par exemple, basculer un client d’un abonnement mensuel donné vers un autre ne modifie pas les dates de facturation. À l’inverse, le faire passer d’un abonnement mensuel à un abonnement annuel modifie la date de facturation, qui est établie à la date du changement d’abonnement. Basculer un client d’un abonnement mensuel donné vers un autre tout en introduisant une période d’essai modifie également la date de facturation (qui sera définie à la fin de l’essai). ### Planifications d’abonnements Si vous modifiez un abonnement à la fin de sa période de facturation, envisagez d’utiliser une [planification d’abonnement](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#changing-subscriptions) pour gérer la transition. Lorsque vous utilisez des planifications d’abonnement, suivez les [bonnes pratiques](https://docs.stripe.com/billing/subscriptions/subscription-schedules.md#subscription-schedule-sub-updates) pour éviter les écrasements d’abonnement inattendus. ## Facturation à l’usage avec les dispositifs de mesure Billing Les informations sur les modifications en cours de cycle pour les tarifs associés à un dispositif de mesure à des fins de facturation sont décrites dans la section sur les [modèles tarifaires](https://docs.stripe.com/billing/subscriptions/usage-based/manage-billing-setup.md#mid-cycle-updates). La transmission de `clear_usage` lors de la mise à jour d’un prix avec un dispositif de mesure à des fins de facturation n’a aucun effet. ## Facturation à l’usage avec des enregistrements d’utilisation (Ancien) Si vous disposez d’une tarification à l’usage basée sur des enregistrements d’utilisation anciens et que vous passez à une nouvelle tarification basée sur des enregistrements d’utilisation, l’utilisation est transférée au nouveau tarif. ```curl curl https://api.stripe.com/v1/subscriptions/sub_xxxxxxxxx \ -u "<>:" \ -d "items[0][id]={{SUB_ITEM_ID}}" \ -d "items[0][price]={{NEW_PRICE_ID}}" \ -d "items[0][clear_usage]=true" ``` ## Au prorata Un changement d’abonnement entraîne souvent un [calcul au prorata](https://docs.stripe.com/billing/subscriptions/prorations.md) de façon à répercuter le nouveau tarif sur les jours restants dans la période de facturation. Vous pouvez préparer votre client à l’éventuelle dépense supplémentaire découlant d’un changement de tarif en [prévisualisant un calcul au prorata](https://docs.stripe.com/billing/subscriptions/prorations.md#preview-proration). Vous pouvez également [désactiver les calculs au prorata](https://docs.stripe.com/billing/subscriptions/prorations.md#disable-prorations). ### Paiement immédiat Stripe tente immédiatement le paiement lorsque l’ancre du cycle de facturation d’un abonnement est réinitialisée. En savoir plus sur [la réinitialisation de l’ancre du cycle de facturation d’un abonnement](https://docs.stripe.com/billing/subscriptions/billing-cycle.md#changing). Lorsque la facturation est effectuée immédiatement, mais que le paiement requis échoue, la demande de modification de l’abonnement aboutit et l’abonnement bascule sur `past_due`. Pour facturer immédiatement un client pour une modification d’un abonnement sur la même période de facturation, définissez `proration_behavior` sur `always_invoice`. Cela calcule le prorata, puis génère immédiatement une *facture* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) après avoir effectué le changement. Combinez ce paramètre avec les [mises à jour en attente](https://docs.stripe.com/billing/subscriptions/pending-updates.md) pour que l’abonnement ne soit pas mis à jour tant que le paiement de la nouvelle facture n’a pas abouti. ### Crédits au prorata Les crédits au prorata sont émis lorsque les clients passent à un abonnement inférieur ou annulent des postes d’abonnement avant la fin de leur période de facturation. Stripe propose deux approches pour le calcul des crédits au prorata, en fonction du paramètre [billing_mode](https://docs.stripe.com/api/Subscriptions/object.md#subscription_object-billing_mode) de votre abonnement. Consultez la page [Crédits au prorata](https://docs.stripe.com/billing/Subscriptions/prorations.md#credit-prorations) pour en savoir plus. ### Gérer les tarifs nuls et les quantités Si votre client présente un abonnement dont le tarif est nul (par exemple, dans le cadre d’une période d’essai), le remplacement du tarif par un montant non nul génère une facture et réinitialise la [période de facturation](https://docs.stripe.com/billing/subscriptions/change-price.md#billing-periods) à la date de modification. Si votre client présente un abonnement dont le tarif n’est pas nul, mais la quantité est nulle, le remplacement de la quantité par un nombre non nul ne génère aucune facture et ne réinitialise pas la période de facturation. ## See also - [Période de facturation (cycle)](https://docs.stripe.com/billing/subscriptions/billing-cycle.md) - [Annulation et mise en suspens](https://docs.stripe.com/billing/subscriptions/cancel.md) - [Mettre à jour l’API Subscription](https://docs.stripe.com/api.md#update_subscription)