# Modéliser une tarification à l'usage Découvrez différents modèles tarifaires de facturation à l'usage sur Stripe. > Nous avons mis à jour le fonctionnement de la facturation à la consommation. Consultez la [nouvelle documentation relative à la facturation à l’usage](https://docs.stripe.com/billing/subscriptions/usage-based.md). > > Découvrez comment [migrer](https://docs.stripe.com/billing/subscriptions/usage-based-legacy/migration-guide.md). Avec les modèles de tarification à l’usage, vous facturez vos clients en fonction de l’utilisation de votre service au cours de la période de facturation, au lieu de définir explicitement des quantités comme dans les modèles de tarification [par poste](https://docs.stripe.com/products-prices/pricing-models.md#per-seat) et au [tarif forfaitaire](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate). (Une autre différence réside dans le fait que dans les modèles par poste et à tarif forfaitaire, vous pouvez éventuellement percevoir le paiement pour la période de facturation à l’avance. Avec la facturation à l’usage, vous devez percevoir le paiement à terme échu.) Vous devez également [enregistrer et déclarer l’utilisation](https://docs.stripe.com/billing/subscriptions/usage-based-legacy/recording-usage.md). Dans cette situation, l’entreprise souhaite facturer l’utilisation de son nouveau service de conférence à la minute, avec un tarif à la minute qui diminue au fur et à mesure que l’utilisation du service augmente. Voici à quoi ressemble ce modèle sur Stripe : ![](https://b.stripecdn.com/docs-statics-srv/assets/pricing_model-metered-usage.43b16d41d299829bc3fd34ddc2d14b15.png) Modèle de tarification à l’usage ### Types d’utilisation Pour les achats récurrents, vous définissez le montant à facturer aux clients au moyen du paramètre `usage_types` : choisissez entre l’utilisation prédéterminée ou calculée. ### Utilisation prédéterminée Avec l’utilisation sous licence (`recurring[usage_type]='licensed'`), vous définissez la quantité pour un poste d’abonnement lorsque vous créez ou mettez à jour l’abonnement. La quantité est conservée jusqu’à ce que vous ou votre client la modifiiez. À chaque période de facturation, l’abonnement débite le montant × la quantité pour l’élément. Par exemple, un client avec trois utilisateurs qui s’abonne à un service mensuel de 15 USD par utilisateur paie 45 USD chaque mois. ### Utilisation à la consommation Avec l’utilisation en fonction de la consommation (`recurring[usage_type]='metered'`), vous facturez votre client à terme échu en fonction de son utilisation du service, que vous mesurez grâce à l’[API Usage](https://docs.stripe.com/api/usage_records.md). À la fin de la période de facturation, l’utilisation totale est multipliée par la valeur de `unit_amount` pour déterminer le montant dû. Par exemple, si un fournisseur d’accès facture 0,50 USD par gigaoctet (Go) consommé et que le client utilise 100 Go, ce dernier sera débité de 50 USD. ### Tarification forfaitaire et standard Dans le Dashboard, vous avez le choix entre les modèles de tarification **standard** et **forfaitaire**. Ces deux modèles correspondent à une consommation [prédéterminée](https://docs.stripe.com/api/prices/create.md#create_price-recurring-usage_type) (`recurring[usage_type]='licensed'`). Dans les deux cas, vous précisez le nombre d’unités à la création ou modification d’un abonnement. Voici ce qui les différencie : - Avec un **tarif standard**, la quantité est 1 par défaut. - Avec un **tarif forfaitaire**, le montant unitaire est égal ou supérieur à 2. ### Modèle de tarification à l’usage sur Stripe L’exemple suivant montre comment créer un modèle tarifaire à la consommation. Dans notre cas, le service facture 0,07 USD par minute. #### Dashboard Pour créer un modèle tarifaire à la consommation sur Stripe via le Dashboard : Tout d’abord, créez le produit `Per-minute pricing`. Pour découvrir toutes les options liées à la création d’un produit, consultez le [guide des tarifs](https://docs.stripe.com/products-prices/manage-prices.md#create-product). 1. Accédez au [Catalogue de produits](https://dashboard.stripe.com/products). 1. Cliquez sur **+ Ajouter un produit**. 1. Indiquez le **Nom** du produit : ici, `Per-minute pricing`. 1. (Facultatif) Ajoutez une **description**. Elle apparaît au moment du paiement, sur le [portail client](https://docs.stripe.com/customer-management.md) et sous forme de [devis](https://docs.stripe.com/quotes.md). Next, create the monthly price for the `Per-minute pricing` product. Click **Advanced pricing options**. Select **Usage-based**, **Per tier**, and **Graduated** for the **Pricing model**. Créez trois niveaux de tarification progressive : | | Première unité | Dernière unité | Par unité | Forfaitaire | | ------------------- | -------------- | -------------- | ------------- | ------------- | | Premier niveau | 0 | 60 | 0,25 USD | 0,00 USD | | Pour les prochaines | 61 | 120 | 0,20 USD | 0,00 USD | | Pour les prochaines | 121 | ∞ | 0,15 USD | 0,00 USD | Pour créer un abonnement utilisant ce tarif : 1. Accédez à la [page](https://dashboard.stripe.com/subscriptions) **Paiements** > **Abonnements**. 1. Cliquez sur **+ Créer un abonnement**. 1. Sélectionnez ou ajoutez un client. 1. Recherchez le produit `Per-minute pricing` que vous venez de créer, puis sélectionnez le tarif de votre choix. 1. (Facultatif) Sélectionnez **Collecter les taxes automatiquement** pour utiliserStripe Tax. 1. Cliquez sur **Démarrer l’abonnement** pour activer immédiatement l’abonnement ou sur **Planifier l’abonnement** pour choisir quand le lancer. #### API Pour créer un modèle tarifaire à la consommation dans Stripe via les API [Products](https://docs.stripe.com/api/products.md) et [Prices](https://docs.stripe.com/api/prices.md) : 1. Créez le produit `Per-minute pricing`. ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d "name=Per-minute pricing" ``` 1. Créez un tarif. ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Per-minute pricing" \ -d "tiers[0][unit_amount]=500" \ -d "tiers[0][up_to]=5" \ -d "tiers[1][unit_amount]=400" \ -d "tiers[1][up_to]=10" \ -d "tiers[2][unit_amount]=100" \ -d "tiers[2][up_to]=inf" \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=metered" \ -d "product={{PRODUCT_ID}}" \ -d tiers_mode=graduated \ -d billing_scheme=tiered \ -d "expand[0]=tiers" ``` Lorsque vous créez des abonnements, utilisez l’ID du tarif échelonné : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "items[0][price]={{PER_MINUTE_PRICE_ID}}" ``` Le guide d’intégration des abonnements explique comment intégrer des modèles tarifaires dans une intégration complète. - Si vous utilisez Stripe Checkout, la prochaine étape consiste à [créer une session Checkout](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=checkout&ui=stripe-hosted#create-session) pour votre site. Assurez-vous d’avoir configuré Stripe. - Si vous utilisez Stripe Elements, la prochaine étape consiste à [créer un client](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements&api-integration=checkout#create-customer). Assurez-vous d’avoir configuré Stripe et l’application test. Pour découvrir d’autres types de tarification à l’usage, consultez la section relative aux modèles [avancés](https://docs.stripe.com/billing/subscriptions/usage-based-legacy/pricing-models.md#advanced). Découvrez également comment configurer des [essais gratuits](https://docs.stripe.com/billing/subscriptions/usage-based-legacy.md#trials) et d’autres fonctionnalités facultatives pour une intégration de la facturation à la consommation. ## Modèles tarifaires avancés ### Tarif forfaitaire et par utilisateur Vous pouvez abonner le client à deux produits distincts afin de modéliser une structure de tarification qui inclut à la fois des frais de base et un tarif par utilisateur. L’un des produits sert de tarif de base fixe, et l’autre représente le tarif variable par utilisateur. Cette entreprise fictive facture un tarif mensuel fixe pour son service, ainsi qu’un tarif échelonné au-delà de 50 utilisateurs. #### Modèle à tarif forfaitaire et par utilisateur sur Stripe Pour modéliser cette structure sur Stripe, l’entreprise fictive crée un objet **Produit** et un objet **Tarif** pour les frais de base : ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Monthly Base Fee" \ -d product={{BASE_FEE_PRODUCT_ID}} \ -d unit_amount=500 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=licensed" ``` L’entreprise crée ensuite un tarif mensuel d’un montant de 15 USD par utilisateur : ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Per-seat price" \ -d product={{PRODUCT_ID}} \ -d unit_amount=1500 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=licensed" ``` L’exemple suivant illustre l’abonnement d’un client pour trois utilisateurs au tarif de base et au tarif par utilisateur : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{BASE_FEE_PRICE_ID}}" \ -d "items[0][quantity]=1" \ -d "items[1][price]={{PER_SEAT_PRICE_ID}}" \ -d "items[1][quantity]=3" ``` Cela se traduit par un paiement mensuel de 50 USD : les frais de base de 5 USD par mois, plus 15 USD pour chacun des 3 utilisateurs. ### Tarif forfaitaire avec tarification à l’utilisation Vous pouvez également combiner des tarifs forfaitaires avec une tarification à l’usage pour appliquer un tarif mensuel fixe en plus de la facturation de l’utilisation au cours de la période de facturation. Pour créer un tarif forfaitaire en plus d’un modèle tarifaire à la consommation dans Stripe via les API [Products](https://docs.stripe.com/api/products.md) et [Prices](https://docs.stripe.com/api/prices.md) : 1. Créez le produit `Flat monthly fee`. ```curl curl https://api.stripe.com/v1/products \ -u "<>:" \ -d name=Per-seat ``` 1. Créez un tarif pour le produit `Flat monthly fee`. ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "product={{PRODUCT_ID}}" \ -d unit_amount=1000 \ -d currency=usd \ -d "recurring[interval]=month" ``` 1. Créez le tarif `Meeting per minute usage`. ```curl curl https://api.stripe.com/v1/prices \ -u "<>:" \ -d "nickname=Metered Monthly Plan" \ -d product={{PRODUCT_ID}} \ -d unit_amount=700 \ -d currency=usd \ -d "recurring[interval]=month" \ -d "recurring[usage_type]=metered" ``` Lorsque vous créez des abonnements, spécifiez les deux ID de tarif : ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "items[0][price]={{FLAT_MONTHLY_FEE_PRICE_ID}}" \ -d "items[0][quantity]=1" \ -d "items[1][price]={{METERED_USAGE_PRICE_ID}}" \ -d "items[1][quantity]=1" ``` ### Montants avec décimale La tarification avec décimale est utile si vous souhaitez fixer des tarifs qui ne sont pas des nombres entiers. Par exemple, si vous dirigez une entreprise SaaS de stockage dans le cloud, vous pouvez créer un tarif qui facture 0,05 centime pour chaque Mo consommé par mois. En fonction de l’utilisation, la quantité de Mo est alors multipliée par 0,05 centime et arrondie au centime le plus proche. #### Création d’objets avec des montants à décimale Pour [créer des tarifs](https://docs.stripe.com/api.md#create_price) avec décimale, spécifiez `unit_amount_decimal` à la place de `unit_amount`. `unit_amount_decimal` vous permet de définir un montant dans la sous-unité de la devise utilisée pour la facturation. Par exemple, vous pouvez définir `unit_amount_decimal = 105.5` en USD pour représenter 105,5 centimes, soit 1,055 USD. `unit_amount_decimal` accepte jusqu’à 12 décimales. Si vous prévoyez d’utiliser des [niveaux de tarification](https://docs.stripe.com/products-prices/pricing-models.md#tiered-pricing), vous pouvez spécifier l’attribut `unit_amount_decimal` à la place de `unit_amount`. Vous pouvez aussi [créer des postes de facture](https://docs.stripe.com/api/invoiceitems/create.md) avec `unit_amount_decimal` à la place de `unit_amount`. Dans les réponses de l’API, le champ `unit_amount`, qui doit correspondre à un nombre entier, n’est pas renseigné si l’objet est créé avec une valeur décimale. Par exemple, si vous créez un tarif avec `unit_amount_decimal = 0.05`, la réponse contient `unit_amount = null` et `unit_amount_decimal = 0.05`. Vous pouvez toujours transférer les valeurs entières dans `unit_amount_decimal`, auquel cas `unit_amount` est renseigné dans la réponse. Par exemple, si vous créez un tarif avec `unit_amount_decimal = 5`, la réponse contient `unit_amount = 5` et `unit_amount_decimal = 5.0`. > Si votre intégration gère les événements à l’aide de valeurs `unit_amount` et que vous utilisez des montants avec décimale, vous devez utiliser `unit_amount_decimal` à la place. Cette précision est importante, car `unit_amount` renverra la valeur `null` si les montants avec décimale ne peuvent pas être convertis en montants entiers, ce qui pourrait entraîner des erreurs dans votre intégration.