# Définir les quantités de produits ou d'abonnements Abonnez un client à plusieurs produits, ou à plusieurs quantités d'un même produit, le tout facturé sur une seule facture. Vous devrez peut-être créer des abonnements pour [plusieurs produits](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-product-sub) ou pour [plusieurs quantités du même produit](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-quantities-sub). Vous pouvez également créer [plusieurs abonnements pour des clients individuels](https://docs.stripe.com/billing/subscriptions/quantities.md#multiple-subscriptions). ## Abonnements à plusieurs produits Si vous proposez plusieurs produits ou si vous souhaitez facturer des montants différents pour le même produit, vous pouvez créer un abonnement pour plusieurs produits. Cela génère une seule *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) chaque période de facturation qui combine tous les tarifs, et le client n’a qu’à effectuer un seul paiement. ### Créer un abonnement à plusieurs produits Créez des abonnements à plusieurs produits pour un client à l’aide du paramètre [items](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-items). Fournissez le `pice` et, éventuellement, une `quantity` (lorsque vous utilisez une valeur autre que 1) pour chaque produit : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]=price_CBXbz9i7AIOTzr" \ -d "items[1][price]=price_IFuCu48Snc02bc" \ -d "items[1][quantity]=2" ``` La réponse inclut une liste de tous les postes d’abonnement, tarifs et quantités : ```json { "id": "sub_CZEpS1Zt9QLxdo", "object": "subscription", ... "items": { "object": "list", "data": [ { "id": "si_H1yPnAVzP9vDRW", "object": "subscription_item", "billing_thresholds": null, "created": 1585939321, "metadata": { }, "price": { "id": "price_H1c8v1liEvrfcd", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1585856460, "currency": "usd", "livemode": false, "lookup_key": null, "metadata": { }, "nickname": null, "product": "prod_H1c7exjJHbC4sr", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers": null, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 1, "subscription": "sub_H1yPRslJXa4TUt", "tax_rates": [ ] }, { "id": "si_H1yPu4fSjq3oqM", "object": "subscription_item", "billing_thresholds": null, "created": 1585939321, "metadata": { }, "price": { "id": "price_H1yCssogQ6gtx1", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1585938535, "currency": "usd", "livemode": false, "lookup_key": null, "metadata": { }, "nickname": null, "product": "prod_H1c7exjJHbC4sr", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers": null, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 2000, "unit_amount_decimal": "2000" }, "quantity": 2, "subscription": "sub_H1yPRslJXa4TUt", "tax_rates": [ ] } ] }, ... } ``` ### Périodes de facturation avec plusieurs tarifs Les abonnements qui appliquent un tarif fixe à un intervalle donné sont facturés au début de chaque [période de facturation (cycle)](https://docs.stripe.com/billing/subscriptions/billing-cycle.md). Avec chaque facture, le client paie effectivement pour le prochain intervalle de service. Avec la [facturation à l’usage](https://docs.stripe.com/products-prices/pricing-models.md#usage-based-pricing), le montant payé par le client varie en fonction de la consommation au cours de la période de facturation, de sorte que le client paie pour son utilisation à la fin. Lorsqu’un abonnement combine un tarif fixe avec une facturation à l’usage, l’utilisation effective de la période de facturation précédente est facturée en même temps que le tarif fixe pour la nouvelle période de facturation au début de chaque renouvellement. La facturation à l’usage et le tarif fixe sont combinés dans une seule facture. L’utilisation de plusieurs produits avec un abonnement entraînant une seule facture et un seul paiement, tous les tarifs de ces produits doivent utiliser la même devise. Vous êtes également limité à 20 produits dans un seul abonnement. Pour gérer plusieurs produits dans un abonnement qui peuvent avoir des périodes de facturation différentes, vous pouvez créer un [abonnement à intervalles mixtes](https://docs.stripe.com/billing/subscriptions/mixed-interval.md). ### Réductions, taxes et périodes d’essai Lorsque vous utilisez plusieurs produits, vous pouvez également créer des [réductions](https://docs.stripe.com/billing/subscriptions/coupons.md), appliquer des [taxes](https://docs.stripe.com/billing/taxes/collect-taxes.md) et utiliser des [périodes d’essai](https://docs.stripe.com/billing/subscriptions/trials.md) de la même manière que vous le feriez avec un abonnement à un seul produit. Fournissez ces arguments lorsque vous [créez](https://docs.stripe.com/api/subscriptions/create.md) ou [mettez à jour](https://docs.stripe.com/api/subscriptions/update.md) un abonnement pour les appliquer à l’ensemble de l’abonnement, ou fournissez-les au niveau du poste pour n’appliquer la réduction qu’à un poste spécifique. ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "discounts[0][coupon]=free-period" \ -d "default_tax_rates[0]=txr_1EO66sClCIKljWvs98IiVfHW" \ -d trial_end=1610403705 \ -d "items[0][price]=price_CBXbz9i7AIOTzr" \ -d "items[1][price]=price_IFuCu48Snc02bc" \ -d "items[1][quantity]=2" ``` ## Plusieurs quantités d’un abonnement La configuration d’une quantité pour un abonnement est souvent décrite comme des « autorisations par utilisateur », dont le coût augmente de façon linéaire : 10 utilisations génèrent un coût équivalent à 10 fois le tarif de base. Par défaut, chaque abonnement correspond à un produit. Stripe vous permet cependant d’abonner un client à plusieurs quantités d’un même poste. Par exemple, imaginons que vous dirigez une société d’hébergement grâce à laquelle vos clients hébergent des sites pour 9,99 USD par site et par mois. La plupart des clients hébergent un seul site, mais certains en hébergent un grand nombre. Vous pourriez créer des tarifs pour un site (9,99 USD), deux sites (19,98 USD) et ainsi de suite, mais la meilleure approche consiste à abonner des clients pour une quantité donnée à un tarif unitaire de 9,99 USD. Il existe deux types d’abonnements facturés à l’usage : la facturation à la consommation ou par utilisateur. Vous pouvez activer ces modèles de facturation en définissant la valeur de l’attribut `recurring[usage_type]` lors de la création d’un tarif. Vous pouvez uniquement indiquer une quantité lors de la création d’un abonnement dont le paramètre `recurring[usage_type]` est défini sur `licensed`. Si vous souhaitez une facturation détaillée pour une utilisation qui fluctue dans un intervalle de facturation, pensez à utiliser la [facturation à l’usage](https://docs.stripe.com/products-prices/pricing-models.md#usage-based-pricing) plutôt que les quantités. ### Définir plusieurs quantités Pour définir la quantité d’un abonnement, fournissez une valeur à `quantity` lors de la [création](https://docs.stripe.com/api.md#create_subscription) ou de la [mise à jour](https://docs.stripe.com/api.md#update_subscription) de l’abonnement : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CBb6IXqvTLXp3f" \ -d "items[0][quantity]=5" ``` Vous facturez toujours plusieurs quantités en utilisant une seule *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), et vous les [facturez au prorata](https://docs.stripe.com/billing/subscriptions/prorations.md) lorsque l’abonnement change. Cela inclut les cas où vous modifiez les quantités d’un abonnement. ### Facturer des montants différents en fonction de la quantité Dans certains cas, vous pourriez vouloir réajuster le coût par utilisateur en fonction du nombre d’utilisateurs pour un même abonnement. Par exemple, vous pouvez proposer des réductions sur les autorisations de volume pour les abonnements qui excèdent certains seuils de quantité. Vous pouvez utiliser des [niveaux](https://docs.stripe.com/products-prices/pricing-models.md#tiered-pricing) pour réajuster la tarification par utilisateur. ### Modification de la quantité Lorsque vous facturez vos clients, vous pouvez effectuer un suivi de l’utilisation à différents niveaux de détail par rapport à votre facturation. Par exemple, imaginons une suite de logiciels de productivité qui facture 10 $ pour 5 utilisateurs (au maximum) utilisant le produit. Sans la modification de quantité, il est nécessaire d’augmenter la valeur `quantity` du poste d’abonnement de 1 pour 5 utilisateurs. | Nombre d’utilisateurs | Quantité de postes d’abonnement rapportée à Stripe | Total | | --------------------- | -------------------------------------------------- | ----------- | | 1 | 1 | 10 USD | | 3 | 1 | 10 USD | | 5 | 1 | 10 USD | | 6 | 2 | 20 USD | | 7 | 2 | 20 USD | Avec le paramètre [transform_quantity](https://docs.stripe.com/api/prices/create.md#create_price-transform_quantity), vous pouvez demander à Stripe de transformer la quantité avant d’appliquer le coût unitaire. L’abonnement suivant vous permet de déclarer naturellement le nombre actuel d’utilisateurs comme la `quantity` du poste d’abonnement. Le système de facturation de Stripe divise la quantité par 5 et arrondit au chiffre supérieur avant de calculer le coût unitaire. ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Standard Cost Per 5 Users" \ -d "transform_quantity[divide_by]=5" \ -d "transform_quantity[round]=up" \ -d unit_amount=1000 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=licensed" \ -d product={{PRODUCTIVITY_SUITE_ID}} ``` Vous ne pouvez utiliser `transform_quantity` qu’avec [billing_scheme=per_unit](https://docs.stripe.com/api/prices/create.md#create_price-billing_scheme). Ce paramètre est incompatible avec la tarification par paliers. #### Arrondi Dans l’exemple précédent, l’abonnement est facturé par groupe de 5 utilisateurs en arrondissant (6 divisé par 5 génère ainsi une quantité de 2). Pour des cas d’utilisation pour lesquels vous ne souhaitez pas facturer une partie de l’utilisation, comme facturer chaque gigaoctet complet d’utilisation d’un service Internet haut débit, vous pouvez également transmettre `down` comme valeur de `round`. #### Utilisation calculée Vous pouvez également appliquer `transform_quantity` conjointement avec la facturation à l’usage. Cette modification s’applique aux tarifs avec `recurring[usage_type]=metered` à la fin d’une période de facturation, de la même façon qu’elle s’applique à `quantity` pour des tarifs avec `recurring[usage_type]=licensed`. Un service d’e-mails marketing qui crée un tarif à la consommation effective pour facturer 0,10 USD pour chaque tranche de 1 000 e-mails envoyés pourrait ressembler à ceci : ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Metered Emails" \ -d "transform_quantity[divide_by]=1000" \ -d "transform_quantity[round]=down" \ -d unit_amount=10 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=metered" \ -d product={{MARKETING_EMAILS_ID}} ``` Avec cet abonnement, l’utilisation peut être rapportée par e-mail et vous pouvez facturer le client 0,10 $ chaque fois qu’il atteint 1 000 e-mails envoyés. ## Plusieurs abonnements Vous pouvez créer simultanément plusieurs abonnements pour un seul client. Cette fonctionnalité est utile lorsque vous souhaitez permettre à vos clients de s’abonner à plusieurs produits avec des périodes de service distinctes. Chaque abonnement a sa propre période de facturation, sa propre facture et son propre paiement, même si les tarifs sous-jacents ont la même période de facturation. > Si vous créez plusieurs abonnements avec le même tarif, chaque abonnement est indépendant, y compris les paiements et les périodes de facturation. Si ce n’est pas ce que vous voulez, créez un seul abonnement en utilisant plutôt [plusieurs quantités](https://docs.stripe.com/billing/subscriptions/quantities.md#setting-quantities). ### Créer plusieurs abonnements pour un seul client Créez plusieurs abonnements pour un seul client en utilisant l’API [create subscription](https://docs.stripe.com/api.md#create_subscription) : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CZB2krKbBDOkTS" ``` ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer=cus_4fdAW5ftNQow1a \ -d "items[0][price]=price_CZB1AX3KOacNJw" ``` Un client peut s’abonner à plusieurs produits, ou même à un seul produit, plusieurs fois. Chaque abonnement a un ID unique et son état est géré indépendamment des autres abonnements du client. Chaque abonnement a également sa propre période de facturation indépendante, basée sur l’[ancre du cycle de facturation](https://docs.stripe.com/billing/subscriptions/billing-cycle.md) de l’abonnement. Lorsqu’un client a plusieurs abonnements, la propriété `subscriptions` de l’objet `Customer` fournit une liste de chaque abonnement : ```json { "id": "cus_4fdAW5ftNQow1a", "object": "customer", "subscriptions": { "object": "list", "data": [ { "id": "sub_9RRl3XywPg2P5H", "object": "subscription", ... "price": { "id": "price_CZB2krKbBDOkTS", "object": "price", "amount": 2995, ... } }, { "id": "sub_9RRlIq2t9obFLI", "object": "subscription", ... "price": { "id": "price_CZB1AX3KOacNJw", "object": "price", "amount": 1295, ... } } ] ... } ... } ``` ## See also - [Modifier des abonnements](https://docs.stripe.com/billing/subscriptions/change.md) - [Utiliser les périodes d’essai](https://docs.stripe.com/billing/subscriptions/trials.md) - [API Subscriptions](https://docs.stripe.com/api.md#subscriptions)