Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
Billing
PrésentationÀ propos des API Billing
Abonnements
    Présentation
    Fonctionnement des abonnements
    Démarrer
    Démarrage rapide
    Planifier une intégration
    Créer une intégration
    Cas d'usage
    À propos des abonnements
    Activer le mode de facturation
    Définitions d'événements pour les abonnements
    Droits d'accès
    Factures d'abonnements
    Planifications d'abonnements
    Modèles tarifaires récurrents
    Authentification forte du client (SCA)
    Configurer des abonnements
    Configurer les méthodes de recouvrement
    Intégrez une grille tarifaire
    Définir des quantités
    Définir des cycles de facturation
    Gérer les abonnements
    Migrer des abonnements vers Stripe
    Abonnement à plusieurs articles
    Antidater des abonnements
    Définir des périodes d'essai
    Gérer les abonnements avec paiement différé
    Appliquer des bons de réduction
    Modifier des abonnements
      Modifier les tarifs
      Annuler les abonnements
      Suspendre l'encaissement des paiements
      Gérer des calculs au prorata
      Gérer des mises à jour en attente
    Gérer les modes de paiement des abonnements
    Analyses
Invoicing
Facturation à la consommation
Devis
Gestion des clients
Facturation avec d'autres produits
Recouvrement de revenus
Automatisations
Tester votre intégration
Tax
Présentation
Utiliser Stripe Tax
Gérer la conformité
Rapports
Présentation
Sélectionner un rapport
Configurer des rapports
API de rapport
Rapports sur plusieurs comptes
Comptabilisation des revenus
Données
PrésentationSchéma
Rapports personnalisés
Data Pipeline
Gestion des données
AccueilRevenusSubscriptionsModify subscriptions

Calculs au prorata

Comment gérer les calculs au prorata pour les abonnements modifiés.

L’aspect le plus complexe dans la modification des abonnements existants est le calcul au prorata, où le client est débité d’un pourcentage du coût de l’abonnement correspondant à son utilisation partielle. Cette page explique comment les calculs au prorata fonctionnent avec les abonnements et comment gérer les calculs au prorata pour vos clients.

Fonctionnement des calculs au prorata

Par exemple, la mise à niveau ou le déclassement d’un abonnement peuvent entraîner des paiements au prorata. Si un client met à niveau son plan, en passant de 10 USD par mois à 20 USD par mois, un montant au prorata correspondant au temps passé sur chaque option sera facturé. Si la modification s’est produite au milieu du cycle de facturation, le client est facturé 5 USD supplémentaires : -5 USD pour la période non consommée facturée au tarif initial et 10 USD pour la période restante facturée au nouveau tarif.

Si le calcul au prorata permet de facturer les clients de manière précise, il peut aussi entraîner des montants de paiement différents de ceux attendus. Les résultats négatifs ne sont pas automatiquement remboursés et les résultats positifs ne sont pas facturés immédiatement, bien qu’il soit possible d’effectuer ces deux actions manuellement.

Vous pouvez prévisualiser un calcul au prorata pour afficher le montant avant d’appliquer les modifications. Pour en savoir plus sur le fonctionnement des proratas de crédit, consultez notre guide.

Calculs au prorata et réductions

Tous les postes de facture qui sont au prorata (prorata=true) sont définis sur discountable=false. Les réductions appliquées à une facture contenant des prorata sont uniquement appliquées aux postes de facture et aux postes de facture qui ne sont pas au prorata. Toutes les réductions précédemment appliquées à l’abonnement et affectant le montant du prorata sont répercutées dans le montant du poste de facture au prorata.

Les discount_amounts non calculés au prorata affichent les ajustements de réduction.

Déclencheurs de calculs au prorata

Les scénarios suivants entraînent par défaut un calcul au prorata :

  • Remplacement du prix par un autre avec un coût de base différent
  • Remplacement du prix par un autre avec un intervalle de facturation différent
  • Ajout d’une période d’essai à un abonnement actif
  • Modification de la quantité
  • Les abonnements sous licence (par utilisateur) (car ils sont facturés au début de chaque période de facturation)

Création manuelle de vos calculs au prorata

Pour effectuer vos propres calculs au prorata en dehors de Stripe et les ajouter à l’abonnement, transmettez add_invoice_items avec un unit_amount négatif (égal au montant calculé au prorata) aux endpoints suivants :

  • CreateSubscription
  • UpdateSubscription
  • CreateSubscriptionSchedule
  • UpdateSubscriptionSchedule

Application des calculs au prorata

Les calculs au prorata s’appliquent uniquement aux paiements qui ont lieu en amont du cycle de facturation. La facturation à l’usage n’est pas soumise au calcul au prorata.

Le montant au prorata est calculé dès que l’API met à jour l’abonnement. Le début et la fin de la période de facturation en cours sont utilisés pour calculer le coût de l’abonnement avant et après la modification.

Calculs au prorata et factures impayées

Stripe calcule les prorata en fonction de l’état de l’abonnement au moment de la mise à jour, en supposant que toutes les factures antérieures pour l’abonnement seront finalement payées. Si un client modifie son abonnement alors qu’il a une facture impayée pour la période en cours, il est possible qu’il reçoive un crédit pour le temps non utilisé de l’offre la plus chère, même s’il n’a pas encore payé pour cette période.

Pour éviter d’avoir à créditer du temps non payé, vous pouvez désactiver les calculs au prorata si la dernière facture de l’abonnement n’a pas été payée. Lors de la mise à jour de l’abonnement, définissez proration_behavior sur none. Sélectionnez l’une des approches suivantes :

  1. Pour conserver le cycle de facturation initial : Créez manuellement une facture ponctuelle pour tout nouveau paiement.
  2. Pour débiter immédiatement le nouveau plan et réinitialiser le cycle de facturation : définissez billing_cycle_anchor sur now. Pour plus de détails, consultez la page Réinitialiser le cycle de facturation sur l’heure actuelle.

L’une ou l’autre de ces approches peut entraîner un double paiement si le client paie finalement l’ancienne facture. Pour éviter cela, annulez la facture impayée.

Taxes et calculs au prorata

Pour en savoir plus sur le fonctionnement des taxes avec les calculs au prorata, veuillez consulter la page Collecter des taxes pour les paiements récurrents.

Calculs des 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 calculer les crédits au prorata, selon que vous définissez le billing_mode de votre abonnement sur classic ou flexible.

Logique de calcul sans calculs au prorata

Dans le scénario suivant, vous passez d’un abonnement mensuel 10 USD à 20 USD avec le paramètre proration_behavior défini sur none pendant 10 jours. Il n’y a pas de débit précédent sur lequel le baser. Plus tard, vous passez à un abonnement mensuel à 10 USD avec le paramètre proration_behavior défini sur always_invoice.

Pour configurer ce scénario, vous devez d’abord créer un abonnement pour 10 USD par mois le 1er avril :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_10_monthly

La réponse inclut la facture créée pour cet abonnement :

Create subscription response
{ id: "sub_123", latest_invoice: { id: "in_123", total: 10_00, currency: "usd" } }

Ensuite, le 11 avril, vous passez l’abonnement à 20 USD par mois sans créer de prorata :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_20_monthly \ -d proration_behavior=none

La dernière facture reste inchangée, car proration_behavior est none :

Upgrade subscription response
{ id: "sub_123", latest_invoice: { id: "in_123" } }

Enfin, le 21 avril, vous passez à 10 USD par mois et créez des prorata :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_10_monthly \ -d proration_behavior=always_invoice
ClassiqueFlexible
La logique de calcul au prorata billing_mode=classic crée un crédit au prorata basé sur le tarif actuel, même si le client n’a jamais payé le tarif mensuel 20 USD. La dernière facture crédite un tiers du mois de 20 USD (-6.67 USD), même si le client n’a jamais payé le tarif price_20_monthly. Elle débite également un tiers du mois de 10 USD (3.33 USD).La logique de calcul activée avec billing_mode=flexible crée un crédit au prorata en fonction du dernier tarif facturé pour le poste d’abonnement. Dans ce cas, la dernière facture crédite un tiers de mois pour le 10 USD tarif mensuel facturé le 1er avril (3.33 USD) et débite un tiers du mois pour le 10 USD tarif (3.33 USD). Le crédit et le débit s’annulent, de sorte que le total de la facture est de 0 USD.
# billing_mode = classic { id: "sub_123", latest_invoice: { id: "in_456", total: -3_34, currency: "usd" } }
# billing_mode = flexible { id: "sub_123", latest_invoice: { id: "in_456", total: 0, currency: "usd" } }

Logique de calcul des bons de réduction appliqués à plusieurs postes d’abonnement

Stripe pondère le bon de réduction amount_off sur le prorata de crédit afin d’éviter un trop-payé.

Dans le scénario suivant, un bon de réduction de 5 USD est alloué de manière inégale à un abonnement mensuel de 25 USD pour un poste à 10 USD et un poste à 20 USD.

Pour configurer ce scénario, vous créez un abonnement avec plusieurs postes et un bon de réduction le 1er février :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_20_monthly \ -d "discounts[0][coupon]"=five_dollars_off

L’exemple ci-dessus renvoie cette réponse :

Create subscription with multiple items and a coupon response
{ id: "sub_123", latest_invoice: { id: "in_123", total: 25_00, currency: "usd", lines: { data: [ { id: "ili_1", amount: 10_00, price: "price_10_monthly", discount_amounts: [{ discount: "di_a", amount: 1_66 }] }, { id: "ili_2", amount: 20_00, price: "price_20_monthly", discount_amounts: [{ discount: "di_a", amount: 3_34 }] }, ] } } }

Pour annuler le poste d’abonnement mensuel 10 USD à l’aide de billing_mode=classic :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscription_items/si_10_monthly \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d proration_behavior=create_prorations

Pour annuler le même élément à l’aide de billing_mode=flexible :

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscription_items/si_10_monthly \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d proration_behavior=create_prorations \ -d billing_mode=flexible
ClassiqueFlexible
Le comportement par défaut distribue un bon de réduction de 5 USD à chaque article ( chacun), annulant le poste le moins cher (5 USD) et entraînant un remboursement de . Stripe calcule le total avec la formule -0,5 x (10 USD price - 5 USD coupon) = -2,50 USD.Le comportement flexible reflète la réduction proportionnelle appliquée au poste annulé, plutôt que d’appliquer potentiellement le montant total de la réduction au calcul au prorata. Stripe calcule le total à l’aide de la formule -0,5 x (10 USD price - 1,66 USD discount amount) = -4,17 USD.
# billing_mode = classic { "id": "sub_123", "latest_invoice": { "id": "in_456", "total": -250, "currency": "usd" } }
# billing_mode = flexible { "id": "sub_123", "latest_invoice": { "id": "in_789", "total": -417, "currency": "usd" } }

Prévisualiser un calcul au prorata

Vous pouvez créer un aperçu de facture pour prévisualiser les modifications apportées à un abonnement. Cet appel à l’API ne modifie pas l’abonnement. Il renvoie la facture à venir uniquement en fonction des paramètres que vous transmettez. La modification du price ou de la quantity entraîne un calcul au prorata. Cet exemple modifie le price et définit une date pour le paiement au prorata.

Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# Set proration date to this moment: proration_date = Time.now.to_i subscription = Stripe::Subscription.retrieve('sub_49ty4767H20z6a') # See what the next invoice would look like with a price switch # and proration set: items = [{ id: subscription.items.data[0].id, price: 'price_CBb6IXqvTLXp3f', # Switch to new price }] invoice = Stripe::Invoice.create_preview({ customer: 'cus_4fdAW5ftNQow1a', subscription: 'sub_49ty4767H20z6a', subscription_details: { items: items, proration_date: proration_date, } })

Vous pouvez développer l’exemple de réponse ci-dessous pour afficher :

  • Le crédit pour la période non consommée facturée au tarif précédent aux lignes 36-38.
  • Le coût pour la période écoulée au nouveau tarif aux lignes 107-109.
  • Le nouveau sous-total et total de la facture aux lignes 276-279.
{ "id": "upcoming_in_1OujwkClCIKljWvsq5v2ICAN", "account_country": "US", "account_name": "Test account", "amount_due": 3627, "amount_paid": 0, "amount_remaining": 3627, "application_fee_amount": null, "attempt_count": 0, "attempted": false,

Utilisez ces informations pour confirmer les modifications avec le client avant de modifier l’abonnement. Stripe effectue le calcul au prorata à la seconde près, les montants calculés au prorata peuvent donc varier entre le moment où ils sont prévisualisés et le moment où la mise à jour est effectuée. Pour éviter cette situation, ajoutez subscription_proration_date à la facture lorsque vous prévisualisez une modification. Lorsque vous mettez à jour l’abonnement, transmettez la même date avec le paramètre proration_date dans un abonnement, afin que le montant au prorata soit calculé au même moment.

Ruby
Python
PHP
Java
Node
Go
.NET
No results
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
subscription = Stripe::Subscription.update( 'sub_49ty4767H20z6a', { items: [ { id: subscription.items.data[0].id, price: 'price_CBb6IXqvTLXp3f', }, ], proration_date: proration_date, } )

Contrôler le comportement des calculs au prorata

Le calcul au prorata est contrôlé par le paramètre proration_behavior, qui propose trois options de paramétrages possibles : create_prorations, always_invoice et none.

Comportement par défaut

Le paramètre par défaut de proration_behavior est create_prorations’, ce qui permet de créer des postes de facture au prorata, le cas échéant. Ces postes au prorata ne sont facturés immédiatement que sous certaines conditions.

Créer des calculs au prorata immédiats

Pour facturer immédiatement un client en cas de modification d’un abonnement au cours du même cycle de facturation, définissez proration_behavior sur always_invoice. Le système effectue le calcul au prorata, puis génère immédiatement une facture.

Désactiver les calculs au prorata

Pour désactiver les calculs au prorata par requête, définissez le paramètre proration_behavior sur none. Il n’existe aucun paramètre qui désactive tous les calculs au prorata futurs pour un abonnement. Pour désactiver les calculs au prorata indéfiniment, définissez proration_behavior sur none pour chaque requête générant des calculs au prorata :

Command Line
curl
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_49ty4767H20z6a \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "items[0][id]"="si_1AkFf6LlRB0eXbMtRFjYiJ0J" \ -d "items[0][price]"="price_CBb6IXqvTLXp3f" \ -d "proration_behavior"="none"

Lorsque les calculs au prorata sont désactivés, les clients doivent payer le montant total au nouveau tarif lors de la génération de la facture suivante.

Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Rejoignez notre programme d'accès anticipé.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc