Seat-based billing lets you charge customers based on the number of users, team members, or licenses they need. It’s the standard pricing model for team collaboration tools, enterprise software, and B2B SaaS products.
Implementation Tutorial
Step-by-step guide with code examples.
Add-ons Documentation
Learn about the add-on system that powers seat-based billing.
Subscription Management
Manage seat-based subscriptions and plan changes.
Webhooks
Track seat changes with subscription webhooks.
What is Seat-Based Billing?
Seat-based billing (also called per-user or per-seat pricing) charges customers based on the number of users who access your product. Instead of a flat fee, the price scales with team size.Common Use Cases
Benefits of Seat-Based Pricing
For Your Business:- Revenue scales naturally as customers grow
- Predictable pricing customers can budget for
- Clear upgrade path from individual to team to enterprise
- Higher lifetime value as teams expand
- Pay only for what they use
- Easy to understand and forecast costs
- Flexibility to add/remove users as needed
- Fair pricing that matches team size
How Seat-Based Billing Works in Dodo Payments
Dodo Payments implements seat-based billing using the Add-ons system. Here’s how it works:Architecture Overview
A Team Pro subscription costs 15/month for each extra seat. For example, if your team needs 15 seats:- Base Plan: $99/month (includes 5 seats)
- Add-ons: 10 extra seats × 150/month
- Total monthly cost: 150 = $249 for 15 seats
Key Components
Pricing Strategies
Choose the seat-based pricing strategy that fits your business:Strategy 1: Base + Per-Seat Add-on
Include a set number of seats in the base plan, charge for additional seats. Example:Strategy 2: Pure Per-Seat Pricing
Charge a flat rate per seat with no base fee. Example:Strategy 3: Tiered Seat Pricing
Different base plans with different per-seat rates. Example:Strategy 4: Seat Bundles
Sell seats in packs rather than individually. Example:Setting Up Seat-Based Billing
Step 1: Plan Your Pricing
Before implementation, define your pricing structure:1
Define Base Plan
Decide what’s included in the base subscription:
- Base price (can be $0 for pure per-seat)
- Number of included seats
- Features available at this tier
2
Set Seat Pricing
Determine the per-seat add-on cost:
- Price per additional seat
- Any volume discounts (via multiple add-ons)
- Maximum seats allowed (if applicable)
3
Consider Billing Frequency
Align seat pricing with your billing cycle:
- Monthly subscriptions → monthly seat charges
- Annual subscriptions → annual seat charges (often discounted)
Step 2: Create the Seat Add-on
In your Dodo Payments dashboard:- Navigate to Products → Add-Ons
- Click Create Add-On
- Configure the add-on:
Step 3: Create the Base Subscription
Create your subscription product:- Navigate to Products → Create Product
- Select Subscription
- Configure pricing and details
- In the Add-Ons section, attach your seat add-on
Step 4: Attach Add-on to Product
Link the seat add-on to your subscription:- Edit your subscription product
- Scroll to Add-Ons section
- Click Add Add-Ons
- Select your seat add-on
- Save changes
Your subscription product now supports seat-based pricing. Customers can purchase any quantity of additional seats during checkout.
Managing Seats
Adding Seats to New Subscriptions
When creating a checkout session, specify the seat quantity:Changing Seat Count on Existing Subscriptions
Use the Change Plan API to adjust seats:Removing Seats
To reduce seat count, specify the lower quantity:Removing All Additional Seats
Pass an empty addons array to remove all add-ons:Proration for Seat Changes
When customers add or remove seats mid-cycle, proration determines how they’re billed.Proration Modes
Exemples de Proration
Scénario : 15 jours restants dans le cycle, ajout de 5 sièges à $10/siege- prorated_immediately
- difference_immediately
- full_immediately
- do_not_bill
Aperçu Avant Changement
Toujours prévisualiser la proration avant de faire des changements :Suivi des Sièges avec les Webhooks
Surveillez les changements de sièges en écoutant les webhooks d’abonnement :Événements Pertinents
Exemple de Gestionnaire de Webhook
Imposition des Limites de Sièges
Votre application doit imposer des limites de sièges. Dodo Payments suit la facturation, mais vous contrôlez l’accès.Stratégies d’Imposition
- Hard Limit
- Soft Limit with Warning
- Auto-Upgrade
Empêchez strictement l’ajout d’utilisateurs au-delà du nombre de sièges.
Modèles Avancés
Différents Types de Sièges
Offrez différents types de sièges avec des prix différents :Réductions sur Sièges Annuels
Offrez des prix réduits pour les sièges annuels :Exigences Minima de Sièges
Exigez un nombre minimum de sièges pour certains plans :Meilleures Pratiques
Meilleures Pratiques de Tarification
- Communication Claire : Affichez clairement le prix par siège sur votre page de tarification
- Sièges Inclus : Envisagez d’inclure quelques sièges dans le prix de base pour réduire les frictions
- Réductions de Volume : Offrez des tarifs réduits par siège pour les grandes équipes afin de conclure des accords d’entreprise
- Incentives Annuels : Réduisez les plans annuels pour améliorer le flux de trésorerie et la rétention
Meilleures Pratiques Techniques
- Mettre en Cache les Comptes de Sièges : Mettez en cache localement les comptes d’abonnement pour éviter les appels API à chaque demande
- Synchroniser Régulièrement : Synchronisez périodiquement votre nombre de sièges locaux avec Dodo Payments via API
- Gérer les Échecs : Si un changement de siège échoue, affichez des messages d’erreur clairs et des options de réessai
- Piste d’Audit : Enregistrez tous les changements de sièges pour les différends de facturation et la conformité
Meilleures Pratiques d’Expérience Utilisateur
- Retour d’Information en Temps Réel : Affichez l’impact coût immédiat lors de l’ajustement des sièges
- Étapes de Confirmation : Demandez confirmation avant les changements de facturation
- Transparence de la Proration : Expliquez clairement les frais proratisés avant de les appliquer
- Facilité de Réduction : Ne rendez pas difficile la réduction du nombre de sièges (cela renforce la confiance)
Dépannage
Seat count mismatch between app and billing
Seat count mismatch between app and billing
Symptôme : Votre application affiche un nombre de sièges différent de celui de l’abonnement.Causes :
- Webhook non reçu ou traité
- Problème de synchronisation lors du changement de siège
- Données mises en cache non mises à jour
- Implémentez des gestionnaires de webhook pour
subscription.plan_changed - Ajoutez un bouton “Synchroniser avec la facturation” qui récupère l’abonnement actuel
- Définissez le cache TTL pour assurer un rafraîchissement régulier
Proration charges unexpected
Proration charges unexpected
Symptôme : Le client est confus par le montant facturé à mi-parcours.Causes :
- Mode de proration non communiqué clairement
- Le client n’a pas vu l’aperçu avant confirmation
- Utilisez toujours
previewChangePlanavant de faire des changements - Affichez une répartition claire : “Ajout de X sièges = $Y aujourd’hui (proratisé pour Z jours)”
- Documentez votre politique de proration dans le centre d’aide
Add-on not appearing in checkout
Add-on not appearing in checkout
Symptôme : Add-on de siège non disponible lors du paiement.Causes :
- Add-on non attaché au produit
- Add-on archivé ou supprimé
- Incompatibilité de devise entre le produit et l’add-on
- Vérifiez que l’add-on est attaché dans les paramètres du produit
- Vérifiez le statut de l’add-on dans le tableau de bord des Add-Ons
- Assurez-vous que les devises correspondent exactement
Cannot reduce seats below current usage
Cannot reduce seats below current usage
Symptôme : Le client veut réduire le nombre de sièges mais a des utilisateurs assignés.Solutions :
- Affichez quels utilisateurs doivent être supprimés avant de réduire le nombre de sièges
- Implémentez un flux de travail : Supprimer des utilisateurs → Réduire le nombre de sièges
- Envisagez une période de grâce avant d’appliquer la réduction de sièges
Documentation Connexe
Seat-Based Pricing Tutorial
Guide de mise en œuvre complet avec code.
Add-ons
Comprenez en profondeur le système d’add-ons.
Plan Changes & Proration
Gérer les modifications d’abonnement.
Subscription Webhooks
Suivre les événements d’abonnement.