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
- Pricing Type: Choose Subscription (this guide). Alternatives are Single Payment and Usage Based Billing.
- Price (required): Base recurring price with currency.
- Discount Applicable (%): Optional percentage discount applied to the base price; reflected in checkout and invoices.
- Repeat payment every (required): Interval for renewals, e.g., every 1 Month. Select the cadence (months or years) and quantity.
- Subscription Period (required): Total term for which the subscription remains active (e.g., 10 Years). After this period ends, renewals stop unless extended.
- Trial Period Days (required): Set trial length in days. Use 0 to disable trials. The first charge occurs automatically when the trial ends.
- Select add‑on: Attach up to 10 add‑ons that customers can purchase alongside the base plan.
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
Trials let customers access subscriptions without immediate payment. The first charge occurs automatically when the trial ends.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Detecting Trial Status
To determine if a subscription is in trial, retrieve the list of payments for the subscription. If there is exactly one payment with amount 0, the subscription is in trial period:Updating Trial Period
Extend the trial by updatingnext_billing_date:
Subscription Plan Changes
Plan changes let you upgrade or downgrade subscriptions, adjust quantities, or migrate to different products. Depending on the proration mode you select, a change may trigger an immediate charge, create credit, or apply no billing adjustment.Product Collections
Group related products into collections to enable seamless upgrade/downgrade paths in the Customer Portal.
Proration Modes
Choose how customers are billed when changing plans:Quick comparison of the four proration modes:
prorated_immediately | difference_immediately | full_immediately | do_not_bill | |
|---|---|---|---|---|
| Mise à niveau | Frais au prorata pour les jours restants | Différence de prix totale facturée | Prix total du nouveau plan facturé | Aucun frais — changement immédiat |
| Rétrogradation | Crédit au prorata pour les jours restants | Différence de prix totale en tant que crédit | Aucun crédit, pleine charge | Aucun crédit — changement immédiat |
| Cycle de facturation | Remis à aujourd’hui | Remis à aujourd’hui | Remis à aujourd’hui | Reste le même |
| Meilleur pour | Facturation équitable basée sur le temps | Changements de niveaux simples | Réinitialisations du cycle de facturation | Migrations gratuites ou changements à titre gracieux |
prorated_immediately
Charges prorated amount based on remaining time in the current billing cycle. Best for fair billing that accounts for unused time.
difference_immediately
Charges the price difference immediately (upgrade) or adds credit for future renewals (downgrade). Best for simple upgrade/downgrade scenarios.
Credits from downgrades using
difference_immediately are subscription-scoped and auto-applied to future renewals. They’re distinct from Credit-Based Billing entitlements.difference_immediately, the unused value becomes a subscription-scoped credit that automatically offsets future renewals:
full_immediately
Charges full new plan amount immediately, ignoring remaining time. Best for resetting billing cycles.
do_not_bill
Switches to the new plan without any billing adjustment. No proration charges, no credits — the customer simply moves to the new plan. Best for courtesy migrations, free plan switches, or scenarios where you want to absorb the cost difference.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Scenario: Customer on Basic (80/month) on day 16 of a 30-day cycle using Prochain renouvellement le 15 février (16 janvier + 30 jours) : 80,00 $/mois.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Scenario: Customer on Pro (20/month) using The $60 credit auto-applies to future renewals:
difference_immediately.- Renewal 1: 20 (credit) = **40 credit remaining)
- Renewal 2: 20 (credit) = **20 credit remaining)
- Renewal 3: 20 (credit) = $0.00 (credit exhausted)
- Renewal 4: $20.00 (full price)
Learn more about how credits are managed in the Upgrade & Downgrade Guide.
Changing Plans with Add-ons
Modify add-ons when changing plans. Add-ons are included in proration calculations:Plan changes trigger immediate charges. Failed charges may move the subscription to
on_hold status. Track changes via subscription.plan_changed webhook events.Previewing Plan Changes
Before committing to a plan change, preview the exact charge and resulting subscription:Preview Change Plan API
Preview plan changes before committing to them.
Subscription States
Un abonnement passe par un ensemble défini de statuts au cours de son cycle de vie. Ce tableau est la référence pour chaque statut, ce qui le cause et comment (ou si) vous pouvez le récupérer.| Statut | Ce que cela signifie | Récupérable ? | Chemin de récupération / prochaine étape |
|---|---|---|---|
pending | L’abonnement est en cours de création ou de traitement | — | Attendre subscription.active (ou subscription.failed) |
active | L’abonnement est actif et se renouvellera automatiquement | — | Aucune action nécessaire |
on_hold | Un paiement de renouvellement (ou un changement de plan) a échoué ; l’abonnement est en pause | Oui | Mettre à jour la méthode de paiement pour réactiver — automatiquement via Relances de paiement et Recouvrement, ou manuellement via l’API de mise à jour de la méthode de paiement |
cancelled | L’abonnement a été annulé et ne se renouvellera pas | Réachat uniquement | Le client doit commencer un nouvel abonnement ; Recouvrement peut inciter à un réachat |
failed | L’initialisation de l’abonnement a échoué (le mandat initial ou le paiement n’a pas réussi) | Non — terminal | Le client doit créer un nouvel abonnement avec une méthode de paiement fonctionnelle |
expired | L’abonnement a atteint la fin de son terme | — | Le client doit commencer un nouvel abonnement si désiré |
Machine à états
État de mise en pause
Un abonnement entre dans l’étaton_hold quand :
- Un paiement de renouvellement échoue (fonds insuffisants, carte expirée, etc.)
- Un changement de plan échoue
- L’autorisation de la méthode de paiement échoue
Réactivation depuis l’état de pause
Pour réactiver un abonnement depuis l’étaton_hold, mettez à jour la méthode de paiement. Cela permet automatiquement de :
- Créer une charge pour les montants dus
- Générer une facture
- Traiter le paiement avec la nouvelle méthode de paiement
- Réactiver l’abonnement à l’état
activeaprès paiement réussi
Après avoir mis à jour avec succès la méthode de paiement pour un abonnement
on_hold, vous recevrez payment.succeeded suivi par les événements webhook subscription.active.Événements Webhook par transition
Chaque transition émet un webhook afin que vous puissiez gérer la logique d’autorisation sans sondage :| Transition | Événement |
|---|---|
| Abonnement activé | subscription.active |
| Renouvellement réussi | subscription.renewed |
| Renouvellement échoue → en pause | subscription.on_hold |
| Échec de la création | subscription.failed |
| Plan amélioré/dégradé | subscription.plan_changed |
| Annulé | subscription.cancelled |
| Fin du terme | subscription.expired |
| Changement de n’importe quel champ | subscription.updated |
Subscription Webhook Payloads
Consultez le schéma de charge utile complet pour les événements du cycle de vie de l’abonnement.
Gestion de l’API
Create subscriptions
Create subscriptions
Utilisez
POST /subscriptions pour créer des abonnements programmatiquement à partir de produits, avec des essais et add-ons optionnels.API Reference
Voir 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
Apprenez à mettre à jour les détails de l’abonnement.
Change plans (proration)
Change plans (proration)
Changez le produit actif et les quantités avec des contrôles de proration.
API Reference
Examinez les options de changement de plan.
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 lister tous les abonnements et GET /subscriptions/{id} pour récupérer un seul.API Reference
Parcourez les API de listing et de récupération.
Usage history
Usage history
Récupérez l’utilisation enregistrée pour les modèles de tarification au compteur ou hybrides.
API Reference
Consultez l’API d’historique d’utilisation.
Update payment method
Update payment method
Mettez à jour la méthode de paiement pour un abonnement. Pour les abonnements actifs, cela met à jour la méthode de paiement pour les renouvellements futurs. Pour les abonnements en état
on_hold, cela réactive l’abonnement en créant une charge pour les montants restants.Lors de la génération d’un nouveau lien de méthode de paiement (le type de requête New), vous pouvez passer allowed_payment_method_types pour restreindre les méthodes de paiement que le client voit sur cette page. Les clients ne verront jamais une méthode qui n’est pas dans la liste, bien que l’inclusion d’une méthode ne garantisse pas qu’elle apparaisse (la disponibilité dépend encore de facteurs tels que le lieu du client et vos paramètres commerciaux).API Reference
Apprenez à mettre à jour les méthodes de paiement et à réactiver les abonnements.
Cas d’utilisation courants
- SaaS et API : Accès par niveaux avec add-ons pour des sièges ou l’utilisation
- Contenu et médias : Accès mensuel avec essais introductifs
- Plans de support B2B : Contrats annuels avec add-ons de support premium
- Outils et plugins : Clés de licence et versions légalisées
Exemples d’intégration
Sessions de paiement (abonnements)
Lors de la création de sessions de paiement, incluez votre produit d’abonnement et des add-ons optionnels :Modifications de plan avec proration
Améliorez ou dégradez un abonnement et contrôlez le comportement de la proration :Annulation à la prochaine date de facturation
Planifiez une annulation qui prend effet à la fin de la période de facturation actuelle :Abonnements à la demande
Créez un abonnement à la demande et facturez plus tard si nécessaire :Mise à jour de la méthode de paiement pour un abonnement actif
Mettez à jour la méthode de paiement pour un abonnement actif :Réactivation de l’abonnement en pause
Réactivez un abonnement mis en pause en raison d’un paiement échoué :Abonnements avec Mandats conformes à la RBI
Les abonnements UPI et par carte indienne fonctionnent selon les règlements RBI (Reserve Bank of India) avec des exigences de mandat spécifiques :Limites de Mandat
Le type et le montant du mandat dépendent de la charge récurrente de votre abonnement :- Frais en dessous du seuil de mandat (par défaut ₹15 000) : Nous créons un mandat à la demande pour le montant seuil. Le montant de l’abonnement est facturé périodiquement selon la fréquence de votre abonnement, jusqu’à la limite de mandat.
- Frais égaux ou supérieurs au seuil de mandat : Nous créons un mandat d’abonnement (ou un mandat à la demande) pour le montant exact de l’abonnement.
mandate_min_amount_inr_paise (INR paise). Le montant enregistré auprès de la banque est max(mandate_floor, billing_amount) — donc le seuil devient effectivement le plafond d’autorisation côté client lorsque la facturation est inférieure.
Pour des informations détaillées sur les mandats conformes à la RBI et le seuil de mandat configurable pour les méthodes de paiement indiennes, consultez la page Méthodes de paiement en Inde.
Considérations d’Amélioration et de Déclassement
Important : Lors d’une amélioration ou d’un déclassement d’abonnement, réfléchissez attentivement aux limites de mandat :- Si une amélioration ou un déclassement entraîne un montant de facturation qui dépasse Rs 15 000 et dépasse la limite de paiement actuelle à la demande, le débit peut échouer.
- Dans de tels cas, le client peut avoir besoin de mettre à jour sa méthode de paiement ou de modifier à nouveau l’abonnement pour établir un nouveau mandat avec la limite correcte.
Autorisation pour Frais de Haute Valeur
Pour les frais d’abonnement de Rs 15 000 ou plus :- Le client sera invité par sa banque à autoriser la transaction.
- Si le client ne réussit pas à autoriser la transaction, celle-ci échouera et l’abonnement sera mis en pause.
Délai de Traitement de 48 Heures
Calendrier de Traitement : Les frais récurrents sur les cartes indiennes et les abonnements UPI suivent un modèle de traitement unique :- Les frais sont initiés à la date prévue selon la fréquence de votre abonnement.
- La déduction réelle du compte du client a lieu seulement après 48 heures à partir de l’initiation du paiement.
- Cette fenêtre de 48 heures peut s’étendre jusqu’à 2-3 heures supplémentaires selon les réponses de l’API bancaire.
Fenêtre d’Annulation de 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 restera actif (c’est un cas particulier propre aux abonnements par carte indienne et UPI AutoPay).
- Cependant, la déduction réelle peut échouer, et dans ce cas, nous mettrons l’abonnement en pause.
- Retarder l’activation des avantages jusqu’à la confirmation du paiement
- Mettre en œuvre des périodes de grâce ou un accès temporaire
- Surveiller l’état de l’abonnement pour les annulations de mandat
- Gérer les états de mise en pause dans votre logique d’application
Meilleures Pratiques
- Commencez avec des niveaux clairs : 2 à 3 plans avec des différences évidentes
- Communiquez les prix : Montrez les totaux, la proration et le prochain renouvellement
- Utilisez judicieusement les essais : Convertissez avec l’intégration, pas seulement le temps
- Exploitez les add‑ons : Gardez les plans de base simples et vendez des extras
- Testez les changements : Validez les changements de plan et la proration en mode test
Les abonnements sont une base flexible pour des revenus récurrents. Commencez simplement, testez soigneusement et itérez en fonction des métriques d’adoption, de résiliation et d’expansion.