Forum Discussion

AkashPagare123's avatar
AkashPagare123
Copper Contributor
Nov 21, 2024

Need Assistance to Create an Azure Marketplace Offer Based on a Per-User Pricing Model

We have the below Scenario

  • Billing Model: Charge SaaS subscribers €19 per user for each user added to the SaaS application.
  • Scenario: Subscribers can dynamically add or remove users within the SaaS application. The application will interact with Azure Marketplace to report the total count of users added or removed during a given month. Based on this data, the monthly cost for all users will be dynamically calculated, and the charges will be billed through the client’s(Subscriber) Microsoft account.

    Could someone please assist us in creating an Azure Marketplace offer for the scenario described above?

2 Replies

  • DataAttucks's avatar
    DataAttucks
    Copper Contributor

    To build a model for this scenario in Azure Marketplace, we need to focus on the following key components:

    1. Billing Model Structure: Subscribers are charged €19 per user added to the SaaS application. The cost is dynamically calculated based on the number of users added or removed during the month.
    2. Dynamic User Management: The ability for subscribers to add or remove users at any time within the SaaS application, with the changes automatically reflected in the billing model.
    3. Interaction with Azure Marketplace: Azure Marketplace will report the total number of users added or removed during a given month, and the charges will be billed through the client’s (subscriber’s) Microsoft account.

    Steps to Implement the Billing Model

    1. Create an Azure Marketplace SaaS Offer

    First, you will need to create a SaaS offer in the Azure Marketplace. This SaaS offer will define how your service interacts with Azure’s billing and subscription model.

    • Publish the Offer: The SaaS application must be published as an offer on Azure Marketplace with an appropriate description and pricing model.
    • Pricing Plan: Set a per-user pricing model (€19 per user per month). Azure Marketplace supports metered billing, so you can charge based on the number of users dynamically added or removed.

    2. Azure Marketplace Metering

    Azure Marketplace has an integrated metering mechanism that you can leverage to track usage and bill accordingly. The meter for this application would count the number of users added or removed during a billing period.

    • API for Metering: Implement the Azure Metering API to report the user counts each month. Your SaaS application should call this API to report the number of users added or removed.
    • Meter Definitions: Define the meter as "Users" with a unit of "User(s)" and a rate of €19 per user. This will ensure that each user added will be billed at the specified rate.

    3. Implement Dynamic User Addition/Removal

    The SaaS application should allow users to be added or removed dynamically. Every time a user is added or removed, this needs to be tracked, and the new total number of users should be reported to Azure Marketplace.

    • User Management API: Implement an API in the SaaS application that tracks user changes. Every time a subscriber adds or removes a user, this API would update the current user count.
    • Reporting to Azure Marketplace: After every user addition or removal, report the updated count of users to Azure Marketplace using their metering API.

    4. Billing Logic

    Billing is calculated based on the number of users added or removed during the given month. The SaaS platform should dynamically calculate the monthly bill by multiplying the number of active users by €19.

    • Monthly Calculation: At the end of each month, the total user count will be used to calculate the total cost.
    • Azure Marketplace Invoicing: The calculated amount will be passed through to Azure Marketplace, which will issue the final invoice to the subscriber via their Microsoft account.

    Example Calculation:

    If a subscriber adds 5 users at the beginning of the month and removes 2 users in the middle of the month, the total number of users for the month is 3. The charge will be:

    3 users×19 EUR=57 EUR3 \text{users} \times 19 \, \text {EUR} = 57 \, \text {EUR}

    If the number of users changes multiple times throughout the month, you would average or sum the user counts, depending on your billing preferences.

    5. Integration with Microsoft Billing

    Azure Marketplace manages invoicing and payments for SaaS subscriptions, so you do not need to build your own payment processing system. Once the user count is reported, Azure Marketplace will automatically handle the billing via the client’s Microsoft account.

    • Automated Billing: Azure Marketplace handles the automated billing cycle, invoicing the subscriber based on the usage reported by your application.
    • Notifications: Subscribers should receive email notifications and detailed billing statements through their Azure account, which will show the user count and the charges for that period.

    6. User and Billing Dashboard for Subscribers

    To provide transparency, it is important to offer a dashboard within your SaaS application that shows the current number of active users, any additions or removals that occurred during the month, and the estimated charges.

    • Dashboard Features: Show a list of users, with the ability to add/remove users and view the current cost.
    • Real-Time Updates: The dashboard should reflect the most current user count and billing information in real-time, with updates after every addition or removal.

    7. Support for Subscription Lifecycle Events

    Handle scenarios such as:

    • Trial Periods: If offering a free trial period, make sure the meter reports zero usage for that period.
    • Account Cancellations: Handle cases where a user cancels their subscription and ensure that the final invoice reflects any usage up until the cancellation date.

    Architecture Diagram

    1. SaaS Application Backend:
      • Manages user additions/removals.
      • Reports user counts to Azure Marketplace via Metering API.
    2. Azure Marketplace:
      • Receives usage data.
      • Applies the per-user pricing model.
      • Generates invoices through Microsoft account.
    3. Subscriber Dashboard:
      • Displays real-time user count and estimated charges.
      • Provides transparency to subscribers on their current usage and billing status.

    High-Level Flow:

    1. Subscriber Adds/Removes Users: The user count changes.
    2. SaaS Application Reports to Azure Marketplace: Every change in the user count is reported using the Metering API.
    3. Azure Marketplace Calculates Charges: The per-user charge (€19/user) is applied based on the reported user count.
    4. Azure Marketplace Bills Subscriber: The bill is sent through the client’s Microsoft account based on the total user count.

    Key Considerations:

    • Granularity: Decide whether charges will be prorated based on partial months or billed as a flat rate per month.
    • Accuracy: Ensure that your application accurately reports usage to avoid discrepancies in billing.
    • User Authentication: Ensure proper access control to prevent unauthorized user additions/removals.

    This model leverages Azure Marketplace's metering and billing capabilities while ensuring dynamic user management and accurate billing based on actual usage.

    • AkashPagare123's avatar
      AkashPagare123
      Copper Contributor

      Thank you for your response. I want to create an offer using the Per User pricing model option in the Partner Portal with the following requirements:

      1. Provide a 1-month free trial.
      2. Automatically start billing if the subscription continues after the trial period.

      However, I am facing the following challenges due to Microsoft’s restrictions:

      1. To report the total user count (usage), I need to use the Marketplace Metering API, which requires creating dimensions. However, dimensions are only supported under the Flat Rate pricing model, not the Per User pricing model.
      2. Adding dimensions prevents me from offering a 1-month free trial.

      Could someone please provide guidance on how to achieve this while working within these constraints?

       

       

Resources