मुख्य सामग्री पर जाएं
सीट-आधारित बिलिंग आपको ग्राहकों से उनके आवश्यक उपयोगकर्ताओं, टीम के सदस्यों, या लाइसेंस की संख्या के आधार पर शुल्क लेने देती है। यह टीम सहयोग उपकरणों, एंटरप्राइज सॉफ़्टवेयर, और B2B SaaS उत्पादों के लिए मानक मूल्य निर्धारण मॉडल है।

सीट-आधारित बिलिंग क्या है?

सीट-आधारित बिलिंग (जिसे प्रति-उपयोगकर्ता या प्रति-सीट मूल्य निर्धारण भी कहा जाता है) ग्राहकों से उन उपयोगकर्ताओं की संख्या के आधार पर शुल्क लेती है जो आपके उत्पाद का उपयोग करते हैं। एक स्थिर शुल्क के बजाय, मूल्य टीम के आकार के साथ बढ़ता है।

सामान्य उपयोग के मामले

उद्योगउदाहरणमूल्य निर्धारण मॉडल
टीम सहयोगSlack, Notion, Asanaप्रति सक्रिय उपयोगकर्ता/महीना
डेवलपर उपकरणGitHub, GitLab, Jiraप्रति सीट/महीना
CRM सॉफ़्टवेयरSalesforce, HubSpotप्रति उपयोगकर्ता लाइसेंस
डिज़ाइन उपकरणFigma, Canvaप्रति संपादक सीट
सुरक्षा सॉफ़्टवेयर1Password, Oktaप्रति उपयोगकर्ता/महीना
वीडियो कॉन्फ्रेंसिंगZoom, Teamsप्रति होस्ट लाइसेंस

सीट-आधारित मूल्य निर्धारण के लाभ

आपके व्यवसाय के लिए:
  • जैसे-जैसे ग्राहक बढ़ते हैं, राजस्व स्वाभाविक रूप से बढ़ता है
  • पूर्वानुमानित मूल्य निर्धारण जिसे ग्राहक बजट कर सकते हैं
  • व्यक्तिगत से टीम से उद्यम तक स्पष्ट अपग्रेड पथ
  • जैसे-जैसे टीमें बढ़ती हैं, उच्च जीवनकाल मूल्य
आपके ग्राहकों के लिए:
  • केवल वही भुगतान करें जो वे उपयोग करते हैं
  • लागत को समझना और पूर्वानुमान करना आसान है
  • आवश्यकतानुसार उपयोगकर्ताओं को जोड़ने/हटाने की लचीलापन
  • उचित मूल्य निर्धारण जो टीम के आकार से मेल खाता है

Dodo Payments में सीट-आधारित बिलिंग कैसे काम करती है

Dodo Payments सीट-आधारित बिलिंग को ऐड-ऑन प्रणाली का उपयोग करके लागू करता है। यह कैसे काम करता है:

आर्किटेक्चर अवलोकन

एक Team Pro सदस्यता की कीमत 99/महीनाहोतीहैऔरइसमें5सीटेंशामिलहैं।यदिआपकेपास5सेअधिकउपयोगकर्ताहैं,तोप्रत्येकअतिरिक्तसीटकेलिएआप99/महीना होती है और इसमें 5 सीटें शामिल हैं। यदि आपके पास 5 से अधिक उपयोगकर्ता हैं, तो प्रत्येक अतिरिक्त सीट के लिए आप 15/महीना अतिरिक्त भुगतान करते हैं। उदाहरण के लिए, यदि आपकी टीम को 15 सीटों की आवश्यकता है:
  • बेस प्लान: $99/माह (5 सीटें शामिल)
  • ऐड-ऑन: 10 अतिरिक्त सीटें × 15/माह=15/माह = 150/माह
  • कुल मासिक लागत: 99+99 + 150 = 15 सीटों के लिए $249

प्रमुख घटक

घटकउद्देश्यउदाहरण
बेस उत्पादशामिल सीटों के साथ मुख्य सदस्यता”टीम योजना - $99/महीना (5 सीटें शामिल)“
सीट ऐड-ऑनअतिरिक्त उपयोगकर्ताओं के लिए प्रति-सीट शुल्क”अतिरिक्त सीट - $15/महीना प्रत्येक”
मात्राखरीदी गई अतिरिक्त सीटों की संख्या10 अतिरिक्त सीटें

मूल्य निर्धारण रणनीतियाँ

अपनी व्यवसाय के लिए उपयुक्त सीट-आधारित मूल्य निर्धारण रणनीति चुनें:

रणनीति 1: बेस + प्रति-सीट ऐड-ऑन

बेस योजना में एक निश्चित संख्या में सीटें शामिल करें, अतिरिक्त सीटों के लिए शुल्क लें। उदाहरण:
Starter Plan: $49/month
├── Includes: 3 seats
├── Extra seats: $10/month each
└── 8 total seats = $49 + (5 × $10) = $99/month
सर्वश्रेष्ठ के लिए: उत्पाद जहां छोटे टीमें बेस ऑफ़र के साथ कार्य कर सकती हैं।

रणनीति 2: शुद्ध प्रति-सीट मूल्य निर्धारण

बिना किसी बेस शुल्क के प्रति सीट एक स्थिर दर चार्ज करें। उदाहरण:
Per User: $12/month
├── 5 users = $60/month
├── 20 users = $240/month
└── 100 users = $1,200/month
कार्यान्वयन: बेस योजना की कीमत $0 पर सेट करें, केवल सीट ऐड-ऑन का उपयोग करें। सर्वश्रेष्ठ के लिए: सरल, पारदर्शी मूल्य निर्धारण; उपयोग-आधारित मॉडल।

रणनीति 3: स्तरित सीट मूल्य निर्धारण

विभिन्न प्रति-सीट दरों के साथ विभिन्न बेस योजनाएँ। उदाहरण:
Starter: $0/month base + $15/seat
├── Lower features, higher per-seat cost

Professional: $99/month base + $10/seat
├── More features, lower per-seat cost

Enterprise: $499/month base + $7/seat
└── All features, volume discount on seats
कार्यान्वयन: विभिन्न ऐड-ऑन कीमतों के साथ प्रत्येक स्तर के लिए अलग उत्पाद बनाएं। सर्वश्रेष्ठ के लिए: उच्च स्तरों पर अपग्रेड को प्रोत्साहित करना; उद्यम बिक्री।

रणनीति 4: सीट बंडल

सीटों को व्यक्तिगत रूप से बेचने के बजाय पैक में बेचें। उदाहरण:
5-Seat Pack: $50/month ($10/seat)
10-Seat Pack: $80/month ($8/seat)
25-Seat Pack: $175/month ($7/seat)
कार्यान्वयन: विभिन्न पैक आकारों के लिए कई ऐड-ऑन बनाएं। सर्वश्रेष्ठ के लिए: खरीद निर्णयों को सरल बनाना; बड़े प्रतिबद्धताओं को प्रोत्साहित करना।

सीट-आधारित बिलिंग सेट करना

चरण 1: अपनी मूल्य निर्धारण योजना बनाएं

कार्यान्वयन से पहले, अपनी मूल्य निर्धारण संरचना को परिभाषित करें:
1

Define Base Plan

निर्णय लें कि बेस सदस्यता में क्या शामिल है:
  • बेस कीमत (शुद्ध प्रति-सीट के लिए $0 हो सकता है)
  • शामिल सीटों की संख्या
  • इस स्तर पर उपलब्ध सुविधाएँ
2

Set Seat Pricing

प्रति-सीट ऐड-ऑन लागत निर्धारित करें:
  • अतिरिक्त सीट की कीमत
  • कोई वॉल्यूम छूट (कई ऐड-ऑन के माध्यम से)
  • अधिकतम सीटें (यदि लागू हो)
3

Consider Billing Frequency

सीट मूल्य निर्धारण को अपनी बिलिंग चक्र के साथ संरेखित करें:
  • मासिक सदस्यताएँ → मासिक सीट शुल्क
  • वार्षिक सदस्यताएँ → वार्षिक सीट शुल्क (अक्सर छूट के साथ)

चरण 2: सीट ऐड-ऑन बनाएं

अपने Dodo Payments डैशबोर्ड में:
  1. उत्पादऐड-ऑन पर जाएं
  2. ऐड-ऑन बनाएं पर क्लिक करें
  3. ऐड-ऑन को कॉन्फ़िगर करें:
फ़ील्डमाननोट्स
नाम”अतिरिक्त सीट” या “टीम सदस्य”स्पष्ट, उपयोगकर्ता के अनुकूल नाम
विवरण”अपने कार्यक्षेत्र में एक और टीम सदस्य जोड़ें”समझाएं कि ग्राहकों को क्या मिलता है
मूल्यआपकी प्रति-सीट कीमतउदाहरण: $10.00
मुद्राअपने बेस उत्पाद से मेल खाता हैएक ही मुद्रा होनी चाहिए
कर श्रेणीबेस उत्पाद के समानसुनिश्चित करता है कि कर प्रबंधन सुसंगत है
ऐड-ऑन नाम बनाएं जो चालान पर अर्थ रखते हों। “Additional Team Seat” ग्राहकों के लिए “Seat Add-on” की तुलना में बिल की समीक्षा करते समय अधिक स्पष्ट है।

चरण 3: बेस सदस्यता बनाएं

अपनी सदस्यता उत्पाद बनाएं:
  1. उत्पादउत्पाद बनाएं पर जाएं
  2. सदस्यता चुनें
  3. मूल्य निर्धारण और विवरण कॉन्फ़िगर करें
  4. ऐड-ऑन अनुभाग में, अपनी सीट ऐड-ऑन संलग्न करें

चरण 4: उत्पाद से ऐड-ऑन संलग्न करें

अपनी सदस्यता से सीट ऐड-ऑन लिंक करें:
  1. अपनी सदस्यता उत्पाद को संपादित करें
  2. ऐड-ऑन अनुभाग पर स्क्रॉल करें
  3. ऐड-ऑन जोड़ें पर क्लिक करें
  4. अपनी सीट ऐड-ऑन चुनें
  5. परिवर्तन सहेजें
आपका सदस्यता उत्पाद अब सीट-आधारित मूल्य निर्धारण का समर्थन करता है। ग्राहक चेकआउट के दौरान किसी भी मात्रा में अतिरिक्त सीटें खरीद सकते हैं।

सीटों का प्रबंधन

नई सदस्यताओं में सीटें जोड़ना

चेकआउट सत्र बनाते समय, सीट मात्रा निर्दिष्ट करें:
const session = await client.checkoutSessions.create({
  product_cart: [{
    product_id: 'prod_team_plan',
    quantity: 1,
    addons: [{
      addon_id: 'addon_seat',
      quantity: 10  // 10 additional seats
    }]
  }],
  customer: { email: 'admin@company.com' },
  return_url: 'https://yourapp.com/success'
});

मौजूदा सदस्यताओं पर सीट संख्या बदलना

सीटों को समायोजित करने के लिए चेंज प्लान API का उपयोग करें:
// Add 5 more seats to existing subscription
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_team_plan',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  addons: [{
    addon_id: 'addon_seat',
    quantity: 15  // New total: 15 additional seats
  }]
});

सीटें हटाना

सीट संख्या कम करने के लिए, कम मात्रा निर्दिष्ट करें:
// Reduce from 15 to 8 additional seats
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_team_plan',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{
    addon_id: 'addon_seat',
    quantity: 8  // Reduced to 8 additional seats
  }]
});

सभी अतिरिक्त सीटें हटाना

सभी ऐड-ऑन हटाने के लिए एक खाली ऐड-ऑन एरे पास करें:
// Remove all additional seats, keep only base plan seats
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_team_plan',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: []  // Removes all add-ons
});

सीट परिवर्तनों के लिए प्रोरशन

जब ग्राहक मध्य चक्र में सीटें जोड़ते या हटाते हैं, तो प्रोरशन यह निर्धारित करता है कि उन्हें कैसे बिल किया जाता है।

प्रोरशन मोड

मोडसीटें जोड़नासीटें हटाना
prorated_immediatelyचक्र में शेष दिनों के लिए चार्ज करेंअप्रयुक्त दिनों के लिए क्रेडिट
difference_immediatelyपूर्ण सीट कीमत चार्ज करेंक्रेडिट भविष्य के नवीनीकरणों पर लागू
full_immediatelyपूर्ण सीट मूल्य चार्ज करें, बिलिंग चक्र रीसेट करेंकोई क्रेडिट नहीं

प्रोरशन उदाहरण

परिदृश्य: 15-दिन के बिलिंग चक्र शेष, $10/सीट पर 5 सीट जोड़ना
Prorated charge = ($10 × 5 seats) × (15 days / 30 days)
                = $50 × 0.5
                = $25 immediate charge
ग्राहक अब 25काभुगतानकरताहै,फिरनवीनीकरणपर25 का भुगतान करता है, फिर नवीनीकरण पर 50/महीना।
परिदृश्य: prorated_immediately के साथ चक्र के मध्य में 3 सीटें निकालना
Current: Team Plan ($99/month) + 10 extra seats × $10/seat = $199/month
Change: Remove 3 seats (10 → 7 extra seats) on day 20 of 30-day cycle
Remaining: 10 days

Credit for removed seats:
  = ($10 × 3 seats) × (10 days / 30 days)
  = $30 × 0.333
  = $10.00 credit

→ $10.00 credit added to subscription
→ Next renewal: $99 + (7 × $10) = $169.00/month
→ Credit auto-applies: $169.00 − $10.00 = $159.00 on next invoice
सीट परिवर्तनों के लिए एक प्रोरशन मोड चुनना: जब टीमें अक्सर सीट समायोजित करती हैं, तब prorated_immediately को निष्पक्ष दिन-आधारित बिलिंग के लिए उपयोग करें। साधारण गणना के लिए जो पूर्ण सीट मूल्य चार्ज या क्रेडिट करता है, उस स्थिति में difference_immediately का उपयोग करें। विस्तृत तुलना के लिए प्रोरशन गाइड देखें।

परिवर्तन से पहले पूर्वावलोकन

परिवर्तन करने से पहले हमेशा प्रोरशन का पूर्वावलोकन करें:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_team_plan',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  addons: [{ addon_id: 'addon_seat', quantity: 20 }]
});

console.log('Immediate charge:', preview.immediate_charge.summary);
// Show customer: "Adding 5 seats will cost $25 today"

वेबहुक के साथ सीटें ट्रैक करना

सीट परिवर्तनों की निगरानी सदस्यता वेबहुक सुनकर करें:

संबंधित इवेंट

इवेंटकब ट्रिगर होता हैउपयोग केस
subscription.activeनई सदस्यता सक्रिय हुईप्रारंभिक सीटें प्रोविजन करें
subscription.plan_changedसीटें जोड़ी/हटाई गईंअपने ऐप में सीट गिनती अपडेट करें
subscription.renewedसदस्यता नवीनीकृतपुष्टि करें कि सीट गिनती अपरिवर्तित है
subscription.cancelledसदस्यता रद्दसभी सीटें निष्क्रिय करें

वेबहुक हैंडलर उदाहरण

app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'subscription.active':
      // New subscription - provision seats
      const seats = calculateTotalSeats(event.data);
      await provisionSeats(event.data.customer_id, seats);
      break;

    case 'subscription.plan_changed':
      // Seats changed - update access
      const newSeats = calculateTotalSeats(event.data);
      await updateSeatCount(event.data.subscription_id, newSeats);
      break;

    case 'subscription.cancelled':
      // Subscription cancelled - deprovision
      await deprovisionAllSeats(event.data.subscription_id);
      break;
  }

  res.json({ received: true });
});

function calculateTotalSeats(subscriptionData) {
  const baseSeats = 5;  // Included in plan
  const addonSeats = subscriptionData.addons?.reduce(
    (total, addon) => total + addon.quantity, 0
  ) || 0;
  return baseSeats + addonSeats;
}

सीट सीमाओं को लागू करना

आपका एप्लिकेशन सीट सीमाओं को लागू करना चाहिए। Dodo Payments बिलिंग ट्रैक करता है, लेकिन आप पहुंच नियंत्रित करते हैं।

लागूकरण रणनीतियाँ

सीट गिनती से अधिक उपयोगकर्ताओं को जोड़ने से कड़ाई से रोकें।
async function inviteUser(teamId: string, email: string) {
  const team = await getTeam(teamId);
  const subscription = await getSubscription(team.subscriptionId);
  const totalSeats = calculateTotalSeats(subscription);
  const usedSeats = await countTeamMembers(teamId);

  if (usedSeats >= totalSeats) {
    throw new Error('No seats available. Please upgrade your plan.');
  }

  await sendInvitation(teamId, email);
}

उन्नत पैटर्न

अलग सीट प्रकार

विभिन्न सीट प्रकारों को अलग मूल्य के साथ प्रदान करें:
Full Seats: $20/month - Full access to all features
View-Only Seats: $5/month - Read-only access
Guest Seats: $0/month - Limited external collaborator access
नियोजन: प्रत्येक सीट प्रकार के लिए अलग ऐड-ऑन बनाएं।
const session = await client.checkoutSessions.create({
  product_cart: [{
    product_id: 'prod_team_plan',
    quantity: 1,
    addons: [
      { addon_id: 'addon_full_seat', quantity: 10 },
      { addon_id: 'addon_viewer_seat', quantity: 25 },
      { addon_id: 'addon_guest_seat', quantity: 50 }
    ]
  }]
});

वार्षिक सीट छूट

छूट वाली वार्षिक सीट मूल्य निर्धारण पेश करें:
Monthly: $15/seat/month
Annual: $12/seat/month (20% savings)
नियोजन: मासिक और वार्षिक योजनाओं के लिए अलग उत्पाद बनाएं जिनमें अलग ऐड-ऑन मूल्य हों।

न्यूनतम सीट आवश्यकताएँ

कुछ योजनाओं के लिए न्यूनतम सीटों की आवश्यकता रखें:
async function validateSeatCount(planId: string, seatCount: number) {
  const minimums = {
    'prod_starter': 1,
    'prod_team': 5,
    'prod_enterprise': 25
  };

  if (seatCount < minimums[planId]) {
    throw new Error(`${planId} requires at least ${minimums[planId]} seats`);
  }
}

सर्वोत्तम अभ्यास

मूल्य निर्धारण सर्वोत्तम अभ्यास

  • स्पष्ट संचार: अपनी मूल्य पृष्ठ पर प्रति-सीट मूल्य को प्रमुखता से दिखाएँ
  • शामिल सीटें: घर्षण कम करने के लिए बेस कीमत में कुछ सीटें शामिल करने पर विचार करें
  • वॉल्यूम छूट: एंटरप्राइज डील जीतने के लिए बड़ी टीमों को प्रति-सीट कम दरें प्रदान करें
  • वार्षिक प्रोत्साहन: नकदी प्रवाह और धारणा बेहतर करने के लिए वार्षिक योजनाओं पर छूट दें

तकनीकी सर्वोत्तम अभ्यास

  • सीट गणना कैश करें: प्रत्येक अनुरोध पर API कॉल से बचने के लिए स्थानीय रूप से सदस्यता सीट गणनाओं को कैश करें
  • नियमित सिंक करें: समय-समय पर अपने स्थानीय सीट गणना को Dodo Payments के साथ API के माध्यम से सिंक करें
  • असफलताओं को संभालें: यदि सीट परिवर्तन विफल होता है, तो स्पष्ट त्रुटि संदेश और पुनः प्रयास के विकल्प दिखाएँ
  • ऑडिट ट्रेल: बिलिंग विवादों और अनुपालन के लिए सभी सीट परिवर्तनों का लॉग रखें

उपयोगकर्ता अनुभव सर्वोत्तम अभ्यास

  • रीयल-टाइम प्रतिक्रिया: सीट समायोजन करते समय तुरंत लागत प्रभाव दिखाएँ
  • पुष्टि चरण: बिलिंग परिवर्तन से पहले पुष्टि जरूरी करें
  • प्रोरशन पारदर्शिता: लागू करने से पहले प्रोरटेड शुल्क को स्पष्ट रूप से समझाएँ
  • आसान डाउनग्रेड: सीटें कम करने को मुश्किल न बनाएं (यह भरोसा बढ़ाता है)

समस्या निवारण

लक्षण: आपका ऐप सदस्यता की तुलना में अलग सीट गिनती दिखाता है।कारण:
  • वेबहुक प्राप्त या संसाधित नहीं हुआ
  • सीट परिवर्तन के दौरान रेस कंडीशन
  • कैश किए गए डेटा को अपडेट नहीं किया गया
समाधान:
  1. subscription.plan_changed के लिए वेबहुक हैंडलर लागू करें
  2. “बिलिंग के साथ सिंक” बटन जोड़ें जो वर्तमान सदस्यता लाए
  3. नियमित ताज़ा के लिए कैश TTL सेट करें
लक्षण: ग्राहक मध्य-चक्र शुल्क राशि से भ्रमित है।कारण:
  • प्रोरशन मोड स्पष्ट रूप से नहीं बताया गया
  • ग्राहक ने पुष्टि से पहले पूर्वावलोकन नहीं देखा
समाधान:
  1. परिवर्तन करने से पहले हमेशा previewChangePlan का उपयोग करें
  2. स्पष्ट विभाजन दिखाएँ: “X सीट जोड़ना = $Y आज (Z दिनों के लिए प्रोरटेड)”
  3. अपनी प्रोरशन नीति को हेल्प सेंटर में दस्तावेज़ित करें
लक्षण: चेकआउट के दौरान सीट ऐड-ऑन उपलब्ध नहीं है।कारण:
  • ऐड-ऑन उत्पाद से जुड़ा नहीं है
  • ऐड-ऑन आर्काइव या हटाया गया है
  • उत्पाद और ऐड-ऑन के बीच मुद्रा में मेल नहीं है
समाधान:
  1. उत्पाद सेटिंग्स में ऐड-ऑन जुड़ा हुआ है या नहीं जांचें
  2. Add-Ons डैशबोर्ड में ऐड-ऑन स्थिति देखें
  3. सुनिश्चित करें कि मुद्राएँ बिल्कुल मेल खाती हैं
लक्षण: ग्राहक सीटें कम करना चाहता है लेकिन उपयोगकर्ता असाइन किए गए हैं।समाधान:
  1. दिखाएँ कि सीटें कम करने से पहले किन उपयोगकर्ताओं को हटाना होगा
  2. एक वर्कफ़्लो लागू करें: उपयोगकर्ताओं को हटाएँ → सीटें कम करें
  3. सीट कमी लागू करने से पहले एक ग्रेस अवधि पर विचार करें

संबंधित दस्तावेज़ीकरण