Azure Cost Management Exports for CSP Accounts
For Cloud Solution Provider (CSP) setups, use this decision rule:
- Use billing-scope CME first (always preferred)
- If billing-scope CME is unavailable, choose one of these options:
- Billing-account-scope CDR (preferred for MCA/EA billing accounts — single API call, no storage account)
- Subscription-scope CME (one export per subscription), or
- Subscription-scope CDR (one API call per subscription, no storage account)
Preferred Method: Billing-scope CME
When billing-scope CME is available, use the standard CME flow.
Follow:
If billing-scope CME is unavailable: remaining options
You have three supported options:
- Billing-account-scope CDR (preferred for MCA/EA billing accounts)
- Subscription-scope CME (one export per subscription)
- Subscription-scope CDR (fallback)
Option A: Subscription-scope CME
Use one export per subscription.
Follow:
Option B: Cost Details Report (CDR)
CDR (Cost Details Report) requests cost details directly from the Azure Cost Management API — no storage account or export schedule is required.
CDR has two scopes:
| Scope | When to use | API calls | Permissions |
|---|---|---|---|
| Billing-account-scope (preferred for MCA/EA) | You have billing account access and want a single call for all subscriptions | One call per month for the entire billing account | Billing account reader (MCA billing role) + Cost Management Reader (Azure RBAC) |
| Subscription-scope (fallback) | You only have subscription-level access, or legacy PAYG | One call per subscription per month | Reader (or Cost Management Reader) on each subscription |
Known limitations (both CDR scopes)
- CDR does not include reservation actual transaction line items.
- Management groups are not supported for CDR scope: Microsoft reference
- No storage account permissions are required for CDR.
Supported subscription notes
CDR is available for subscriptions billed under EA or MCA billing structures, including standard CSP subscriptions and modern MCA-based PAYG subscriptions. It is not available for legacy/classic PAYG, MSDN, or Visual Studio subscriptions.
What Cloud View - Data#3 does with CDR
For connected subscriptions, Cloud View - Data#3 requests and downloads cost details reports and retries report generation on transient failures.
Option B1: Billing-account-scope CDR (preferred for MCA/EA)
Use this when you have billing account access. Cloud View - Data#3 issues a single generateCostDetailsReport call scoped to the entire billing account, covering all subscriptions under it — no need for per-subscription calls.
Find your billing account ID
- Sign in to the Azure Portal
- Go to Cost Management + Billing
- Select your billing account
- Copy the billing account ID from the overview page
ℹ️ MCA billing account IDs use a colon-separated format, e.g.
3c9d3f87-9dbe-518b-b2a8-644a0b367539:294812fb-ed11-450a-9b63-f63963c12ce2_2019-05-31. EA billing account IDs are numeric (e.g.1234567).
Required Azure permissions for billing-account-scope CDR
Assign both of the following to the App Registration:
| Role | Type | Where to assign |
|---|---|---|
| Billing account reader | MCA billing role (not Azure RBAC) | Azure Portal → Cost Management + Billing → select billing account → Access Control (IAM) → Add role assignment |
| Cost Management Reader | Azure RBAC | At the tenant root or on a subscription within the billing account |
⚠️ The Billing account reader role is assigned on the billing account blade, not on a subscription. It is a billing-scoped role, separate from Azure RBAC roles like Reader.
If the
generateCostDetailsReportcall is rejected with 403 even after assigning Billing account reader, escalate to Billing account contributor — the POST action may require elevated billing permissions depending on the account configuration.
No storage account permissions are required for CDR.
Add billing-account-scope CDR in Cloud View - Data#3
- Go to Settings → Cloud Connections → Microsoft Azure
- Add or select an Azure Entra App credential
- Add a cloud account using Cost Details Report (CDR) account type
- Enter the Billing Account ID you copied from the Azure Portal
- Submit and validate
Option B2: Subscription-scope CDR (fallback)
Use this when you only have subscription-level access (no billing account access), or for legacy/classic PAYG subscriptions. Cloud View - Data#3 issues a separate generateCostDetailsReport call for each subscription.
Required Azure permissions for subscription-scope CDR
Assign Reader (or Cost Management Reader) to the App Registration on each subscription to import.
No storage account permissions are required for CDR.
Add subscription-scope CDR in Cloud View - Data#3
- Go to Settings → Cloud Connections → Microsoft Azure
- Add or select an Azure Entra App credential
- Add a cloud account using Cost Details Report (CDR) account type
- Leave the Billing Account ID field blank
- Submit and validate
Tips
When a new subscription is added, assign Reader access to the App Registration so it is included in CDR imports.