# Ajout d’un mode facturation pour permettre un meilleur comportement et une plus grande flexibilité des abonnements ## Nouveautés Nous introduisons un nouveau paramètre `billing_mode` qui permet un comportement d’abonnement plus flexible. Vous pouvez l’activer en définissant la valeur `billing_mode[type]=flexible` lorsque vous créez des [abonnements](https://docs.stripe.com/api/subscriptions/create.md?api-version=2025-06-30.basil), des [factures préliminaires](https://docs.stripe.com/api/invoices/create_preview.md?api-version=2025-06-30.basil), des [sessions Checkout](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2025-06-30.basil), des [devis](https://docs.stripe.com/api/quotes/create.md?api-version=2025-06-30.basil) ou des [planifications d’abonnement](https://docs.stripe.com/api/subscription_schedules/create.md?api-version=2025-06-30.basil). Le mode par défaut, `classic`, préserve le comportement existant. Vous pouvez également migrer des abonnements existantes à l’aide du nouvel [endpoint de migration du mode de facturation](https://docs.stripe.com/api/subscriptions/migrate.md?api-version=2025-06-30.basil). Nous appellerons désormais le comportement actuel de facturation `classic`. Consultez ci-dessous le récapitulatif des nouveaux comportements liés au mode facturation flexible. En savoir plus sur les différences entre les [modes de facturation classique et flexible](https://docs.stripe.com/billing/subscriptions/billing-mode.md). | **Zone d’impact** | **Nouveaux comportements** | | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Calcul au prorata** | **Calcul précis du crédit au prorata.** Le mode de facturation flexible utilise systématiquement le montant débité d’origine, en tenant compte avec précision de l’historique des taxes, des remises et des cycles de facturation. **Application de la remise proportionnelle pour les calculs au prorata.** Nous appliquons les remises proportionnellement à chaque poste d’abonnement lors du calcul au prorata au lieu de les répartir uniformément. Il en résulte davantage de calculs au prorata, en particulier lors de la facturation par poste ou de l’annulation d’articles avec des remises inégalement réparties. | | **Tarifs à la consommation** | **Suppression des postes à montant nul lors de l’ajout de postes facturés à la consommation.** Le mode de facturation flexible ne crée pas de postes à montant nul lorsque vous ajoutez des postes à la consommation à un abonnement. Par conséquent, si la facture est vide, nous n’en générons pas. **Facturation à la consommation sur la base du tarif au moment où elle est signalée.** Le mode de facturation flexible facture l’utilisation sur la base du tarif au moment où vous la signalez. Si le tarif d’un poste facturé à la consommation change au cours d’une période, seule l’utilisation mesurée après le changement de prix est facturée au nouveau tarif. **Facture l’utilisation non facturée lors de la suppression de postes facturés à la consommation.** Le mode de facturation flexible génère un poste de facture pour l’utilisation non facturée lorsque vous supprimez un poste d’abonnement facturé à la consommation. Cela s’applique aux prélèvements à l’aide de l’API ou lors des transitions de phase de planification. **Consolide les factures pour les transitions de phase avec les postes facturés à la consommation.** Le mode de facturation flexible génère systématiquement une seule facture lors des cycles d’abonnement, ce qui élimine la nécessité de créer des factures distinctes pour les postes facturés à la consommation supprimés. | | **Date de début du cycle de facturation** | **Élimine les réinitialisations implicites du début du cycle de facturation.** Avec le mode de facturation flexible, le `billing_cycle_anchor` reste inchangé pendant les opérations qui l’ont précédemment réinitialisé, telles que la définition d’une date `cancel_at` ou le passage à un tarif non nul. | | **Annulation programmée** | **Comportement de calcul au prorata configurable pour `cancel_at`.** Vous pouvez désormais désactiver les calculs au prorata pour une première période d’abonnement tronquée (lorsque vous définissez `cancel_at` à la création) à l’aide du paramètre `proration_behavior`. | | **Antidatage** | **Divise la période antidatée en plusieurs postes de facture.** Le mode de facturation flexible crée des postes de facture distincts pour chaque période de facturation dans la plage antidatée. La date de début du cycle de facturation s’aligne automatiquement sur la `backdate_start_date` si vous ne la définissez pas explicitement. | | **Périodes d’essai** | **Met à jour la date de début de l’essai pour les essais suivants.** Lorsque vous ajoutez une deuxième période d’essai à un abonnement d’essai, le mode de facturation flexible utilise la date de début de l’essai la plus récente. **Préserve la date de fin initiale de l’essai lorsque la date d’annulation change.** Le mode de facturation flexible préserve la date `trial_end` si vous modifiez la date `cancel_at` pour qu’elle se produise avant la fin de la période d’essai. **Standardise la description des postes de la période d’essai.** Avec le mode de facturation flexible, les articles facturés à la consommation comme les articles sous licence utilisent un format de description cohérent (« Essai gratuit pour {quantity} x {product name} ») pour une présentation plus uniforme des informations relatives à l’essai. **Génère des postes pour les modifications apportées au cours d’une période d’essai.** En mode de facturation flexible, les postes qui n’ont pas été modifiés ne sont pas refacturés. Cela garantit que les clients ne sont facturés que pour les réajustements qu’ils effectuent au cours de leur essai. | | **Postes de facture en attente** | **Inclut systématiquement les postes de facture en attente.** Tous les postes de facture en attente disponibles sont désormais inclus lors de la génération de factures pour mises à jour. Auparavant, cela dépendait de la raison spécifique de la mise à jour de la facture. | Le mode de facturation flexible n’est pas compatible avec toutes les fonctionnalités de Stripe Billing. Les fonctionnalités suivantes sont actuellement incompatibles et renvoient un code d’erreur `400` lorsque vous créez et mettez à jour un abonnement en activant le mode flexible : - Facturation anticipée (Version bêta) - [Seuils de facturation](https://docs.stripe.com/billing/subscriptions/usage-based/thresholds.md) - [Ancienne facturation à l’usage](https://docs.stripe.com/billing/subscriptions/usage-based-legacy.md) - Les anciennes intégrations fiscales tierces utilisant `pay_immediately=false` (par exemple, [Avalara](https://support.stripe.com/questions/calculate-tax-with-avalara)) - L’ancien paramètre `max_occurrences` - `retry_settings` spécifique à l’abonnement ## Impact Par défaut, cette mise à jour n’a aucune incidence sur les abonnements nouveaux ou existants. Vous pouvez activer cette option en définissant `billing_mode[type]=flexible` sur les méthodes d’API suivantes : - [Créer un abonnement](https://docs.stripe.com/api/subscriptions/create.md?api-version=2025-06-30.basil) - [Créer une facture préliminaire](https://docs.stripe.com/api/invoices/create_preview.md?api-version=2025-06-30.basil) - [Créer une session Checkout](https://docs.stripe.com/api/checkout/sessions/create.md?api-version=2025-06-30.basil#create_checkout_session-subscription_data-billing_mode) - [Créer une planification d’abonnement](https://docs.stripe.com/api/subscription_schedules/create.md?api-version=2025-06-30.basil) - [Créer un devis](https://docs.stripe.com/api/quotes/create.md?api-version=2025-06-30.basil) Vous pouvez migrer des abonnements existantes de classique à flexible en transmettant le paramètre `billing_mode[type]=flexible` dans l’[endpoint de migration du mode facturation](https://docs.stripe.com/api/subscriptions/migrate.md?api-version=2025-06-30.basil). Le passage en mode facturation flexible est une mise à jour unidirectionnelle : vous ne pouvez pas revenir à un abonnement en mode classique après la migration. ## Modifications #### API REST #### Ruby #### Python #### PHP #### Java #### Node.js #### Go #### .NET ## Mise à niveau #### API REST 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Si vous utilisez un SDK, passez à une version correspondant à celle de l’API. - Si vous n’utilisez pas de SDK, mettez à jour vos [requêtes API](https://docs.stripe.com/api/versioning.md) pour inclure la `version Stripe : 2025-06-30.basil` 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### Ruby 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK Ruby vers [v15.3.0](https://github.com/stripe/stripe-ruby/releases/tag/v15.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### Python 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK Python vers [v12.3.0](https://github.com/stripe/stripe-python/releases/tag/v12.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### PHP 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK PHP vers [v17.4.0](https://github.com/stripe/stripe-php/releases/tag/v17.4.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### Java 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK Java vers [v29.3.0](https://github.com/stripe/stripe-java/releases/tag/v29.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### Node.js 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK Node vers [v18.3.0](https://github.com/stripe/stripe-node/releases/tag/v18.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### Go 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK Go vers [v82.3.0](https://github.com/stripe/stripe-go/releases/tag/v82.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md). #### .NET 1. [Consultez la version actuelle de votre API](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench) dans Workbench. 1. Mettez à niveau votre SDK .NET vers [v48.3.0](https://github.com/stripe/stripe-dotnet/releases/tag/v48.3.0) 1. Mettez à niveau la version de l’API utilisée pour les [endpoints de webhook](https://docs.stripe.com/webhooks/versioning.md). 1. [Testez votre intégration](https://docs.stripe.com/testing.md) avec la nouvelle version. 1. Si vous utilisez Connect, [testez votre intégration Connect](https://docs.stripe.com/connect/testing.md). 1. [Effectuez la mise à niveau](https://docs.stripe.com/upgrades.md#perform-the-upgrade) dans Workbench. Vous pourrez [revenir à la version précédente](https://docs.stripe.com/upgrades.md#roll-back-your-api-version) pendant 72 heures. En savoir plus sur les [mises à niveau de l’API Stripe](https://docs.stripe.com/upgrades.md).