SaveMyCert
Log in
5 of 5 free questions left today·for unlimited practice
Setting up a cloud solution environment

Google Cloud Billing Accounts, Budgets, Alerts, and BigQuery Export

11 min readACE · Setting up a cloud solution environmentUpdated

A Cloud Billing account is the payment container that funds Google Cloud projects: every project must be linked to exactly one billing account before it can consume paid services, while one billing account can pay for many projects. The ACE exam tests billing configuration because it is where governance and cost control start — who may link projects to company money, how spending is watched, and where cost data lands for analysis. This lesson covers creating self-serve and invoiced billing accounts, linking and unlinking projects, the billing IAM roles that enforce separation of duties (Billing Account Administrator, Billing Account User, Project Billing Manager), budgets and alerts — which notify but never stop spending — and exporting billing data to BigQuery for real cost analysis. Expect questions built around exactly those distinctions: budgets are not caps, exports are not retroactive, and linking a project takes two roles working together.

What you’ll learn
  • Describe the relationship between Cloud Billing accounts, payments profiles, and projects
  • Create billing accounts and link or unlink projects using the Console and gcloud
  • Choose the correct billing IAM role for a task and combine roles for least-privilege project linking
  • Configure budgets with threshold rules and route alerts to email and Pub/Sub
  • Set up Cloud Billing export to BigQuery and explain what each export type contains
  • Anticipate what happens to resources when billing is disabled on a project

How billing accounts and projects relate

A Cloud Billing account pays for projects: the relationship is one billing account to many projects, and each project links to at most one billing account at a time. The billing account itself holds no resources — it is a payment configuration connected to a Google payments profile, which carries the actual payment instrument, tax and invoicing details. Billing accounts are also resources in the resource hierarchy sense: they belong to an organization (or stand alone for individual accounts) and carry their own IAM policy, separate from any project's policy.

Billing accounts come in two types:

  • Self-serve (online) accounts — costs are charged automatically to a credit or debit card or bank account. Anyone can create one; this is what you get by default.
  • Invoiced (offline) accounts — Google issues monthly invoices paid by wire transfer or check. Available to eligible businesses that apply and are approved, typical for enterprises with procurement processes.

A project with no active billing account can exist and hold configuration, but any service that costs money stops working: VMs will not start, storage writes fail, APIs that require billing refuse requests. When billing is disabled on a running project, paid resources shut down or degrade and some data can eventually be deleted — so "unlink the billing account" is the drastic, effective answer to "stop all spend now," with real destruction as its cost. The exam likes contrasting that behavior with budgets, which never stop anything.

Creating billing accounts

You create a self-serve billing account from the Console's Billing section: choose Create account, name it, pick the country and currency (fixed at creation, because they come from the payments profile), and attach a payment method. The creator automatically becomes Billing Account Administrator on it. An organization can hold multiple billing accounts, and the common reasons to create more than one are separate payment sources, separate currencies or legal entities, and hard separation of cost centers — for example, one billing account per subsidiary so each receives its own invoice and reports.

Google's guidance leans the other way for everyday structure: prefer fewer billing accounts with many projects, and slice costs by project and label in reports, rather than multiplying billing accounts per team. Creating a billing account inside an organization requires the Billing Account Creator role (roles/billing.creator), typically granted at the organization level and deliberately kept scarce so employees cannot attach company projects to personal cards.

Invoiced accounts are not self-service — the business applies to Google, and once approved the account is provisioned with invoice terms. From the engineer's perspective they behave identically for linking and budgets; only the payment mechanics differ.

Useful commands: gcloud billing accounts list shows the accounts you can see, with their IDs in XXXXXX-XXXXXX-XXXXXX form and an open flag telling you whether the account is active. gcloud billing accounts describe ACCOUNT_ID shows details for one. Closed billing accounts stop paying for their projects, so a project on a closed account is effectively unbilled — same consequences as unlinking.

Linking projects to a billing account

Linking is a single operation with a two-sided permission requirement — the source of the exam's favorite billing question. In the Console: Billing, then Account management, then link a project; or from the project side, Billing, then Link a billing account. On the command line: gcloud billing projects link my-app-prod --billing-account=0X0X0X-0X0X0X-0X0X0X. Unlink by disabling billing: gcloud billing projects unlink my-app-prod.

To link project P to billing account B you need both sides:

  • Permission to spend from B — the billing.resourceAssociations.create permission, carried by Billing Account User (or Administrator) on the billing account.
  • Permission to change P's billing — carried by Project Billing Manager on the project (Project Owner also includes it).

Neither role alone is enough, and that is by design: a Project Owner cannot attach their project to a billing account they have no rights on, and a Billing Account User cannot commandeer arbitrary projects onto the company account. The standard enterprise pattern grants Billing Account User to a small group (or to automation that creates projects) and Project Billing Manager to the teams that own projects.

A concrete scenario the exam recycles: a developer creates a sandbox project and complains they cannot enable Compute Engine. The project has no billing link, and the developer lacks Billing Account User on the company account. The least-privilege fix is granting them Billing Account User on that one billing account — not Billing Account Administrator, and not Owner on anything.

Billing IAM roles: who can do what

Billing uses its own set of IAM roles, granted either on a billing account or on a project, and the exam expects you to match role to task precisely.

RoleGranted onWhat it allows
Billing Account AdministratorBilling accountFull control: manage payment settings, link/unlink any project, set budgets, manage billing IAM, view spend, configure exports
Billing Account UserBilling accountLink projects to this billing account — nothing else; no viewing of spend, no settings
Billing Account ViewerBilling accountRead-only view of spend, transactions, and billing settings — typical for finance analysts
Project Billing ManagerProjectAttach/detach the project's billing account without any other project access
Billing Account CreatorOrganizationCreate new self-serve billing accounts in the organization

Two separation-of-duties patterns are worth memorizing. Finance sees money, not infrastructure: give the finance team Billing Account Viewer (or Administrator if they also manage payment settings) and no project roles at all — they can audit every charge without touching a single VM. Engineers see infrastructure, not money: project Editors and Owners can build resources that generate cost, but without a billing-account role they cannot see invoices, change payment methods, or move projects between accounts.

When a question asks for "the minimal role so X can do Y," strip the task to its verb: link a project — Billing Account User plus Project Billing Manager; view charges — Billing Account Viewer; change the payment card — Billing Account Administrator; create a new billing account — Billing Account Creator.

Budgets and alerts: monitoring spend, not capping it

A budget watches spending against a target and sends alerts — it never stops spending. No matter how many thresholds fire, resources keep running and charges keep accruing. Any answer option implying a budget "prevents" overspend is wrong; that single fact decides several exam questions.

You create budgets in the Console under Billing, then Budgets and alerts. Each budget has three parts:

  • Scope — the whole billing account, or narrowed to specific projects, services, and labels. One billing account can carry many budgets with different scopes.
  • Amount — a fixed figure, or last period's spend as a dynamic target.
  • Threshold rules — percentages of the amount (defaults are 50%, 90%, 100%) that trigger notifications, each evaluated against actual spend or forecasted spend. Forecasted thresholds warn that you are trending toward the limit before money is gone.

By default, threshold emails go to Billing Account Administrators and Billing Account Users on the account — not to Project Owners, a detail the exam checks. To notify other people, link the budget to Cloud Monitoring notification channels (email addresses, chat integrations). For automation, enable programmatic notifications: the budget publishes messages to a Pub/Sub topic with current spend and threshold data, and your subscriber acts on them.

That Pub/Sub hook is also the official answer to "I actually need a hard cap": a common pattern subscribes a Cloud Run function to the budget topic and has it disable billing on the project when spend passes the line — accepting that disabling billing kills the workload. Automated capping is you-built, deliberate, and destructive; it is not a checkbox.

Exporting billing data to BigQuery

Cloud Billing export to BigQuery is the mechanism for real cost analysis: it writes your billing data into BigQuery tables automatically throughout the day, where you can query it with SQL, join it with other data, and feed dashboards in Looker Studio. The Console's built-in billing reports answer quick questions; BigQuery export answers hard ones — cost per label across projects, month-over-month deltas per SKU, chargeback reports per team.

You configure export per billing account under Billing, then Billing export, choosing a target project and BigQuery dataset (create the dataset first; its location matters because it cannot be trivially moved later). There are three export types:

  • Standard usage cost — one row per cost line item: service, SKU, project, labels, usage amount, cost, credits. The workhorse for most analysis.
  • Detailed usage cost — everything in standard plus resource-level granularity, so you can attribute cost to an individual VM or disk rather than just a SKU within a project.
  • Pricing — your account's price list, useful for estimating and for joining prices against usage.

Two facts carry exam weight. First, export is not retroactive: data flows from roughly when you enable it, so enabling export the day a cost mystery appears gives you nothing about last month — set it up on day one. Second, export is configured per billing account and requires Billing Account Administrator on the account plus BigQuery permissions in the target project. There is also a legacy file export to Cloud Storage, but BigQuery export is the supported, analysis-ready path and the one the exam wants.

Analyzing costs and a setup walkthrough

Cost analysis starts in the built-in Reports page of the billing account: filter and group spend by project, service, SKU, region, or label, and compare time ranges. Labels are the allocation mechanism — key-value pairs like team=checkout or env=prod applied to resources flow through to billing line items, in both reports and the BigQuery export. A labeling convention established early is what makes "which team spent this?" answerable at all; retrofitting labels does not relabel past spend.

Pulling the whole topic together, here is the setup a new organization performs once:

  1. Create (or get approved for) the billing account; confirm the payments profile details.
  2. Grant billing IAM: Billing Account Administrator to the cloud platform team, Billing Account Viewer to finance, Billing Account User to the project-creation automation, Project Billing Manager to project owners' groups.
  3. Link projects: gcloud billing projects link PROJECT_ID --billing-account=ACCOUNT_ID for each.
  4. Enable BigQuery export (standard and detailed usage cost) into a dedicated billing-admin project — immediately, because it is not retroactive.
  5. Create budgets: one account-wide budget with 50/90/100% thresholds on actual spend plus a forecasted 100% rule, and tighter per-project budgets for sandboxes, with Pub/Sub programmatic notifications for automation.
  6. Define the label taxonomy and enforce it, so reports and exports can be grouped meaningfully.

Gotchas to retain: budgets alert, never cap; alert emails go to billing-account roles by default, not Project Owners; a project needs a live billing link before paid APIs work; and disabling billing is the blunt instrument that stops spend by breaking the workload.

Tip. The ACE exam tests billing with least-privilege role matching and behavior distinctions: 'which role(s) are needed to link a project' (Billing Account User plus Project Billing Manager), 'finance needs to view costs' (Billing Account Viewer), and 'be notified before the budget is exceeded' (forecasted-spend threshold rules). Trigger phrases like 'prevent spending beyond' or 'hard cap' signal that budgets alone are the wrong answer — look for Pub/Sub notifications driving billing disablement. Questions about historical cost analysis check whether you know BigQuery export must have been enabled beforehand.

Key takeaways
  • One billing account funds many projects; each project links to exactly one billing account
  • Linking a project requires Billing Account User on the account plus Project Billing Manager (or Owner) on the project — neither alone suffices
  • Billing Account Viewer is the read-only role for finance; Billing Account Administrator manages payment settings and billing IAM
  • Budgets and alerts notify — they never stop spending; a hard cap must be built (Pub/Sub budget notifications driving billing disablement)
  • Budget alert emails go to Billing Account Administrators and Users by default, not Project Owners
  • BigQuery billing export is per billing account, not retroactive — enable it on day one
  • Detailed usage cost export adds resource-level cost attribution; standard export stops at SKU/project granularity
  • Disabling billing on a project stops paid services and can destroy resources — it is the drastic way to stop spend

Frequently asked questions

How do I link a project to a billing account in Google Cloud?

In the Console, open Billing for the project and choose Link a billing account, or run gcloud billing projects link PROJECT_ID --billing-account=ACCOUNT_ID. You need two permissions: Billing Account User (or Administrator) on the billing account, and Project Billing Manager or Owner on the project. This two-sided requirement stops anyone from attaching projects to company funds unilaterally.

Do Google Cloud budgets stop spending when the limit is reached?

No. A budget only sends notifications when actual or forecasted spend crosses its threshold rules — resources keep running and charges keep accruing past 100%. If you need spending actually stopped, you must build it: enable the budget's Pub/Sub programmatic notifications and have a subscriber (for example a Cloud Run function) disable billing on the project, accepting that this shuts down its paid services.

Who receives Google Cloud budget alert emails by default?

By default, budget threshold emails go to the Billing Account Administrators and Billing Account Users on the billing account the budget belongs to. Project Owners and Editors do not receive them unless you add them another way — link the budget to Cloud Monitoring notification channels that include their addresses, or route programmatic notifications through Pub/Sub to a system that notifies them.

What is the difference between Billing Account Administrator and Billing Account User?

Billing Account Administrator has full control of the billing account: payment settings, budgets, exports, billing IAM, viewing all spend, and linking or unlinking any project. Billing Account User can do exactly one thing — link projects to that billing account — with no ability to view charges or change settings. Grant User to people or automation that create projects; reserve Administrator for the small team that manages billing itself.

How do I export Google Cloud billing data to BigQuery?

In the Console, open the billing account, go to Billing export, and enable the export types you need — standard usage cost, detailed usage cost (adds resource-level rows), and pricing — pointing each at a BigQuery dataset you created in a chosen project. You need Billing Account Administrator on the account and BigQuery permissions in the target project. Data starts flowing from enablement onward; the export is not retroactive.

What happens if I disable billing on a Google Cloud project?

Paid services in the project stop working: VMs stop, APIs that require billing reject requests, and resources that cost money shut down or degrade; some data may eventually be deleted if billing is not restored. The project itself and its configuration remain. Disabling billing is therefore an effective emergency stop for runaway spend, but a destructive one — it is the trade-off behind automated cost-capping patterns.

Test yourself on this topic
Practice questions with full explanations.
Practice now

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.