azurerm_iothub_dps cost estimation
Zero-touch device provisioning for IoT Hub, billed per provisioning operation. 100K operations is ~$12 — it's a low, usage-based cost.
An azurerm_iothub_dps is the Device Provisioning Service that automatically registers and assigns IoT devices to the right IoT Hub at first boot (zero-touch provisioning). Cost is purely per operation — ~$0.123 per 1,000 provisioning operations — with no standing fee. 100K operations is ~$12.30.
A provisioning operation happens when a device enrolls or re-provisions, not on every message — so DPS cost is driven by fleet onboarding and re-provisioning events, which are infrequent relative to ongoing telemetry. For a stable fleet, DPS is a small one-time-ish cost as devices come online; the ongoing message cost lives on the IoT Hub itself (azurerm_iothub).
There's little to optimize — it's inexpensive and usage-based. The main thing is to avoid unnecessary re-provisioning (devices that re-enroll on every boot rather than caching their assignment generate extra operations).
c3x prices DPS from monthly provisioning operations as usage, so projected cost can be modelled.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "azurerm_iothub_dps" "main" {
name = "device-provisioning"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku {
name = "S1"
capacity = 1
}
linked_hub {
connection_string = azurerm_iothub.main.shared_access_policy[0].connection_string
location = azurerm_resource_group.main.location
}
}Pricing dimensions
What you actually pay for when you provision azurerm_iothub_dps.
| Dimension | Unit | What's being charged |
|---|---|---|
| Provisioning operations | per 1K operations | Per device enrollment/re-provisioning operation. Not charged per message — driven by onboarding and re-provisioning events. $0.123 per 1K operations → 100K = $12.30/month |
Sample C3X output
100K provisioning operations in a month:
azurerm_iothub_dps.main
└─ Provisioning operations 100 × 1k ops $12.30
Monthly $12.30Optimization tips
Common ways to reduce azurerm_iothub_dps cost without changing the workload.
Avoid unnecessary re-provisioning
Proportional to re-provisions avoidedA provisioning operation is billed each time a device enrolls or re-provisions. Devices that cache their hub assignment and only re-provision when needed (not on every boot) generate far fewer operations.
It's the IoT Hub that drives the real cost
Focus optimization on the HubDPS is a small onboarding cost; the ongoing telemetry cost lives on the IoT Hub (per unit/tier). Optimize the IoT Hub tier and message batching — DPS itself rarely needs attention.
FAQ
How is Azure IoT Hub DPS billed?
Per provisioning operation — ~$0.123 per 1,000 operations — with no standing fee. An operation is a device enrollment or re-provisioning, not a telemetry message, so 100K operations is ~$12.30. It's a low, usage-based cost.
Does DPS charge per device message?
No — DPS only charges for provisioning operations (enrollment/re-provisioning). Ongoing device-to-cloud messaging is billed on the IoT Hub itself (azurerm_iothub) by its unit/tier.
How does c3x estimate the cost?
DPS is usage-driven, so c3x models it from monthly provisioning operations in c3x-usage.yml. There's no standing fee to price.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including azurerm_iothub_dps.