AWS and GCP cost

One place for your AWS and GCP spend

GetFinOps reads AWS cost from Cost Explorer and GCP cost from your BigQuery billing export, splits it by account, flags daily spikes and forecasts AWS spend.

It doesn’t cover Azure or any cloud other than AWS and GCP.

The problem

AWS and GCP report cost in separate consoles, with different models and different ways of handling tax and credits. Combining them by hand means a spreadsheet that is out of date the day you finish it.

How it works

  1. Connect

    Connect AWS accounts through a cross-account role or an in-account collector, and GCP projects with a service account key and your billing export dataset.

  2. Collect

    Each scan reads month-to-date cost for every connected account and stores it per account, plus a combined row for the whole workspace.

  3. Read

    Open the cost report for one account, or the by-account charts for all of them, with spikes marked and, on AWS, a forecast.

  • AWS + GCP

    AWS cost from Cost Explorer, GCP cost from your BigQuery billing export

  • 7-day avg

    a day is flagged when its cost sits more than two standard deviations above it

  • 80% interval

    on Cost Explorer’s forecast, for accounts on the cross-account role

  • GCP credits

    not subtracted: GCP figures sum the billing export’s cost column

Capabilities

AWS and GCP spend in one workspace, split by account, with spike flags and AWS forecasts.

  1. AWS and GCP in one workspace

    AWS cost comes from Cost Explorer, grouped by service, region and day. GCP cost comes from your BigQuery billing export. Each scan stores both per account, so one set of pages covers every cloud you connect.

  2. Cost by account

    See month-to-date spend split across your accounts, and a daily chart that stacks each account’s spend and switches between dollars and share of total. Both appear once two or more accounts have cost data.

  3. Daily spike flags on both clouds

    A day is flagged when its cost sits more than two standard deviations above its 7-day moving average. Days below the average don’t widen that spread when enough days sit above it, so a large credit can’t hide a spike.

  4. AWS metrics and native forecasts

    Accounts on the cross-account role get Cost Explorer’s forecast with an 80% interval, and can switch between unblended and amortized cost and daily or monthly points. Tax, credits, refunds and bundled discounts are left out of their cost by default.

In depth

Where the numbers come from

For AWS, GetFinOps calls Cost Explorer in each account through the cross-account role you deploy, or reads the cost snapshot that the in-account collector writes to your bucket. A scan reads month-to-date cost, grouped by service and region for each day.

For GCP, it queries the Cloud Billing export in the BigQuery dataset you name at setup, with that project’s service account key. It checks whether you export standard or detailed usage cost and reads one table, never both, so no cost is counted twice.

The cost report

The cost report shows the account selected in the header, or your primary account when none is selected. For GCP projects and AWS accounts on the cross-account role, it queries the cloud each time you open it. On those AWS accounts you get:

  • Unblended or amortized cost, in daily or monthly points.
  • A total, or a breakdown by service or by region, with a filter for the services you care about.
  • Preset windows, month to date, or a custom range of up to 366 days.
  • Tax, credit, refund and bundled discount rows excluded unless you tick “Incl. tax”.
  • Cost Explorer’s forecast with an 80% prediction interval.

GCP in the cost report

GCP accounts show daily cost by service from the billing export. The metric, granularity and tax toggles don’t apply to them, and a custom date range is read as a window of the same length ending today.

How spikes are flagged

On daily views, GetFinOps works out a 7-day moving average, measures how far each day sits above it, and flags any day more than two standard deviations above the average. It needs at least seven days with an average before it flags anything.

Days below the average don’t widen the spread when enough days sit above it, so one large credit or refund can’t mask a real spike. Monthly points use a three-point average and are not flagged. The same check runs on AWS and GCP accounts.

Cost by account

Each scan stores cost for each connected account, plus a combined row for the whole workspace. The Cost by account card splits month-to-date spend across accounts. The Cost trend by account chart stacks each account’s daily spend and switches between dollars and share of the total.

Both charts appear once two or more accounts have cost data. The same per-account figures are available to AI assistants through the MCP server’s get_cost_by_account tool, and the cost report through get_cost_trend.

What you need to set up

On AWS, deploy the cross-account role template or the in-account collector stack. The role’s read permissions include Cost Explorer cost and forecast access. Write access is a separate option that only remediation needs.

On GCP, turn on Cloud Billing export to BigQuery, create a service account with BigQuery Data Viewer on the billing export dataset and BigQuery Job User on the project, and enter the project ID, the billing export dataset ID and the JSON key when you connect.

What it does not do

  • It doesn’t cover Azure or any cloud other than AWS and GCP.
  • It doesn’t forecast GCP spend, or spend for AWS accounts that use the in-account collector.
  • It doesn’t query AWS accounts on the in-account collector when you open the cost report. It shows the primary account’s latest month-to-date snapshot, where the metric, granularity, tax and date-range controls don’t apply, and nothing for other accounts on that collector.
  • It doesn’t subtract GCP credits: GCP figures sum the billing export’s cost column.
  • Spike flags mark days on the chart and count them. They don’t create findings or send alerts.
  • The cost report shows one account at a time, not a sum of all accounts. Use the by-account charts for the whole workspace.
  • The by-account charts update when a scan runs, not in real time.

FAQ

Questions

What do I need to set up for GCP?

Turn on Cloud Billing export to BigQuery, create a service account with BigQuery Data Viewer on the billing export dataset and BigQuery Job User on the project, and enter the project ID, the billing export dataset ID and the JSON key. Standard and detailed exports both work.

Does the cost include tax and credits?

Not on AWS by default. Tax, credit, refund and bundled discount rows are excluded; tick “Incl. tax” in the cost report to add them. GCP figures sum the billing export’s cost column, so GCP credits are not subtracted.

Unblended or amortized?

On AWS accounts on the cross-account role, either. Switch the metric in the cost report, and the forecast follows the same choice. The metric switch doesn’t apply to GCP accounts or to AWS accounts on the in-account collector.

Can I look at one account at a time?

Yes. Pick an account in the header. For GCP projects and AWS accounts on the cross-account role, the cost report queries that account with its own credentials. With nothing selected it shows your primary account. The by-account charts always show every account with cost data.

How fresh is the data?

For GCP projects and AWS accounts on the cross-account role, the cost report queries BigQuery or Cost Explorer when you open it. The by-account charts use the cost stored by the latest scan, so they change when a scan runs.

Try free — no credit card

Create a workspace and connect an AWS or GCP account, or book a demo first.