Cloud Bill Diff

Supported billing export formats

Where to get each export, and which columns the analysis actually uses. Format is detected from the header row, never from the filename — people rename these files, and the columns are the only reliable signal.

FOCUS 1.x

recommended

AWS, Google Cloud, Azure, and OCI can all emit FOCUS. In AWS it is an export type in Data Exports; in Google Cloud it is a BigQuery billing export view; in Azure it is a Cost Management export.

BilledCost
What was invoiced.
EffectiveCost
Amortized — the one to analyse.
PricingQuantity / PricingUnit
The quantity and unit the rate applies to.
ServiceName / SkuId
What was bought.
ChargeCategory
Usage, Purchase, Tax, Credit, Adjustment.
ChargePeriodStart
When. Drives the day-count normalisation.
Tags
Allocation metadata, as a map.

Bring this one if you can. It needs no provider-specific interpretation, which means fewer places for a mapping to be wrong, and it works identically across clouds.

AWS CUR 2.0 (Data Exports)

Billing and Cost Management → Data Exports → Create export → CUR 2.0. Choose CSV (or gzipped CSV) and include resource IDs if you want resource-level drill-down.

line_item_unblended_cost
What was charged at the time.
savings_plan_savings_plan_effective_cost
Amortized Savings Plan cost, preferred when present.
reservation_effective_cost
Amortized RI cost.
line_item_usage_amount / pricing_unit
Quantity and unit.
product_servicecode
The service.
line_item_usage_type / line_item_operation
Together, the SKU.
line_item_line_item_type
Usage, Fee, Tax, Credit, Refund, Discount.
resource_tags
Tags, as a nested map.

CUR 2.0 has a fixed column set, which is why it is easier to work with than the legacy format. If your export is Parquet, re-export as CSV — Parquet support is not in this version.

AWS CUR (legacy)

The older Cost and Usage Report, still widely deployed. Columns use slash-separated names and the set changes month to month depending on what you used.

lineItem/UnblendedCost
What was charged.
lineItem/UsageAmount
Quantity.
lineItem/ProductCode
The service.
lineItem/UsageType
The SKU.
resourceTags/user:Key
One flattened column per tag key.

The varying column set is the reason a diff across months can find tag columns in one file and not the other. The mapping panel in the tool shows exactly what was matched in each file.

GCP billing export

Billing → Billing export → BigQuery export. Use the detailed export if you want resource-level data. Then export the table to CSV from BigQuery.

cost
Cost at the applied price.
cost_at_effective_price_default
Amortized, preferred when present.
usage.amount_in_pricing_units / usage.pricing_unit
Quantity and unit.
service.description / sku.description
The service and SKU.
project.id
The account dimension.
labels
Resource labels, as a repeated key/value struct.
credits
Committed-use and promotional credits, as negative amounts.

When you export from BigQuery to CSV, the nested columns flatten to dotted names such as service.description. The tool expects exactly that.

Not supported yet: Parquet (re-export as CSV), and Azure’s native Cost Management schema (export as FOCUS instead, which Azure supports directly).

Skip the export entirely.

Finitizer connects read-only and keyless to AWS and Google Cloud, normalises both into one model, and keeps the comparison current without anyone downloading a file.