Use the Microsoft Graph API to export partner billing data

Note

This API is available for Cloud Solution Provider (CSP) partners only to access their billed and unbilled reconciliation data for a tenant. To learn more about the CSP program, see Microsoft Cloud Solution Provider.

As part of the Microsoft Partner Center ecosystem, Microsoft direct partners in the Cloud Solution Provider programs can request to export their billed and unbilled data to Azure Blob Storage asynchronously. This removes the need to maintain an open connection for hours and loop through millions of transactions iteratively. The asynchronous API provides a way to quickly access billing and reconciliation data in manageable chunks.

The partner billing API is defined in the OData subnamespace microsoft.graph.partners.billing.

Note

Daily-rated usage normally takes 24 hours to appear in the Microsoft Partner Center or to be available through the API.

Authorization

To export reconciliation data, the calling principal must be in the partner tenant and be granted the appropriate partner billing privilege permissions. The partner billing API supports the following partner permissions.

Permission type Least privileged permission Higher privileged permissions
Delegated (work or school account) PartnerBilling.Read.All Not supported.
Delegated (personal Microsoft account) Not supported. Not supported.
Application PartnerBilling.Read.All Not supported.

Zero Trust

This feature helps organizations to align their tenants with the three guiding principles of a Zero Trust architecture:

  • Verify explicitly
  • Use least privilege
  • Assume breach

To find out more about Zero Trust and other ways to align your organization to the guiding principles, see the Zero Trust Guidance Center.

Common use cases

The partner billing API provides methods and actions that allow Microsoft direct partners to export their high-volume billed reconciliation data and billed and unbilled Azure usage data.

Billed usage data

Use case API
Create a new export operation to export billed usage data billedUsage: export
Poll for operation status update Get operation

Unbilled usage data

Use case API
Create a new export operation to export unbilled usage data unbilledUsage: export
Poll for operation status update Get operation

Billed invoice reconciliation data

Use case API
Create a new export operation to export billed invoice reconciliation data billedReconciliation: export
Poll for operation status update Get operation

Asynchronous data retrieval

The download of usage or reconciliation data is a long-running operation that consists of the following operations.

Usage line-item endpoint

Use the billedUsage: export or unbilledUsage: export API to access billed or unbilled consumption line items. The API returns a 202 Accepted response code and a Location header that contains the URL to the long-running operation. You can check the status of the long-running operation by making a GET request at regular intervals until you receive a success status with a manifest URL.

Non-usage line-item endpoint

Use the billedReconciliation: export API to access billed invoice reconciliation line items. The API returns a 202 Accepted response code and a Location header that contains the URL to the long-running operation. You can check the status of the long-running operation by making a GET request at regular intervals until you receive a success status with a manifest URL.

Operation status endpoint

Until you receive the success status, keep polling the Get operation API at regular intervals. If the requested data is unavailable, the API response includes a Retry-After header that indicates how long you should wait before sending another request. When the operation has completed successfully, the response also provides a manifest with details of the generated files. The manifest provides a storage folder from which actual billing data can be downloaded. The response splits or partitions the files to optimize throughput and I/O parallelism.