TL
The short answer

A GCP bill rolls up through four levels. The billing account is the top, the contract boundary that pays for one or more projects. Each project groups the resources for an application or team. Within a project, spend splits by service, such as Compute Engine, Cloud Storage, or BigQuery. Within a service, every charge resolves to a SKU, the smallest priced unit that names a specific resource, region, and usage measure such as a vCPU hour or a gigabyte scanned. To read a bill well, start at the project that grew, drop into the service that drove it, and stop at the SKU that explains it. Layered on top are credit lines: sustained use discounts that apply automatically, committed use discount savings, promotional credits, and free tier allowances, each shown as a negative line so the net cost is gross usage minus credits. The biggest surprises never sit in one large line; they accumulate across egress, idle disks, snapshots, and query scans that only a SKU level read reveals.

Here is how to read each level, and how to turn a confusing invoice into a list of actions.

What are the levels of a GCP bill?

The fastest way to lose an afternoon is to read a GCP bill as one number. Read it as a hierarchy instead. The billing account answers who pays. Projects answer which application or team spent. Services answer what kind of resource. SKUs answer exactly which resource and how it was metered. Two charges in the same service can sit on very different SKUs, for example a Compute Engine vCPU SKU versus a network egress SKU, so the SKU is the only level where a cost is unambiguous.

LevelWhat it answersWhere to read it
Billing accountWho pays, across which projectsCloud Billing reports, top of the account
ProjectWhich application or team spentGroup the report by project
ServiceWhat kind of resource was usedGroup by service within a project
SKUThe exact resource, region, and unitGroup by SKU, or query the BigQuery billing export

The Cloud Billing reports console is enough for a monthly read. For anything forensic, enable the detailed billing export to BigQuery and query the data directly. That export is the source of truth for GCP cost the way the Cost and Usage Report is for AWS: it carries every SKU, label, and credit at daily granularity, so you can answer questions the console rounds away.

How do credits and discounts net out?

GCP shows discounts as credits, not as a lower unit price, so a SKU often appears at full rate with a negative credit line beside it. Sustained use discounts apply automatically to eligible Compute Engine usage that runs for a large share of the month, with no commitment, and reduce the effective rate progressively. Committed use discounts apply because you committed, and their savings show as a separate credit. Promotional credits and free tier allowances each get their own line too. The number that matters for forecasting is the net, gross usage minus every credit, because credits expire and commitments renew. Reading only the net rate hides how much of your discount is durable and how much is a one off promotion that will roll off.

Where does GCP spend actually hide?

Rarely in the line you expect. Four categories hide in plain sight because each is spread across many small SKUs. Network egress and premium network tier traffic accumulate per gigabyte and per route, never as one headline charge. Idle persistent disks and orphaned snapshots keep billing after the instance they served is gone. BigQuery on demand queries bill per gigabyte scanned, so an unfiltered query against a large table is expensive even though it ran for seconds. And untracked projects, often left from a proof of concept, run resources nobody owns. None of these survive a SKU level read, which is exactly why the read matters.

A worked example

Worked example

A European SaaS company saw its GCP bill climb and assumed Compute Engine was the cause. Reading down the levels told a different story. Grouping by project surfaced a forgotten analytics project; grouping that project by service pointed at BigQuery and networking rather than compute; grouping by SKU showed on demand query scans against an unpartitioned table plus cross region egress feeding a downstream job. None of it was a big single line, so it had survived months of glances. Partitioning the table, moving the job into region, and deleting orphaned snapshots cut that project sharply, and the read paid for itself in an afternoon. Figures are verified against billing data and anonymised.

Frequently asked questions

What are the levels of a GCP bill?
Billing account, then project, then service, then SKU. The SKU is the smallest priced unit and the only level where a charge is unambiguous, so read down until a SKU explains the cost.
Where does GCP spend usually hide?
In network egress and premium tier traffic, idle persistent disks and snapshots, BigQuery on demand query scans, and untracked projects. Each is spread across small SKUs, so it survives a top level glance.
How do credits and discounts show on a GCP bill?
As negative credit lines. Sustained use discounts apply automatically, committed use discount savings, promotional credits, and free tier allowances each appear separately, so the net cost is gross usage minus those credits.

Turn the read into savings

We read GCP bills SKU by SKU for enterprises and turn the findings into a prioritised action list, as an independent advisory that takes zero provider commissions and answers only to you. Our guarantee: we reduce your cloud spend or we reimburse our service fee, on a Fixed Fee or a no risk Gainshare basis. Download the GCP committed use discount kit, read the deeper GCP cost optimization guide, and compare approaches in the cross cloud cost optimization guide.

Independent · buyer-side

Put a defensible number on your cloud spend.

No provider in the room, no published price list. Tell us your footprint and we will scope the savings against your billing data — we reduce your cloud spend or we reimburse our service fee.

Buyer-side intelligence, monthly.

The Cloud Spend Navigator: what changed in cloud pricing, commitments, and FinOps — no vendor spin.