← All posts
FinOps·5 min read

Why your cloud bill is mostly data transfer (and you didn't notice)

If you've ever opened a cloud invoice and felt the numbers don't add up to what you think you're running, you're not wrong. Compute and storage are the visible costs — they map cleanly to instances and disks you can see in the console. Data transfer doesn't. It hides behind half a dozen SKU prefixes that look like license plates.

The line items that quietly eat your budget

On AWS, the four line items that most often dominate a bill — and the ones we see misread or skipped entirely on every first pass — are:

The pattern: anything that moves bytes is metered, and the meter is usually invisible on the architecture diagram you drew in a Notion doc.

Why dashboards don't catch it

Generic cost tools group line items by service. So NAT Gateway processing shows up under "EC2 – Other," CloudWatch Logs ingestion shows up under "CloudWatch," and cross-AZ traffic shows up under "Data Transfer." The bill is mostly data movement, but the chart says it's mostly compute. The category labels are doing the lying.

The three cuts that almost always work

How CloudBillDecoder reads this

When we read your billing export, we don't just sort by amount. We tag each row by what it physically is — is this byte-movement, is this hours of compute, is this storage at rest — and then we tell you, in English, which of the three patterns above your bill is matching. Your one-paragraph description of the app does most of the work: a "B2B SaaS with a nightly batch" has different fingerprints from "consumer mobile API on the public internet."


CloudBillDecoder is in private beta. Request access →