Subscriptions let you sell ongoing access with automated renewals. Use flexible billing cycles, free trials, plan changes, and add‑ons to tailor pricing for each customer.
Upgrade & Downgrade
Control plan changes with proration and quantity updates.
On‑Demand Subscriptions
Authorize a mandate now and charge later with custom amounts.
Customer Portal
Let customers manage plans, billing, and cancellations.
Subscription Webhooks
React to lifecycle events like created, renewed, and canceled.
What Are Subscriptions?
Subscriptions are recurring products customers purchase on a schedule. They’re ideal for:- SaaS licenses: Apps, APIs, or platform access
- Memberships: Communities, programs, or clubs
- Digital content: Courses, media, or premium content
- Support plans: SLAs, success packages, or maintenance
Key Benefits
- Predictable revenue: Recurring billing with automated renewals
- Flexible cycles: Monthly, annual, custom intervals, and trials
- Plan agility: Proration for upgrades and downgrades
- Add‑ons and seats: Attach optional, quantifiable upgrades
- Seamless checkout: Hosted checkout and customer portal
- Developer-first: Clear APIs for creation, changes, and usage tracking
Creating Subscriptions
Create subscription products in your Dodo Payments dashboard, then sell them through checkout or your API. Separating products from active subscriptions lets you version pricing, attach add‑ons, and track performance independently.Subscription product creation
Configure the fields in the dashboard to define how your subscription sells, renews, and bills. The sections below map directly to what you see in the creation form.Product details
- Product Name (required): The display name shown in checkout, customer portal, and invoices.
- Product Description (required): A clear value statement that appears in checkout and invoices.
- Product Image (required): PNG/JPG/WebP up to 3 MB. Used on checkout and invoices.
- Brand: Associate the product with a specific brand for theming and emails.
- Tax Category (required): Choose the category (for example, SaaS) to determine tax rules.
Pricing
- Type de tarification : Choisissez Subscription (ce guide). Les alternatives sont Single Payment et Usage Based Billing.
- Prix (obligatoire) : Prix récurrent de base avec devise. Le prix doit être d’au moins $1 (ou l’équivalent dans la devise choisie). Les montants inférieurs à ce minimum ne sont pas pris en charge et l’abonnement ne fonctionnera pas.
- Remise applicable (%) : Remise en pourcentage facultative appliquée au prix de base ; reflétée lors du checkout et sur les factures.
- Répéter le paiement tous les (obligatoire) : Intervalle entre les renouvellements, par exemple tous les 1 Month. Sélectionnez la cadence (mois ou années) et la quantité.
- Période d’abonnement (obligatoire) : Durée totale pendant laquelle l’abonnement reste actif (par exemple, 10 Years). Une fois cette période terminée, les renouvellements s’arrêtent sauf prolongation.
- Jours de période d’essai (obligatoire) : Définissez la durée de l’essai en jours. Utilisez 0 pour désactiver les essais. Le premier prélèvement est effectué automatiquement à la fin de l’essai.
- Montant de l’essai : Frais initiaux facultatifs pour un essai payant. Laissez ce champ vide pour un essai gratuit. Consultez Paid Trials.
- Sélectionner un add-on : Ajoutez jusqu’à 10 add-ons que les clients peuvent acheter avec le forfait de base.
Add‑ons are ideal for quantifiable extras such as seats or storage. You can control allowed quantities and proration behavior when customers change them.
Advanced settings
- Tax Inclusive Pricing: Display prices inclusive of applicable taxes. Final tax calculation still varies by customer location.
- Generate license keys: Issue a unique key to each customer after purchase. See the License Keys guide.
- Digital Product Delivery: Deliver files or content automatically after purchase. Learn more in Digital Product Delivery.
- Metadata: Attach custom key–value pairs for internal tagging or client integrations. See Metadata.
Subscription Trials
Les essais permettent aux clients d’évaluer un abonnement avant de payer le prix récurrent complet. Un essai peut être gratuit, auquel cas aucun montant n’est facturé avant sa fin, ou payant, auquel cas un montant réduit est facturé à l’avance. Dans les deux cas, le prix complet commence au premier renouvellement suivant la fin de l’essai.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Essais payants
Les essais ne doivent pas nécessairement être gratuits. Définissez un Montant de l’essai sur le prix récurrent d’un produit d’abonnement pour facturer des frais initiaux réduits pendant la période d’essai. Le prix récurrent complet prend ensuite le relais au premier renouvellement.
trial_amount et trial_period_days afin que vous puissiez afficher le montant dû aujourd’hui avant la création de l’abonnement.
Les essais gratuits restent inchangés. Si vous laissez le Montant de l’essai vide, le comportement existant est conservé : le premier prélèvement est
0 et le prix complet est facturé à la fin de l’essai.Prévenir les abus des essais
Prévenir les abus des essais empêche les clients de réclamer plusieurs fois des essais pour la même entreprise. Lorsque cette option est activée, un client ayant déjà utilisé un essai est automatiquement redirigé vers un achat payant sans essai, au lieu de bénéficier d’un nouvel essai.
- Les clients sont identifiés par leur adresse e-mail normalisée, avec suppression des alias utilisant le signe plus ;
user+trial@example.cometuser@example.comdésignent donc la même personne. - Les utilisations sont enregistrées lors de l’activation de l’essai : un client qui annule le jour même a tout de même consommé son essai.
- Les clients existants sont complétés à partir de leurs essais historiques par e-mail ; les anciens utilisateurs d’essai sont donc reconnus immédiatement.
Le paramètre est désactivé par défaut. Consultez Subscription Settings pour obtenir la liste complète des contrôles d’abonnement au niveau de l’entreprise.
Détecter l’état d’essai
Pour déterminer si un abonnement en essai gratuit est en période d’essai, récupérez la liste des paiements de l’abonnement. S’il existe exactement un paiement d’un montant de 0, l’abonnement est en période d’essai :Mettre à jour la période d’essai
Prolongez l’essai en mettant à journext_billing_date :
Modifications des forfaits d’abonnement
Les modifications de forfait permettent de mettre à niveau ou de rétrograder les abonnements, d’ajuster les quantités ou de migrer vers d’autres produits. Selon le mode de proratisation sélectionné, une modification peut entraîner une facturation immédiate, créer un crédit ou n’appliquer aucun ajustement de facturation.Product Collections
Regroupez les produits associés dans des collections pour permettre des parcours fluides de mise à niveau ou de rétrogradation dans le Customer Portal.
Modes de proratisation
Choisissez la manière dont les clients sont facturés lors d’une modification de forfait :Comparaison rapide des quatre modes de proratisation :
prorated_immediately
Facture un montant proratisé en fonction du temps restant dans le cycle de facturation actuel. Idéal pour une facturation équitable tenant compte du temps non utilisé.
difference_immediately
Facture immédiatement la différence de prix (mise à niveau) ou ajoute un crédit pour les renouvellements futurs (rétrogradation). Idéal pour les scénarios simples de mise à niveau ou de rétrogradation.
Les crédits issus des rétrogradations avec
difference_immediately sont associés à l’abonnement et appliqués automatiquement aux renouvellements futurs. Ils sont distincts des avantages de Credit-Based Billing.difference_immediately, la valeur non utilisée devient un crédit associé à l’abonnement qui compense automatiquement les renouvellements futurs :
full_immediately
Facture immédiatement le montant total du nouveau forfait, sans tenir compte du temps restant. Idéal pour réinitialiser les cycles de facturation.
do_not_bill
Passe au nouveau forfait sans aucun ajustement de facturation. Aucun frais de proratisation ni crédit : le client passe simplement au nouveau forfait. Idéal pour les migrations commerciales, les changements gratuits de forfait ou les situations où vous souhaitez absorber la différence de coût.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Scénario : Un client disposant du forfait Basic (80/month) au 16e jour d’un cycle de 30 jours avec Prochain renouvellement le 15 février (16 janvier + 30 jours) : $80.00/month.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Scénario : Un client disposant du forfait Pro (20/month) avec Le crédit de $60 s’applique automatiquement aux renouvellements futurs :
difference_immediately.- Renouvellement 1 : 20 (crédit) = **40)
- Renouvellement 2 : 20 (crédit) = **20)
- Renouvellement 3 : 20 (crédit) = $0.00 (crédit épuisé)
- Renouvellement 4 : $20.00 (prix complet)
Pour en savoir plus sur la gestion des crédits, consultez le Guide des mises à niveau et rétrogradations.
Modifier les forfaits avec des add-ons
Modifiez les add-ons lors d’un changement de forfait. Les add-ons sont inclus dans les calculs de proratisation :Les changements de forfait déclenchent des frais immédiats. Les frais échoués peuvent faire passer l’abonnement à l’état
on_hold. Suivez les changements via les événements webhook subscription.plan_changed.Prévisualiser les changements de forfait
Avant de confirmer un changement de forfait, prévisualisez les frais exacts et l’abonnement qui en résultera :Preview Change Plan API
Prévisualisez les changements de forfait avant de les confirmer.
États des abonnements
Un abonnement passe par un ensemble défini d’états au cours de son cycle de vie. Ce tableau constitue la référence pour chaque état, sa cause et la manière dont vous pouvez — ou non — le rétablir.Machine à états
État suspendu
Un abonnement passe à l’étaton_hold lorsque :
- Un paiement de renouvellement échoue (fonds insuffisants, carte expirée, etc.)
- Les frais liés à un changement de forfait échouent
- L’autorisation du mode de paiement échoue
Réactiver depuis l’état suspendu
Pour réactiver un abonnement depuis l’étaton_hold, mettez à jour le mode de paiement. Cette opération :
- Crée des frais correspondant aux sommes restant dues
- Génère une facture
- Traite le paiement avec le nouveau mode de paiement
- Réactive l’abonnement à l’état
activeune fois le paiement effectué
Après la mise à jour réussie du mode de paiement d’un abonnement
on_hold, vous recevez les événements webhook payment.succeeded, puis subscription.active.Événements webhook par transition
Chaque transition émet un webhook afin que vous puissiez gérer la logique des droits sans effectuer de polling :Subscription Webhook Payloads
Consultez le schéma complet des payloads pour les événements du cycle de vie des abonnements.
Gestion via l’API
Create subscriptions
Create subscriptions
Utilisez
POST /subscriptions pour créer des abonnements par programmation à partir de produits, avec des essais et des add-ons facultatifs.API Reference
Consultez l’API de création d’abonnement.
Update subscriptions
Update subscriptions
Utilisez
PATCH /subscriptions/{id} pour mettre à jour les quantités, annuler à la prochaine date de facturation ou modifier les métadonnées.API Reference
Découvrez comment mettre à jour les informations d’un abonnement.
Change plans (proration)
Change plans (proration)
Modifiez le produit actif et les quantités avec les contrôles de proratisation.
API Reference
Consultez les options de modification du forfait.
On‑demand charges
On‑demand charges
Pour les abonnements à la demande, facturez des montants spécifiques à la demande.
API Reference
Facturez un abonnement à la demande.
List and retrieve
List and retrieve
Utilisez
GET /subscriptions pour répertorier tous les abonnements et GET /subscriptions/{id} pour en récupérer un.API Reference
Parcourez les API de listage et de récupération.
Usage history
Usage history
Récupérez l’utilisation enregistrée pour les modèles de tarification à la consommation ou hybrides.
API Reference
Consultez l’API d’historique d’utilisation.
Update payment method
Update payment method
Mettez à jour le mode de paiement d’un abonnement. Pour les abonnements actifs, cela met à jour le mode de paiement des renouvellements futurs. Pour les abonnements à l’état
on_hold, cela réactive l’abonnement en créant des frais correspondant aux sommes restant dues.Lors de la génération d’un nouveau lien de mode de paiement (le type de requête New), vous pouvez transmettre allowed_payment_method_types pour limiter les modes de paiement visibles par le client sur cette page. Les clients ne verront jamais un mode qui ne figure pas dans la liste, mais la présence d’un mode ne garantit pas qu’il apparaîtra (sa disponibilité dépend toujours de facteurs tels que la localisation du client et les paramètres de votre entreprise).API Reference
Découvrez comment mettre à jour les modes de paiement et réactiver les abonnements.
Cas d’utilisation courants
- SaaS et API : Accès par niveaux avec des add-ons pour les sièges ou l’utilisation
- Contenu et médias : Accès mensuel avec essais d’introduction
- Forfaits de support B2B : Contrats annuels avec add-ons de support premium
- Outils et plugins : Clés de licence et versions publiées
Exemples d’intégration
Sessions de checkout (abonnements)
Lors de la création de sessions de checkout, incluez votre produit d’abonnement et les add-ons facultatifs :Modifications de forfait avec proratisation
Mettez à niveau ou rétrogradez un abonnement et contrôlez le comportement de la proratisation :Annuler à la prochaine date de facturation
Programmez une annulation qui prendra effet à la fin de la période de facturation actuelle :Prolonger la période d’abonnement
Prolongez la durée d’un abonnement en transmettant un nouveausubscription_period_count et subscription_period_interval à PATCH /subscriptions/{id}. L’expiration de l’abonnement est recalculée à partir du nouveau nombre et du nouvel intervalle — par exemple, pour accorder du temps supplémentaire à un client sur son forfait actuel :
La période d’un abonnement peut uniquement être prolongée, jamais raccourcie.
Abonnements à la demande
Créez un abonnement à la demande et facturez-le ultérieurement selon les besoins :Mettre à jour le mode de paiement d’un abonnement actif
Mettez à jour le mode de paiement d’un abonnement actif :Réactiver un abonnement depuis on_hold
Réactivez un abonnement suspendu en raison d’un échec de paiement :Abonnements avec des mandats conformes aux exigences de la RBI
Les abonnements UPI et par carte indienne sont soumis aux réglementations de la RBI (Reserve Bank of India), qui imposent des exigences spécifiques concernant les mandats :Limites des mandats
Le type et le montant du mandat dépendent des frais récurrents de votre abonnement :- Frais inférieurs au seuil du mandat (₹15,000 par défaut) : Nous créons un mandat à la demande pour le montant du seuil. Le montant de l’abonnement est facturé périodiquement selon sa fréquence, jusqu’à la limite du mandat.
- Frais égaux ou supérieurs au seuil du mandat : Nous créons un mandat d’abonnement (ou un mandat à la demande) correspondant exactement au montant de l’abonnement.
mandate_min_amount_inr_paise (paise INR). Le montant enregistré auprès de la banque est max(mandate_floor, billing_amount) ; le seuil devient donc effectivement le plafond d’autorisation visible par le client lorsque la facturation est inférieure.
Pour plus d’informations sur les mandats conformes aux exigences de la RBI et sur le seuil configurable des mandats pour les modes de paiement indiens, consultez la page Modes de paiement en Inde.
Considérations relatives aux mises à niveau et rétrogradations
Important : Lors de la mise à niveau ou de la rétrogradation d’abonnements, tenez soigneusement compte des limites des mandats :- Si une mise à niveau ou une rétrogradation entraîne des frais supérieurs à Rs 15,000 et dépasse la limite de paiement à la demande existante, les frais de la transaction peuvent échouer.
- Dans ce cas, le client devra peut-être mettre à jour son mode de paiement ou modifier à nouveau l’abonnement afin d’établir un nouveau mandat avec la limite appropriée.
Autorisation des frais élevés
Pour les frais d’abonnement de Rs 15,000 ou plus :- La banque du client lui demandera d’autoriser la transaction.
- Si le client n’autorise pas la transaction, celle-ci échouera et l’abonnement sera suspendu.
Délai de traitement de 48 heures
Calendrier de traitement : Les frais récurrents des cartes indiennes et des abonnements UPI suivent un processus particulier :- Les frais sont initiés à la date prévue selon la fréquence de votre abonnement.
- Le prélèvement effectif sur le compte du client n’a lieu que 48 heures après l’initiation du paiement.
- Cette fenêtre de 48 heures peut être prolongée de 2 à 3 heures supplémentaires selon les réponses de l’API bancaire.
Fenêtre d’annulation du mandat
Pendant la fenêtre de traitement de 48 heures :- Les clients peuvent annuler le mandat depuis leurs applications bancaires.
- Si un client annule le mandat pendant cette période, l’abonnement reste actif (il s’agit d’un cas particulier propre aux abonnements par carte indienne et UPI AutoPay).
- Toutefois, le prélèvement effectif peut échouer ; dans ce cas, nous suspendons l’abonnement.
- Retarder l’activation des avantages jusqu’à la confirmation du paiement
- Mettre en place des périodes de grâce ou un accès temporaire
- Surveiller l’état de l’abonnement pour détecter les annulations de mandat
- Gérer les états d’abonnement suspendu dans la logique de votre application
Bonnes pratiques
- Commencez par des niveaux clairs : 2 à 3 forfaits présentant des différences évidentes
- Communiquez les prix : Affichez les totaux, la proratisation et le prochain renouvellement
- Utilisez les essais avec discernement : Convertissez grâce à l’intégration, pas uniquement grâce à la durée
- Tirez parti des add-ons : Gardez des forfaits de base simples et proposez des options supplémentaires
- Testez les changements : Validez les modifications de forfait et la proratisation en mode test
Les abonnements constituent une base flexible pour générer des revenus récurrents. Commencez simplement, testez rigoureusement et améliorez votre approche en fonction des indicateurs d’adoption, d’attrition et d’expansion.