# 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](https://docs.stripe.com/billing/subscriptions/change-price.md) d’un abonnement peuvent entraîner des paiements au prorata. Si un client met à niveau son plan, en passant de 10&nbsp;USD par mois à 20&nbsp;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&nbsp;USD supplémentaires&nbsp;: -5&nbsp;USD pour la période non consommée facturée au tarif initial et 10&nbsp;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](https://docs.stripe.com/billing/subscriptions/prorations.md#preview-proration) pour afficher le montant avant d’appliquer les modifications. Pour en savoir plus sur [le fonctionnement des proratas de crédit](https://docs.stripe.com/billing/subscriptions/prorations.md#credit-prorations), consultez notre guide.

### Calculs au prorata et réductions

Tous les [invoice items](https://docs.stripe.com/api/invoiceitems/object.md#invoiceitem_object) 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 [invoice items](https://docs.stripe.com/api/invoiceitems/object.md#invoiceitem_object-discounts) et aux [invoice line items](https://docs.stripe.com/api/invoice-line-item/object.md#invoice_line_item_object-discounts) 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](https://docs.stripe.com/api/invoice-line-item/object.md#invoice_line_item_object-discount_amounts) non calculés au prorata affichent les ajustements de réduction.

#### Modifications et prorata des réductions

La mise à jour des codes promotionnels, des bons de réduction ou des réductions au niveau de l’abonnement en soi ne crée pas de postes de facture au prorata. Seules les modifications qui affectent les montants facturables pour le cycle de facturation actuel donnent lieu à un prorata, telles que&nbsp;:

- Modification du `price` ou de la `quantity` d’un élément d’abonnement
- Ajout ou suppression d’éléments d’abonnement
- Modification des ancres du cycle de facturation ou du comportement prorata

Lorsque vous effectuez une modification qui crée un prorata, Stripe calcule les montants au prorata en utilisant la tarification et l’état de réduction actuels de l’abonnement au moment du calcul du prorata. Si vous modifiez des réductions dans le cadre du même appel à l’API qui déclenche également des prorata (par exemple, en modifiant la quantité d’un élément et une réduction en une seule mise à jour), le débit ou le crédit au prorata est calculé en utilisant les réductions modifiées.

Par exemple&nbsp;:

- **Mise à jour des métadonnées d’un élément d’abonnement uniquement ou application ou suppression d’une réduction&nbsp;:** aucun poste de facture prorata n’est créé, et aucun paiement ou crédit prorata immédiat n’apparaît sur la facture à venir.
- **Mise à jour de la quantité d’un élément d’abonnement et suppression d’une réduction dans le même appel&nbsp;:** des postes de facture prorata sont créés pour la modification de la quantité, et les montants au prorata reflètent les prix après la modification de la réduction. La réduction modifiée est utilisée dans le calcul au prorata.

Pour en savoir plus sur le fonctionnement des réductions sur les abonnements, notamment sur la consommation et la suppression des bons de réduction `duration=once` de `subscription.discounts`, consultez [Bons de réduction et codes promotionnels](https://docs.stripe.com/billing/subscriptions/coupons.md#coupon-duration).

### Déclencheurs de calculs au prorata

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

| Modifier                                                                                                                                                                                                                        | Désignation                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Modification des [éléments](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items)                                                                                                                      | Ajouter un nouvel élément ou supprimer un élément existant                      |
| Modification des [prix](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-price)                                                                                                                    | Passage à un prix avec un coût de base ou une période de facturation différents |
| Changement de la [quantité](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-quantity)                                                                                                             | Augmenter ou diminuer la quantité d’un élément d’abonnement                     |
| Ajout de paramètre [trial_end](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_end) ou [trial_from_plan](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_from_plan) | Ajout d’une période d’essai à un abonnement actif                               |
| Modification de [billing_cycle_anchor](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-billing_cycle_anchor)                                                                                            | Réinitialisation de la période de facturation à une nouvelle date               |
| Définir le paramètre [cancel_at](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancel_at)                                                                                                             | Annulation d’un abonnement en cours de période (et non à la fin de la période)  |

### Ce qui ne déclenche pas les calculs au prorata

De nombreuses mises à jour d’abonnement n’affectent pas la facturation et ne génèrent pas de prorata. Effectuez ces mises à jour à tout moment sans créer de postes de facture *au prorata*&nbsp;:

| Paramètres                                                                                                                                                                                                                                      | Désignation                                                                        |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Mises à jour des configurations et des paramètres**                                                                                                                                                                                           |                                                                                    |
| [automatic_tax](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-automatic_tax)                                                                                                                                          | Activer ou désactiver le calcul automatique des taxes                              |
| [default_payment_method](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-default_payment_method)                                                                                                                        | Modifier le moyen de paiement par défaut                                           |
| [default_source](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-default_source)                                                                                                                                        | Modifier la source de paiement par défaut                                          |
| [payment_behavior](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-payment_behavior)                                                                                                                                    | Contrôler le comportement des tentatives de paiement                               |
| [collection_method](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-collection_method)                                                                                                                                  | Changement entre la facturation automatique et l’envoi de la facture               |
| [days_until_due](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-days_until_due)                                                                                                                                        | Mettre à jour la date d’échéance du paiement pour les abonnements avec facturation |
| [tax_filing_currency](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-tax_filing_currency)                                                                                                                              | Modifier la devise de déclaration fiscale                                          |
| [retry_settings](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-retry_settings)                                                                                                                                        | Modifier le comportement de relance des paiements échoués                          |
| [trial_settings](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_settings)                                                                                                                                        | Mettre à jour les paramètres comportement de fin d’essai                           |
| [pay_immediately](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pay_immediately)                                                                                                                                      | Contrôler le comportement de paiement immédiat                                     |
| [pending_invoice_item_interval](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pending_invoice_item_interval)                                                                                                          | Modifier la fréquence de facturation des éléments en attente                       |
| [pause_collection](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pause_collection)                                                                                                                                    | Suspendre ou reprendre le recouvrement des paiements                               |
| [proration_date](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-proration_date)                                                                                                                                        | Définir une date de prorata spécifique (ne crée pas de prorata en soi)             |
| **Métadonnées et champs descriptifs**                                                                                                                                                                                                           |                                                                                    |
| [métadonnées](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-metadata) et [items.metadata](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-metadata)                                     | Mettre à jour les métadonnées de l’abonnement/éléments d’abonnement                |
| [cancellation_details](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancellation_details)                                                                                                                            | Ajouter des commentaires et des informations sur l’annulation                      |
| **Mises à jour qui servent de paramètres pour les futurs changements de facturation à l’exclusion de prorata**                                                                                                                                  |                                                                                    |
| [discounts](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-discounts) et [items.discounts](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-discounts)                                    | Ajouter ou mettre à jour des remises (s’applique aux factures futures)             |
| [billing_thresholds](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-billing_thresholds) et[items.billing_thresholds](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-billing_thresholds) | Mettre à jour les seuils de facturation pour les abonnements/éléments d’abonnement |
| [cancel_at_period_end](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancel_at_period_end)                                                                                                                            | Annuler à la fin de la période en cours sans prorata                               |
| [add_invoice_items](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-add_invoice_items)                                                                                                                                  | Ajouter des paiements ponctuels à la prochaine facture                             |

> Ces mises à jour ne génèrent pas de postes de facture au prorata avec les paramètre `proration_behavior=create_prorations` ni de factures avec postes de facture au prorata avec le paramètre `proration_behavior=always_invoice`, car elles ne modifient pas le montant de la facture pour la période en cours.

### 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](https://docs.stripe.com/api/subscription_schedules/create.md#create_subscription_schedule-add_invoice_items) avec un `unit_amount` négatif (égal au montant calculé au prorata) aux endpoints suivants&nbsp;:

- [CreateSubscription](https://docs.stripe.com/api/subscriptions/create.md)
- [UpdateSubscription](https://docs.stripe.com/api/subscriptions/update.md)
- [CreateSubscriptionSchedule](https://docs.stripe.com/api/subscription_schedules/create.md)
- [UpdateSubscriptionSchedule](https://docs.stripe.com/api/subscription_schedules/update.md)

### Application des calculs au prorata

Les proratas ne s’appliquent qu’aux débits qui ont lieu avant la période de facturation. La [facturation à l’usage](https://docs.stripe.com/billing/subscriptions/usage-based.md) n’est pas soumise 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 calculs au prorata en établi de l’état de l’abonnement au moment de la mise à jour, en supposant que toutes les factures précédentes de l’abonnement seront payées à terme. Si un client modifie son abonnement alors qu’il a une facture impayée pour la période en cours, il peut recevoir un crédit pour la période non utilisée sur 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](https://docs.stripe.com/api/subscriptions/update.md?update_subscription-proration_behavior=#update_subscription-proration_behavior) sur `none`. Sélectionnez l’une des approches suivantes&nbsp;:

1. **Pour conserver la période de facturation d’origine&nbsp;:** [créez manuellement une facture ponctuelle](https://docs.stripe.com/api/invoices/create.md) pour tous les nouveaux frais.
1. **Pour facturer immédiatement la nouvelle offre et réinitialiser la période de facturation**&nbsp;: définissez l’`billing_cycle_anchor` sur `now`. Pour plus de détails, consultez [Réinitialiser la période de facturation à la date actuelle](https://docs.stripe.com/billing/subscriptions/billing-cycle.md#reset-the-billing-period-to-the-current-time).

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](https://docs.stripe.com/api/invoices/void.md).

### 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](https://docs.stripe.com/billing/taxes/collect-taxes.md).

## 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](https://docs.stripe.com/billing/Subscriptions/billing-mode.md#differences-between-classic-and-flexible-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&nbsp;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](https://docs.stripe.com/api/subscriptions/create.md) pour 10 USD par mois le 1er avril :

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "items[0][price]=price_10_monthly"
```

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

```json
{
  "id": "sub_123",
  "latest_invoice": {
    "id": "in_123",
    "total": 1000,
    "currency": "usd"
  }
}
```

Ensuite, le 11 avril, vous [passez l’abonnement](https://docs.stripe.com/billing/subscriptions/change-price.md#changing) à 20 USD par mois sans créer de prorata&nbsp;:

```curl
curl https://api.stripe.com/v1/subscriptions/sub_123 \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "items[0][id]=sub_item_1" \
  -d "items[0][price]=price_20_monthly" \
  -d proration_behavior=none
```

La dernière facture reste inchangée, car `proration_behavior` est `none`&nbsp;:

```json
{
  "id": "sub_123",
  "latest_invoice": {
    "id": "in_123"
  }
}
```

Enfin, le 21 avril, vous [réduisez l’abonnement](https://docs.stripe.com/billing/subscriptions/change-price.md#changing) à 10 USD par mois et créez des prorata&nbsp;:

```curl
curl https://api.stripe.com/v1/subscriptions/sub_123 \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "items[0][id]=sub_item_1" \
  -d "items[0][price]=price_10_monthly" \
  -d proration_behavior=always_invoice
```

| **Classique**                                                                                                                                                                                                                                                                                                                                                         | **Flexible**                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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&nbsp;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. |
| ```json
    # billing_mode = classic
    {
      "id": "sub_123",
      "latest_invoice": {
        "id": "in_456",
        "total": -334,
        "currency": "usd"
      }
    }
  ```                                                                                                                                                                              | ```json
    # 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&nbsp;février&nbsp;:

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "items[0][price]=price_10_monthly" \
  -d "items[1][price]=price_20_monthly" \
  -d "discounts[0][coupon]=five_dollars_off"
```

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

```json
{
  "id": "sub_123",
  "latest_invoice": {
    "id": "in_123",
    "total": 2500,
    "currency": "usd",
    "lines": {
      "data": [
      {
        "id": "ili_1",
        "amount": 1000,
        "price": "price_10_monthly",
        "discount_amounts": [{
          "discount": "di_a",
          "amount": 166 }] },
      {
        "id": "ili_2",
        "amount": 2000,
        "price": "price_20_monthly",
        "discount_amounts": [{
          "discount": "di_a",
          "amount": 334
          }]
        }
    ] }
  }
}

```

Pour annuler l’élément d’abonnement mensuel de 10 USD&nbsp;:

```curl
curl https://api.stripe.com/v1/subscription_items/si_10_monthly \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d proration_behavior=create_prorations
```

Lorsqu’un élément d’abonnement est supprimé, le `billing_mode` associé à cet abonnement détermine le mode de calcul du prorata comme suit&nbsp;:

| **Classique**                                                                                                                                                                                                                                                         | **Flexible**                                                                                                                                                                                                                                                                                          |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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`. |
| ```json
    # billing_mode = classic
    {
      "id": "sub_123",
      "latest_invoice": {
        "id": "in_456",
        "total": -250,
        "currency": "usd"
      }
    }
  ```                                                                              | ```json
    # 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](https://docs.stripe.com/api/invoices/create_preview.md) pour prévisualiser les modifications apportées à un abonnement. Cet appel à l’API ne modifie pas l’abonnement. Il renvoie la *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) à 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.

#### Accounts&nbsp;v2

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

# Set proration date to this moment:
proration_date = Time.now.to_i

subscription = client.v1.subscriptions.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 = client.v1.invoices.create_preview({
  customer_account: 'acct_4fdAW5ftNQow1a',
  subscription: 'sub_49ty4767H20z6a',
  subscription_details: {
    items: items,
    proration_date: proration_date,
  }
})
```

#### Customers&nbsp;v1

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

# Set proration date to this moment:
proration_date = Time.now.to_i

subscription = client.v1.subscriptions.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 = client.v1.invoices.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&nbsp;:

- 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.

```json
{
  "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,
  "billing_reason": "upcoming",
  "charge": null,
  "collection_method": "charge_automatically",
  "created": 1599427688,
  "currency": "usd",
  "custom_fields": null,
  "customer": "cus_DGEhAXrZWrzdYs",
  "customer_address": null,
  "customer_email": "jenny.rosen@example.com",
  "customer_name": null,
  "customer_phone": null,
  "customer_shipping": null,
  "customer_tax_exempt": "none",
  "customer_tax_ids": [],
  "default_payment_method": null,
  "default_source": null,
  "default_tax_rates": [],
  "description": null,
  "discount": null,
  "discounts": [],
  "due_date": null,
  "ending_balance": 0,
  "footer": null,
  "lines": {
    "data": [
      {"amount": -166,
        "currency": "usd",
        "description": "Unused time on Silver plan after 01 Sep 2020",
        "discount_amounts": [],
        "discountable": false,
        "discounts": [],
        "id": "il_tmp1HMdV2AJVYItwOKqQi4H",
        "invoice_item": "ii_1HMdV2AJVYItwUH1Qi4H",
        "livemode": false,
        "metadata": {},
        "object": "line_item",
        "period": {
          "end": 1599427688,
          "start": 1598982148
        },
        "plan": {
          "active": true,
          "amount": 1000,
          "amount_decimal": "1000",
          "billing_scheme": "per_unit",
          "created": 1585856460,
          "currency": "usd",
          "id": "price_H1c8v1lifcd",
          "interval": "month",
          "interval_count": 1,
          "livemode": false,
          "metadata": {},
          "nickname": null,
          "object": "plan",
          "product": "prod_c7exjJHbC4",
          "tiers": null,
          "tiers_mode": null,
          "transform_usage": null,
          "trial_period_days": null,
          "usage_type": "licensed"
        },
        "price": {
          "active": true,
          "billing_scheme": "per_unit",
          "created": 1585856460,
          "currency": "usd",
          "id": "price_c8v1liEvrf",
          "livemode": false,
          "lookup_key": null,
          "metadata": {},
          "nickname": null,
          "object": "price",
          "product": "prod_c7exjJHbC4",
          "recurring": {
            "interval": "month",
            "interval_count": 1,
            "trial_period_days": null,
            "usage_type": "licensed"
          },
          "tiers_mode": null,
          "transform_quantity": null,
          "type": "recurring",
          "unit_amount": 1000,
          "unit_amount_decimal": "1000"
        },
        "proration": true,
        "quantity": 1,
        "subscription": "sub_H38lqYjDO0DSzl",
        "subscription_item": "si_H38lIMagWoFx0W",
        "tax_amounts": [],
        "tax_rates": [],
        "type": "invoiceitem"
      },
      {"amount": 541,
        "currency": "usd",
        "description": "Remaining time on Gold plan after 01 Sep 2020",
        "discount_amounts": [],
        "discountable": false,
        "discounts": [],
        "id": "il_tmp1HMdV2AJVYItwOKqDcgkmpzz",
        "invoice_item": "ii_1HMdV2AJVYItwOKqDcgkmpzz",
        "livemode": false,
        "metadata": {},
        "object": "line_item",
        "period": {
          "end": 1599427688,
          "start": 1598982148
        },
        "plan": {
          "active": true,
          "amount": 3252,
          "amount_decimal": "3252",
          "billing_scheme": "per_unit",
          "created": 1598473039,
          "currency": "usd",
          "id": "price_KV3bAJVYItwOKq16frkr",
          "interval": "month",
          "interval_count": 1,
          "livemode": false,
          "metadata": {},
          "nickname": null,
          "object": "plan",
          "product": "prod_JfJiw2l6ke",
          "tiers": null,
          "tiers_mode": null,
          "transform_usage": null,
          "trial_period_days": null,
          "usage_type": "licensed"
        },
        "price": {
          "active": true,
          "billing_scheme": "per_unit",
          "created": 1598473039,
          "currency": "usd",
          "id": "price_KV3bAJVYItwOKq16frkr",
          "livemode": false,
          "lookup_key": null,
          "metadata": {},
          "nickname": null,
          "object": "price",
          "product": "prod_JfJiw2l6ke",
          "recurring": {
            "interval": "month",
            "interval_count": 1,
            "trial_period_days": null,
            "usage_type": "licensed"
          },
          "tiers_mode": null,
          "transform_quantity": null,
          "type": "recurring",
          "unit_amount": 3252,
          "unit_amount_decimal": "3252"
        },
        "proration": true,
        "quantity": 1,
        "subscription": "sub_H38lqYjDO0DSzl",
        "subscription_item": "si_H38lIMagWoFx0W",
        "tax_amounts": [],
        "tax_rates": [],
        "type": "invoiceitem"
      },
      {
        "amount": 3252,
        "currency": "usd",
        "description": "1 \u00d7 Gold product (at $32.52 / month)",
        "discount_amounts": [],
        "discountable": true,
        "discounts": [],
        "id": "il_tmp_7fc9ba9b6aa9aa",
        "livemode": false,
        "metadata": {},
        "object": "line_item",
        "period": {
          "end": 1602019688,
          "start": 1599427688
        },
        "plan": {
          "active": true,
          "amount": 3252,
          "amount_decimal": "3252",
          "billing_scheme": "per_unit",
          "created": 1598473039,
          "currency": "usd",
          "id": "price_KV3bAJVYItwOKq16frkr",
          "interval": "month",
          "interval_count": 1,
          "livemode": false,
          "metadata": {},
          "nickname": null,
          "object": "plan",
          "product": "prod_JfJiw2l6ke",
          "tiers": null,
          "tiers_mode": null,
          "transform_usage": null,
          "trial_period_days": null,
          "usage_type": "licensed"
        },
        "price": {
          "active": true,
          "billing_scheme": "per_unit",
          "created": 1598473039,
          "currency": "usd",
          "id": "price_KV3bAJVYItwOKq16frkr",
          "livemode": false,
          "lookup_key": null,
          "metadata": {},
          "nickname": null,
          "object": "price",
          "product": "prod_JfJiw2l6ke",
          "recurring": {
            "interval": "month",
            "interval_count": 1,
            "trial_period_days": null,
            "usage_type": "licensed"
          },
          "tiers_mode": null,
          "transform_quantity": null,
          "type": "recurring",
          "unit_amount": 3252,
          "unit_amount_decimal": "3252"
        },
        "proration": false,
        "quantity": 1,
        "subscription": "sub_H38lqYjDO0DSzl",
        "subscription_item": "si_H38lIMagWoFx0W",
        "tax_amounts": [],
        "tax_rates": [],
        "type": "subscription"
      }
    ],
    "has_more": false,
    "object": "list",
    "total_count": 3,
    "url": "/v1/invoices/upcoming_in_1OujwkClCIKljWvsq5v2ICAN/lines"
  },
  "livemode": false,
  "metadata": {},
  "next_payment_attempt": 1599431288,
  "number": null,
  "object": "invoice",
  "paid": false,
  "payment_intent": null,
  "period_end": 1599427688,
  "period_start": 1596749288,
  "post_payment_credit_notes_amount": 0,
  "pre_payment_credit_notes_amount": 0,
  "receipt_number": null,
  "starting_balance": 0,
  "statement_descriptor": null,
  "status": "draft",
  "status_transitions": {
    "finalized_at": null,
    "marked_uncollectible_at": null,
    "paid_at": null,
    "voided_at": null
  },
  "subscription": "sub_8lqYjDO0DS",
  "subscription_details": {
    "proration_date": 1598982148
  },"subtotal": 3627,
  "tax": null,
  "tax_percent": null,
  "total": 3627,
  "total_discount_amounts": [],
  "total_tax_amounts": [],
  "transfer_data": null,
  "webhooks_delivered_at": null
}
```

Utilisez ces informations pour confirmer les modifications avec le client avant de modifier l’abonnement. Puisque Stripe facture au prorata le second élément, le montant facturé au prorata peut changer entre le moment de l’aperçu et le moment de la mise à jour. Pour éviter cela, transmettez une valeur `subscription_details.proration_date` dans 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

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

subscription = client.v1.subscriptions.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](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-proration_behavior), qui propose trois options de paramétrages possibles&nbsp;: `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](https://docs.stripe.com/billing/subscriptions/change-price.md#immediate-payment).

### Créer des calculs au prorata immédiats

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` lorsque vous modifiez l’abonnement. Cela calcule le 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&nbsp;:

#### curl

```bash
curl https://api.stripe.com/v1/subscriptions/sub_49ty4767H20z6a \
  -u <<YOUR_SECRET_KEY>>: \
  -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.
