Reserved Instance Amortized Cost Shows $0 at Subscription Scope — CSP Explanation and Fix
Under CSP, Azure shows reservation usage with zero charges in both actual and amortized views at the subscription and resource group scopes you can access. Microsoft attributes reservation spend at billing scope — which for CSP customers lives in the partner's tenant. Without rebuilding amortization yourself, you can't see which resources consumed the benefit or how much reserved capacity is going unused. This is documented behavior, not a data problem in your tenant.
Why do reservation costs show $0 under CSP?
Reservation amortization — spreading a reservation purchase across the resources that consumed the benefit over the term — is computed at billing scope. Microsoft's Cost Management for partners documentation describes what CSP customers see at their own scopes: "Reservation usage appears with zero charges for actual and amortized costs," and "Amortized views and actual costs for reserved instances in the Azure RBAC scopes show zero charges." To see amortized reservation costs, the doc points to "the amortized cost view in billing scopes" — the partner's billing account, which customer tenants can't open.
This is worth being precise about, because it differs by agreement type: EA and MCA customers can see amortized costs at subscription scope, since their billing account lives in their own tenant. Microsoft's chargeback documentation frames amortized reporting as an EA/MCA billing-reader capability. Under CSP, the attribution never reaches your scope — so the portal isn't broken, it just has nothing to show you.
What can you do about it?
1. Rebuild amortization from the Reservations API (free, genuinely non-trivial)
The data needed to reconstruct amortization is readable with the Reservations Reader role: reservation orders (price, term, quantity) and daily utilization summaries. The rebuild then requires matching utilization to usage records — by SKU flexibility group, region, and reservation scope — and distributing each day's amortized cost across the matched resources, plus tracking capacity nobody consumed. Instance size flexibility is what makes this hard: a reservation for one VM size can be consumed by other sizes in the same flexibility group at ratio-adjusted rates. Budget for real engineering time if you take this on, and remember the portal's usage records at your scope still show the reservation-covered usage at $0, so you're joining two datasets with different keys.
2. Ask your CSP partner for amortized reporting (free, partner-dependent)
Your partner can see amortized views at their billing scope and may share reports. Coverage varies: partner reporting is typically periodic and invoice-oriented, not resource-level and daily, and it won't join against your own subscription-scope data or Power BI model. Worth asking; rarely sufficient as the only mechanism.
3. A maintained amortization rebuild
CSP Continuity implements option 1 as part of its daily collection: it pulls reservation orders and daily utilization via the Reservations API, matches them to usage records by SKU flexibility group, region, and scope, and distributes the daily amortized cost proportionally across matched resources. Unused capacity appears as synthetic records, so waste is visible instead of invisible. The amortized view sits alongside consolidated actual costs in the same SQL database, Parquet files, in-portal workbook, and query API — deployed in about 5 minutes from the Azure Marketplace, with read-only permissions granted by a 2-minute PowerShell script.
Frequently asked questions
Why does actual cost show $0 too, not just amortized cost?
How does CSP Continuity surface unused reservation capacity?
Does this apply to Savings Plans as well?
Is my bill wrong? Am I actually being charged $0?
The maintained alternative
CSP Continuity deploys from the Azure Marketplace in about 5 minutes, needs one 2-minute PowerShell script, and starts collecting consolidated cost data within hours — entirely inside your tenant.
Related guides
- Fix: "Management group does not have any valid subscriptions" in Azure Cost Management
Why this Cost Analysis error appears for CSP subscriptions, and every way to get a consolidated cost view back.
- Azure Cost Management API: Scope Not Supported Under CSP — Querying Across Subscriptions
Why cost API calls fail at billing and management group scope under CSP, with a per-subscription loop example and a unified alternative.
- Moving from EA (or MCA) to CSP: What Breaks in Cost Reporting — A Pre-Migration Checklist
A pre-migration checklist covering the five cost-reporting changes CSP introduces and what to do about each before the transfer date.
Last updated: July 15, 2026. CSP Continuity is designed to work across a wide range of Azure environments. Results may vary based on tenant configuration, Microsoft API availability, and CSP partner setup. See our Terms of Use for details. Microsoft, Azure, and Power BI are trademarks of Microsoft Corporation. This page describes documented behavior of Microsoft services and links to official Microsoft documentation.