notebook № 135 plates · 13 min to read, longer to play ·
Anatomy of a cloud bill
On the rows behind the total
part 2 of 7 in What the cloud costs · by Slavik Shynkarenko
A cloud invoice is one number. Behind it sits a dataset of millions of rows, each one a tiny multiplication, in three different dialects depending on the provider. This notebook opens it up: what a line item is made of, why one line has four different costs, how big the data really is, and where the surprises hide.
plate I · the line item
Every line is a multiplication
Strip a cloud bill down and every line says the same thing: how much of something you used, times the price of one unit of it. Usage times rate. Everything else on the line exists to say what the something was, who used it and when.
What changes from service to service is the unit. Compute is billed in hours or seconds of a machine. Storage in gigabyte-months, a gigabyte kept for a whole month. Network in gigabytes moved. Serverless functions and API calls in requests, often in millions of them. A SKU (the provider’s code for one product at one price in one region) ties the unit to its price.
So the two levers of FinOps are already visible on a single row. Use less of the unit, and you’re doing usage optimisation. Pay less per unit, through commitments, spot or a negotiated rate, and you’re doing rate optimisation. Every saving ever made in the cloud moves one of those two numbers.
Pick “storage”, then move it to the archive tier. Which number on the row did that change?
plate II · cost types
One line, four costs
Here is where newcomers get lost. A single line of usage can carry four different costs, and all four are correct. The FOCUS standard (plate IV) names them. List cost is the public price. Contracted cost is the price after your negotiated discounts. Billed cost is what the invoice charges for that line, in that period. Effective cost is what the usage really cost once commitments and credits are spread over it.
The difference shows up the moment you buy a commitment upfront. In the month you buy it, the purchase is one big line and the usage it covers is billed at zero. Billed cost says the servers were free. Effective cost says what they actually cost, and that’s the number to show the team that runs them.
Lines also come in kinds. Most are usage, but a bill also carries purchases (commitments, marketplace software), credits (promotions, refunds), taxes and adjustments. Summing a column without filtering by kind is the classic way to count a commitment twice: once when it’s bought, once as it’s used.
Switch between “billed” and “effective” with the upfront commitment on. Then turn on the credit.
plate III · the dataset
Millions of rows
The invoice is a summary. The bill itself is a dataset that each provider exports for you: AWS writes the Cost and Usage Report into a storage bucket, Azure exports cost details, Google Cloud writes its billing export into BigQuery. At full detail there is a row for every resource, every usage type, every hour.
For a mid-sized company that’s tens of millions of rows a month. It’s why FinOps teams end up running a small data platform: the bill has to be ingested, cleaned, joined with tags and team ownership, and stored for comparisons over years.
Each level of detail answers a different question. The total tells finance what to pay. Per service and account, it tells you which teams to talk to. Per resource and hour, it tells an engineer which machine was idle at 3 a.m. FinOps calls getting this data in, reliably and on time, the data ingestion capability. Nearly everything else depends on it.
Zoom to “per resource”. How many rows did that add, and what question can you answer now?
plate IV · FOCUS
Three clouds, three dialects
Every provider invented its own bill. The same idea, say “the cost after discounts”, lives in a different column, with a different name and slightly different rules, in each export. A company on two clouds plus a few SaaS and AI vendors spends real engineering time just translating dialects before anyone can ask a question across them.
FOCUS, the FinOps Open Cost and Usage Specification, is the FinOps Foundation’s answer: one set of column names and definitions that every provider can publish. The big three clouds now offer FOCUS-formatted exports next to their native ones, and more SaaS and AI vendors are following.
The value isn’t the names, it’s the definitions. When every bill agrees on what EffectiveCost means, a cross-cloud report becomes a query, not a project.
Pick “cost after discounts”. How many different ideas of it do the native exports hold?
plate V · data transfer
The line nobody drew
Architecture diagrams show boxes. Bills charge for arrows. Data coming into the cloud is usually free. Data going out is billed by the gigabyte: out to the internet, across regions, and often between availability zones in the same region. Managed network services add their own toll; a NAT gateway charges for every gigabyte it processes, on top of the transfer itself.
None of these lines is big per gigabyte. They hide because they’re spread across many SKUs with names like DataTransfer-Regional-Bytes, and because nobody draws them in the design review. Then traffic grows and the network becomes one of the larger lines on the bill.
Reading the bill is how you find them: group by usage type, sort by cost, and look for transfer. The fixes are architectural, which is why FinOps belongs in design reviews, not just in month-end reports: keep chatty services in one zone, use private endpoints instead of NAT for storage traffic, and put a CDN in front of anything popular.
Turn on “app and database in different zones”, then route storage through the NAT gateway.
Questions people ask
- What is the difference between billed cost and effective cost?
Billed cost is what the invoice charges for a line in that period, so an upfront commitment shows its full price in the month you buy it and the usage it covers looks free. Effective cost spreads the upfront payment, discounts and credits over the usage they apply to, so each hour carries its true price. Use billed cost to reconcile invoices and effective cost to show teams what they spend.
- What is FOCUS in FinOps?
FOCUS, the FinOps Open Cost and Usage Specification, is an open standard from the FinOps Foundation for billing data. It defines common columns, such as BilledCost, EffectiveCost, ServiceName and ResourceId, so that exports from AWS, Azure, Google Cloud, SaaS and AI vendors can be joined and compared without translating each provider’s dialect by hand.
- Why is data transfer so expensive in the cloud?
Traffic into the cloud is usually free, but traffic out to the internet, between regions and often between availability zones is billed per gigabyte, and managed network services like NAT gateways add their own per-gigabyte processing fee. The charges are small per gigabyte, spread across many lines and easy to miss in design reviews, so they surprise teams once traffic grows.
Related material
elsewhere in the notebooks
further reading
- FOCUS specification FinOps Foundation The open billing-data standard of plate IV, with its column definitions and the providers that publish it.
- Data Ingestion FinOps Foundation The Framework capability for collecting and normalising billing data, the foundation of everything else.
- AWS Data Exports AWS documentation The Cost and Usage Report and its FOCUS export: what each row and column means.
- Understand cost details fields Microsoft Learn Azure’s cost details columns, actual and amortised.
- Export Cloud Billing data to BigQuery Google Cloud documentation Google Cloud’s standard and detailed billing exports.