AzureAzure IoT HubIoT

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.

DimensionUnitWhat's being charged
Provisioning operationsper 1K operationsPer 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.30

Optimization tips

Common ways to reduce azurerm_iothub_dps cost without changing the workload.

Avoid unnecessary re-provisioning

Proportional to re-provisions avoided

A 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 Hub

DPS 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.