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 :Par défaut (
effective_at: 'immediately'), les changements de plan entraînent des frais immédiats. Transmettez effective_at: 'next_billing_date' pour planifier le changement à la prochaine date de facturation — le changement en attente est renvoyé sur l’abonnement sous la forme de scheduled_change, et vous pouvez l’annuler avec Annuler le changement de plan planifié. Les frais échoués peuvent faire passer l’abonnement au statut on_hold, sauf si vous transmettez on_payment_failure: 'prevent_change', ce qui conserve l’abonnement sur son plan actuel jusqu’à la réussite du paiement. 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.
Mettre en pause et reprendre les abonnements
La mise en pause gèle un abonnement au lieu de le résilier. La facturation s’arrête, l’accès est révoqué et l’abonnement conserve son plan et son historique afin que le client puisse reprendre exactement là où il s’était arrêté. Utilisez cette option comme alternative à la résiliation pour fidéliser vos clients. Ouvrez n’importe quel abonnement actif sous Sales → Subscriptions, puis cliquez sur Pause subscription. Le statut devientpaused et les renouvellements s’arrêtent jusqu’à la reprise de l’abonnement.

Que se passe-t-il lorsque vous mettez un abonnement en pause
- Les renouvellements s’arrêtent. Aucune facture n’est générée et aucune tentative de prélèvement de renouvellement n’est effectuée pendant la pause de l’abonnement.
- L’accès est révoqué immédiatement. La mise en pause révoque chaque entitlement grant délivré ou en attente sur l’abonnement, ce qui désactive ses license keys et empêche l’émission de nouvelles URL de téléchargement de digital product. La reprise les accorde à nouveau, de la même manière que la récupération après
on_hold. - L’horloge de facturation est gelée.
next_billing_dateetexpires_atavancent tous deux exactement de la durée de la pause, afin que le client conserve le temps déjà payé. - Aucune limite de durée de pause n’est appliquée. Un abonnement en pause le reste jusqu’à ce qu’une personne le reprenne. Vous ne définissez pas de durée de pause à l’avance.
active et restaure ses entitlements. Comme l’horloge était gelée, le prochain renouvellement a lieu après la durée de la pause par rapport à la date initialement prévue : un abonnement mis en pause pendant 12 jours est renouvelé avec 12 jours de retard.
Mettre en pause des abonnements basés sur l’utilisation
Un abonnement basé sur l’utilisation peut présenter une utilisation enregistrée mais pas encore facturée au moment de sa mise en pause. L’option Bill Usage at Pause sous Settings → Subscriptions détermine ce qui lui arrive :
Seule l’utilisation mesurée est réglée de cette manière : les frais de base récurrents ne sont jamais facturés au moment de la pause. Les abonnements standard et on-demand n’ont rien à régler ; ce paramètre ne les affecte donc pas.
Bill Usage at Pause est enregistré pour chaque cycle de facturation. Le modifier en cours de cycle ne change pas le règlement du cycle déjà commencé ; la nouvelle valeur s’applique à partir du cycle suivant.
La reprise constitue une issue valide de cette suspension : vous n’avez pas besoin de recouvrer la facture de règlement au préalable. Sachez simplement que la reprise annule l’utilisation impayée au lieu de la reporter.
Permettre aux clients de mettre eux-mêmes leurs abonnements en pause
L’option Allow Subscription Pause sous Settings → Subscriptions contrôle la possibilité pour les clients de mettre en pause et de reprendre leur abonnement depuis le Customer Portal. Elle est désactivée par défaut ; la mise en pause en libre-service doit donc être activée explicitement.
Pausing from the Customer Portal
Découvrez ce que voit le client, y compris la boîte de dialogue de confirmation.
Mise en pause via l’API
La mise en pause et la reprise utilisent un seul champpause sur l’endpoint de mise à jour d’un abonnement. Il n’existe pas d’endpoint de mise en pause distinct.
subscription.paused et la reprise émet subscription.unpaused. Les deux contiennent l’objet d’abonnement complet, avec paused_at défini pendant la pause et null une fois l’abonnement repris.
Mise en pause et autres actions sur les abonnements
- La résiliation reste possible. Vous pouvez résilier un abonnement en pause exactement comme un abonnement actif. Toute facture de règlement ouverte issue de la pause est annulée lors de cette action.
- Les changements de plan planifiés sont retardés, et non supprimés. Un changement de plan planifié pour la prochaine date de facturation reste inchangé pendant la pause, puis s’applique à la date de facturation décalée après la reprise. Son
scheduled_change.effective_atest un instantané pris lors de sa planification et n’est pas ajusté en fonction de la pause ; il peut donc afficher une date passée. Interprétez-le comme « était planifié pour », et non comme une date garantie. Pour supprimer le changement au lieu de le maintenir, utilisez Cancel Scheduled Plan Change.
États des abonnements
Un abonnement parcourt un ensemble défini de statuts au cours de sa durée de vie. Ce tableau constitue la référence pour chaque statut, sa cause et la manière dont vous pouvez — ou non — le récupérer.on_hold et paused sont également distincts. on_hold est involontaire : un paiement a échoué. paused est volontaire : vous ou le client avez choisi de geler l’abonnement et aucune tentative de renouvellement n’est effectuée tant qu’il reste en pause. Un abonnement basé sur l’utilisation peut toutefois avoir une facture de règlement ponctuelle due au moment de sa mise en pause ; consultez Mettre en pause des abonnements basés sur l’utilisation.Machine à états
État suspendu
Un abonnement entre dans l’étaton_hold lorsque :
- Un paiement de renouvellement échoue (fonds insuffisants, carte expirée, etc.)
- La facturation d’un changement de plan échoue
- L’autorisation du moyen de paiement échoue
- Une facture de règlement liée à une pause pour un abonnement basé sur l’utilisation reste impayée
Réactiver un abonnement suspendu
Pour réactiver un abonnement dans l’étaton_hold, mettez à jour le moyen de paiement. Cette action :
- Crée des frais correspondant aux sommes restantes dues
- Génère une facture
- Traite le paiement avec le nouveau moyen de paiement
- Réactive l’abonnement dans l’état
activelorsque le paiement est effectué
La seule exception est une suspension due à une facture de règlement impayée après une pause. Le règlement de cette facture ramène l’abonnement à
paused, et non à active, car la pause correspond à l’état précédent l’échec du paiement. Reprenez-le explicitement une fois la facture réglée.Après avoir mis à jour avec succès le moyen de paiement d’un abonnement
on_hold, vous recevrez les événements webhook payment.succeeded, suivis de subscription.active.Événements webhook par transition
Chaque transition émet un webhook afin que vous puissiez gérer la logique des entitlements sans effectuer de polling :Subscription Webhook Payloads
Consultez le schéma complet de la charge utile des événements du cycle de vie des abonnements.
Gestion via l’API
Create subscriptions
Create subscriptions
Utilisez
POST /checkouts pour créer des abonnements par programmation à partir de produits, avec des essais facultatifs (subscription_data.trial_period_days) et des add-ons (product_cart[].addons).API Reference
Consultez l’API de création d’une session Checkout.
Update subscriptions
Update subscriptions
Utilisez
PATCH /subscriptions/{subscription_id} pour résilier à la prochaine date de facturation, prolonger la période de l’abonnement, mettre à jour les détails de facturation ou modifier les métadonnées. Pour modifier la quantité, utilisez plutôt la Change Plan API : PATCH n’accepte pas quantity.API Reference
Découvrez comment mettre à jour les détails d’un abonnement.
Pause and resume subscriptions
Pause and resume subscriptions
La mise en pause et la reprise utilisent le même endpoint
PATCH /subscriptions/{subscription_id} avec le champ pause : pause: true met en pause un abonnement actif et pause: false le reprend. Le champ ne peut être combiné avec aucun autre champ dans la même requête. Pour connaître le comportement complet, les effets sur la facturation et les paramètres métier associés, consultez Mettre en pause et reprendre les abonnements.API Reference
Consultez l’API de mise à jour d’un abonnement, y compris le champ
pause.Change plans (proration)
Change plans (proration)
Modifiez le produit actif et les quantités avec les contrôles de proration.
API Reference
Examinez les options de changement de plan.
On‑demand charges
On‑demand charges
Pour les abonnements on-demand, facturez des montants spécifiques à la demande.
API Reference
Facturez un abonnement on-demand.
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 référencement et de récupération.
Usage history
Usage history
Récupérez l’utilisation enregistrée pour les modèles tarifaires metered ou hybrides.
API Reference
Consultez l’API de l’historique d’utilisation.
Update payment method
Update payment method
Mettez à jour le moyen de paiement d’un abonnement. Pour les abonnements actifs, cette action met à jour le moyen de paiement utilisé pour les futurs renouvellements. Pour les abonnements dans l’état
on_hold, elle réactive l’abonnement en créant des frais correspondant aux sommes restantes dues.Lors de la génération d’un nouveau lien de moyen de paiement (le type de requête New), vous pouvez transmettre allowed_payment_method_types pour limiter les moyens de paiement affichés au client sur cette page. Les clients ne verront jamais un moyen qui ne figure pas dans la liste, mais l’inclusion d’un moyen ne garantit pas qu’il apparaîtra (sa disponibilité dépend également de facteurs tels que la localisation du client et les paramètres de votre entreprise).API Reference
Découvrez comment mettre à jour les moyens 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
- Plans de support B2B : contrats annuels avec add-ons de support premium
- Outils et plugins : license keys et versions publiées
Exemples d’intégration
Checkout Sessions (abonnements)
Lors de la création de Checkout Sessions, incluez votre produit d’abonnement et les add-ons facultatifs :Changements de plan avec proration
Augmentez ou réduisez un abonnement et contrôlez le comportement de la proration :Résilier à la prochaine date de facturation
Planifiez une résiliation qui prendra effet à la fin de la période de facturation actuelle :Prolonger la période de l’abonnement
Prolongez la durée d’un abonnement en transmettant un nouvelsubscription_period_count et subscription_period_interval à PATCH /subscriptions/{subscription_id}. La date d’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 plan actuel :
La période d’un abonnement peut uniquement être prolongée, jamais raccourcie.
Abonnements on-demand
Créez un abonnement on-demand et facturez-le ultérieurement selon les besoins :Mettre à jour le moyen de paiement d’un abonnement actif
Mettez à jour le moyen 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 à la RBI
Les abonnements UPI et par carte indienne sont soumis aux réglementations de la RBI (Reserve Bank of India) et à des exigences spécifiques en matière de mandat :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 on-demand pour le montant du seuil. Le montant de l’abonnement est facturé périodiquement selon la fréquence de votre abonnement, jusqu’à la limite du mandat.
- Frais égaux ou supérieurs au seuil du mandat : Nous créons un mandat d’abonnement (ou un mandat on-demand) 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 affiché au client lorsque la facturation est inférieure.
Pour plus d’informations sur les mandats conformes à la RBI et le seuil de mandat configurable pour les moyens de paiement indiens, consultez la page India Payment Methods.
Considérations relatives aux augmentations et réductions de plan
Important : lors de l’augmentation ou de la réduction d’un abonnement, tenez soigneusement compte des limites du mandat :- Si une augmentation ou une réduction entraîne un montant supérieur à 15 000 Rs et dépasse la limite de paiement on-demand existante, les frais de transaction peuvent échouer.
- Dans ce cas, le client devra peut-être mettre à jour son moyen de paiement ou modifier à nouveau l’abonnement afin d’établir un nouveau mandat avec la limite appropriée.
Autorisation des frais de montant élevé
Pour les frais d’abonnement de 15 000 Rs ou plus :- La banque demandera au client 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 schéma de traitement particulier :- Les frais sont initiés à la date prévue, conformément à la fréquence de votre abonnement.
- Le débit effectif du compte du client n’a lieu qu’après 48 heures suivant 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 via leurs applications bancaires.
- Si un client annule le mandat pendant cette période, l’abonnement reste actif (il s’agit d’un cas particulier des abonnements Indian card et UPI AutoPay).
- Toutefois, le débit effectif peut échouer ; dans ce cas, nous plaçons l’abonnement on hold.
- De retarder l’activation des avantages jusqu’à la confirmation du paiement
- De mettre en place des périodes de grâce ou un accès temporaire
- De surveiller le statut de l’abonnement pour détecter les annulations de mandat
- De gérer les états de suspension de l’abonnement dans la logique de votre application
Bonnes pratiques
- Commencez par des niveaux clairs : 2 à 3 plans présentant des différences évidentes
- Communiquez les tarifs : affichez les totaux, la proration et le prochain renouvellement
- Utilisez les essais avec discernement : convertissez grâce à l’onboarding, et pas uniquement grâce à la durée
- Tirez parti des add-ons : gardez des plans de base simples et proposez des options supplémentaires
- Testez les changements : validez les changements de plan et la proration en mode test
Les abonnements constituent une base flexible pour les revenus récurrents. Commencez simplement, testez rigoureusement et améliorez votre approche en fonction des indicateurs d’adoption, de churn et d’expansion.