I’ve consulted with several IoT platforms on pricing models, and firmware updates are always contentious. Here’s my analysis of the three key considerations:
Usage-Based vs Inventory-Based Models:
Usage-based aligns with customer value but creates revenue volatility. Customers update firmware in response to security vulnerabilities or feature needs, which are unpredictable. Inventory-based provides stable revenue but feels unfair to customers who maintain large firmware libraries “just in case” but rarely deploy them.
Best practice: Tiered usage-based with volume discounts. Charge per successful deployment but offer graduated pricing (first 100 updates/month at $X, next 400 at reduced rate, etc.). This balances fairness with predictability and incentivizes customers to consolidate updates into planned maintenance windows.
Customer Transparency:
Transparency is non-negotiable in modern SaaS. Provide a billing dashboard showing:
- Real-time firmware operation counts
- Month-to-date costs with projections
- Breakdown by device group or customer segment
- Comparison to previous periods
Customers tolerate variable costs if they can monitor and predict them. Cumulocity’s analytics can feed this data through custom dashboards or integrate with billing systems via REST API.
Revenue Predictability:
For financial stability, consider commitment-based pricing. Customers commit to minimum update volumes annually (e.g., 5000 firmware deployments) at a discounted rate. Overages charged at standard rates. This provides baseline ARR while capturing upside from high-usage periods.
Alternatively, implement “update credits” - customers purchase credit bundles (e.g., 1000 updates for $X) that roll over monthly. Unused credits expire after 12 months. This shifts revenue recognition forward while giving customers flexibility.
Implementation Recommendation:
Start with simplified usage-based (per successful deployment) and add complexity based on customer feedback. Track these metrics in Cumulocity:
- Firmware operations by status (success/failure/pending)
- Data transfer volume for firmware binaries
- Device downtime during updates
- Rollback operations
Use measurement API to capture these as custom measurements, then aggregate monthly for billing. Build a buffer period (e.g., first 3 months at flat rate) to gather data before transitioning customers to usage-based pricing. This avoids surprising customers with unexpected bills while you calibrate pricing tiers.
The key is making the model understandable. Customers should be able to predict their bill within 20% accuracy at any point in the month.