Skip to main content

How to Export Billing Data from AWS, GCP and Azure

Multi-cloud cost work starts with getting line-item billing data out of each provider on a schedule. Each one has its own export and its own traps.

Every multi-cloud cost view, whether a spreadsheet, a warehouse or a tool, depends on detailed billing data leaving each provider on a schedule. Console dashboards are per-cloud and cannot be joined. The exports below are the raw material; set them up first, even if you later read them through something else.

AWS: a CUR 2.0 data export to S3

  1. Open the Billing and Cost Management console and choose Data Exports › Create export.
  2. Under Export type, choose Standard data export and give it a name (up to 128 characters: letters, digits, hyphen, underscore).
  3. Select the CUR 2.0 table. Tick Include resource IDs if you need per-resource cost. It creates a line item per resource and can make the export much larger.
  4. Tick Split cost allocation data only if you want ECS task and EKS pod level cost.
  5. Choose hourly, daily or monthly time granularity and an S3 bucket. The refresh cadence for billing exports is daily at most: the export is refreshed up to once per day.

For CUR 2.0, the Billing view setting decides whose costs the export covers. The result is a set of files in S3 that you query in place or load into a warehouse.

Google Cloud: billing export to BigQuery

Access needed: Billing Account Costs Manager or Billing Account Administrator on the billing account, and BigQuery User on the project that will hold the dataset.

  1. Create (or pick) a project with billing enabled and create a BigQuery dataset in it. Choose a multi-region location (US or EU). The location cannot be changed later and affects whether the previous month is added retroactively.
  2. Make sure Enable table expiration is cleared on the dataset, or exported tables will be deleted after the set number of days.
  3. In the console go to Billing › Billing export, pick the billing account, and on the BigQuery export tab click Enable for standard usage cost, detailed usage cost (resource level), or both.
  4. Select the project and dataset and save.

The export covers every project paid for by that billing account. Storing and querying it is billed as normal BigQuery usage.

Azure: a scheduled Cost Management export

Exports write files (CSV or Parquet in the portal) to a storage account container. At subscription scope:

Terminal window
az costmanagement export create \
--name daily-actual \
--scope "subscriptions/SUB_ID" \
--type ActualCost \
--timeframe MonthToDate \
--recurrence Daily \
--recurrence-period from="2026-10-01T00:00:00Z" to="2027-09-30T00:00:00Z" \
--schedule-status Active \
--storage-account-id "/subscriptions/SUB_ID/resourceGroups/finops/providers/Microsoft.Storage/storageAccounts/finopsexports" \
--storage-container exports \
--storage-directory actual

--type also accepts AmortizedCost, which exports amortized costs for purchases such as reservations and savings plans, and Usage. Create one of each if finance and engineering want different views. Verify with az costmanagement export show --name daily-actual --scope "subscriptions/SUB_ID", then look for files in the container after the first run.

Make the three comparable

The exports disagree on basics. Decide up front:

  • Cost measure. AWS unblended cost, GCP cost with or without credits, Azure actual versus amortized are not the same number. Pick one per report and label it. Amortized versus unblended cost explains the difference.
  • Currency. Each export is in its billing currency; convert with a dated rate, not today’s.
  • Owner. AWS tags, GCP labels and Azure tags use different character rules. A shared key such as team in lowercase works on all three.

Reading it through ZopNight instead

ZopNight connects to the same billing sources: AWS Cost Explorer or, opt-in, your CUR 2.0 export in S3 (which keeps resource-level history beyond Cost Explorer’s 14 days), Azure Cost Management using amortized cost, and GCP’s BigQuery export net of credits. Billing lines are matched to discovered resources, converted to USD with date-specific exchange rates, and spend that matches no resource (taxes, fees, data transfer) is kept as unattributed so the headline reconciles with the invoice. The comparison between providers is laid out in multi-cloud cost strategy.

Stop watching the waste.
Start cutting it.

See. Find. Fix. Automatic.

Connect your first cloud account in under 5 minutes. See your first remediation in under 7. No credit card required.

CDCR connect detect classify remediate
full audit every action traceable
read-only default access
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·