Azure Container Apps pricing on the Consumption plan is vCPU-seconds and GiB-seconds per running replica, at an active or a reduced idle rate, plus HTTP requests from outside the environment, and on the Dedicated plan it is workload profile instances per hour plus a management fee; Container Instances bill vCPU and GB per second of a container group, and Azure Container Registry charges a daily rate per tier plus storage above the included amount. On the bill, Container Apps is dominated by replicas that a minimum replica count never lets scale to zero, and the registry by the Premium daily rate multiplied by the replicated regions.
Pricing dimensions
| Dimension | Unit | What drives it | Optional |
|---|---|---|---|
| Container Apps, vCPU and memory (Consumption) | vCPU-second and GiB-second per replica, active or idle | Resources assigned per replica from 0.25 to 4 vCPU, number of replicas, minimum replica count; per subscription and month the first 180,000 vCPU-seconds and 360,000 GiB-seconds are free | No, but zero at zero replicas |
| Container Apps, requests | Per million HTTP requests | Requests from outside the environment; health probes and internal calls do not count; 2 million per subscription and month free | No for apps with external ingress |
| Container Apps, Dedicated workload profiles | Instance per hour by profile (D4 to D32, E4 to E32, GPU) plus a management fee per hour and environment | Number of profile instances and profile size, not the number of apps on them; private endpoints and planned maintenance trigger the management fee on the Consumption plan too | Yes |
| Container Apps, serverless GPU and dynamic sessions | GPU-second; session per hour (code interpreter) or E16 instances (custom container) | GPU type and number of allocated sessions; GPU replicas have no idle rate | Yes |
| Container Instances | vCPU-second and GB-second per container group | vCPU rounded up to whole numbers, GB to tenths; from the image pull to the stop; Windows software per vCPU-second on top | Yes |
| Azure Container Registry | Registry per day on Basic, Standard or Premium | Tier with 10, 100 or 500 GiB included; storage above that per GB and month; Premium for geo-replication, private link and retention | No for a registry of your own |
| Azure Container Registry, geo-replication | Premium registry unit per day and region, storage per replica | Number of replica regions; an image in five regions occupies storage five times; replication between regions bills data transfer | Yes |
| ACR Tasks and outbound traffic | vCPU-second for builds; GB outbound | Build minutes and pulls into other regions or the internet | Yes (bandwidth and networking) |
| Purchase option | Savings plan for compute on Dedicated profiles | One- or three-year term | Yes (Azure savings plans) |
A replica counts as idle when its revision has a minimum replica count above zero and is scaled to that count, all its containers have started, no HTTP request is in flight, it uses less than 0.01 vCPU and it receives less than 1,000 bytes per second of network traffic. The reduced idle rate then applies; as soon as one condition fails or the revision scales above its minimum, every running replica is billed at the active rate. Jobs are always billed active, because they stop consuming resources once they complete. The free grant does not appear on the bill; only the consumption above it is charged.
On the Dedicated plan you pay profile instances, not apps: a D4 profile with 4 vCPU and 16 GiB takes several apps, scales out to further instances on demand and is billed per running instance, and as soon as the environment holds a Dedicated profile the management fee accrues per hour. The Flexible profile in preview is billed like Consumption plus the management fee and cannot scale to zero. How Container Apps relates to AKS and to the other providers' services is in containers and Kubernetes; the AKS meters are in Azure Kubernetes Service.
Container Instances bill per container group the requested vCPU, rounded up to a whole number, and the requested memory, rounded up to a tenth of a GB, by the second from the start of the first image pull until the group stops; a group takes at least 1 vCPU and 1 GB and at most 4 vCPU. The container registry bills a daily rate per tier for as long as the registry exists, whatever is pulled or pushed; Basic includes 10 GiB, Standard 100 GiB and Premium 500 GiB of storage, and every GB above that costs per month.
How it appears in your billing data
Container Apps sits in the cost export under MeterCategory Azure Container Apps. On the Consumption plan the meters are Standard vCPU Active Usage and Standard vCPU Idle Usage per 1 Second, Standard Memory Active Usage and Standard Memory Idle Usage per 1 GiB Second and Standard Requests per 1M; Dedicated profiles produce Dedicated vCPU Usage per 1 Hour, Dedicated Memory Usage per 1 Hour and Dedicated Plan Management per 1 Hour, GPU profiles Dedicated GPU Usage and serverless GPUs Standard NC T4 v3 GPU Usage or Standard NC A100 v4 GPU Usage per 1 Second. ConsumedService is Microsoft.App; ResourceId points at containerApps/ and the app name or at jobs/ for consumption meters, and at managedEnvironments/ and the environment for the management fee.
Container Instances sits under MeterCategory Container Instances with Standard vCPU Duration per 1 Hour, Standard Memory Duration per 1 GB Hour and Standard Windows Software Duration per 1 Second, ConsumedService Microsoft.ContainerInstance and a ResourceId on containerGroups/. The registry sits under MeterCategory Container Registry with Basic Registry Unit, Standard Registry Unit or Premium Registry Unit per 1/Day, Data Stored per 1 GB/Month, Premium Registry Replication Unit per 1/Day per replica region and Task vCPU Duration per 1 Second; ConsumedService is Microsoft.ContainerRegistry. Image pulls from another region or into the internet sit under bandwidth, not under the registry. The export's structure is in Azure cost exports.
In the FOCUS export these rows become ChargeCategory Usage with PricingCategory Standard, and savings plan rows on Dedicated profiles Committed; MeterName lands in SkuMeter, category and subcategory in x_SkuMeterCategory and x_SkuMeterSubcategory. Microsoft derives ServiceName from ConsumedService and the resource type, so Container Apps, Container Instances and the registry stay three separate services (FOCUS columns).
Levers
Configuration: the minimum replica count is the largest lever on Container Apps, because zero replicas cost nothing and an idle replica costs only the reduced rate but around the clock; an app without a latency requirement scales to zero, an app with one keeps one replica, not three. The resources per replica are the second lever, because vCPU and memory are counted apart and 0.25 vCPU per second costs a quarter of 1 vCPU; resource requests work here as they do in Kubernetes (rightsizing). Jobs replace permanent replicas for periodic work, and scale rules with a schedule keep development environments at zero overnight (scheduling and auto-scaling). On the registry the tier is the lever: Premium costs ten times Basic per day and pays off only for geo-replication, private link or retention rules; untagged manifests occupy storage until they are deleted.
Purchase option: Dedicated profiles are covered by the savings plan for compute; Consumption usage, Container Instances and the registry have no commitment (commitment strategy).
Architecture: a Dedicated profile pays off only once the apps of an environment together keep an instance busy around the clock, or need networking features the Consumption plan lacks, because the management fee and the instances accrue whatever the load. Container Instances suit short, isolated tasks, not permanent services, where rounding to whole vCPUs and the absence of scaling cost more than a container app (architecture choices and cost). One registry per region instead of geo-replication saves the replication unit but bills data transfer on every pull across a region boundary (data transfer optimisation).
Where it goes wrong
- The minimum replica runs around the clock. A revision with
minReplicas1 produces vCPU and memory rows every second, with or without requests. Check the ratio ofIdle UsagetoActive Usageper app; an app that reports almost only idle usage probably does not need the minimum replica. - Idle that is not idle. A background process, a polling trigger or logging above 1,000 bytes per second keeps the replica active, and the active rate applies to vCPU and memory. Check apps whose
Idle Usagestays at zero despite a minimum replica. - The management fee without a Dedicated profile. Private endpoints and planned maintenance trigger
Dedicated Plan Managementeven in an environment without a Dedicated profile. The row points atmanagedEnvironments/. - Several environments. Every Container Apps environment with a Dedicated profile carries its own management fee; environments per team rather than per network multiply it.
- Old revisions in multiple-revision mode. A revision without traffic but with a minimum replica keeps running. Deactivate revisions that no longer hold a traffic share.
- Container Instances that never stop. A container group with the restart policy Always keeps billing every second, and rounding to whole vCPUs and tenths of a GB makes small groups dearer than their request suggests (idle and orphaned resources).
- The registry grows with every build. Every push adds layers, and untagged manifests stay until a retention rule or a purge removes them;
Data Storedgrows past the included amount, and with geo-replication per region. - Premium for one region. A Premium registry without geo-replication, private link or retention pays ten times Basic for limits it does not use.
Example
List prices from the Azure Retail Prices API for Germany West Central, read on 2026-10-21. In EUR: Dedicated profiles cost EUR 0.0502 per vCPU-hour and EUR 0.0044 per GiB-hour, the management fee EUR 0.088 per hour and environment; requests cost EUR 0.352 per million above the 2 million free ones. Container Instances cost EUR 0.041 per vCPU-hour and EUR 0.0045 per GB-hour. The registry costs EUR 0.1466 per day on Basic, EUR 0.5866 on Standard and EUR 1.4666 on Premium, storage above the included amount EUR 0.088 per GB and month, and every replica region a further EUR 1.4666 per day. The API returns the per-second Consumption meters in EUR to four decimals only, so they show as 0; the same query in USD gives USD 0.000024 per active vCPU-second, USD 0.000003 per idle vCPU-second and USD 0.000003 per GiB-second, active or idle. A minimum replica with 0.5 vCPU and 1 GiB therefore costs USD 0.000015 per second active and USD 0.0000045 per second idle, which is USD 0.054 and USD 0.0162 per hour before the free grant. The figures show that the idle vCPU rate is an eighth of the active one, that a Premium registry costs ten times a Basic one per day, and that a Dedicated environment costs more through its management fee alone than a small Consumption app at idle.
Sources
Read on 2026-10-21. Prices: Azure Retail Prices API, Container Apps in Germany West Central in EUR, Container Apps Standard in USD, Container Instances in EUR, Container Registry in EUR, Dedicated meters with savings plan prices, Azure Retail Prices API reference, Container Instances pricing page. Billing data: Cost details fields, Convert Cost Management data to FOCUS. Service: Billing in Azure Container Apps, Workload profiles, Container Registry service tiers, Container Registry geo-replication.