Google Cloud spending limits

Can I cap Google Cloud spend, and how do spend caps work?

Yes, you can now cap Google Cloud spend, but only on 4 specific services and only within a single project. Spend caps on Google Cloud Budgets became generally available on October 31, 2026, moving Google Cloud past the days when budgets could only send email notifications while runaway bills kept climbing.

When your gross estimated usage hits 100% of the budget amount, Google Cloud enforces the spend cap by automatically pausing new usage for that specific service for the rest of the monthly period. It doesn't delete your infrastructure, but it doesn't cover every service either, and ongoing resources like persistent disks or provisioned throughput will keep charging you.

How Google Cloud spend caps actually work

Standard Google Cloud budgets are alerts-only: they send an email when your spending passes a target, but they leave everything running. A spend cap budget changes that by attaching automated enforcement to your spending threshold.

Spend cap budgets send alert emails when your spend exceeds 50%, 80%, and 100% of your budget amount. These emails go out automatically to all billing account administrators and project owners. You can't alter those thresholds, and you can't pick custom recipients in the console.

The cap triggers when gross, estimated usage costs exceed 100% of the budget amount. Once that happens:

  • Google automatically pauses usage for the specified service for the remainder of the budget period.
  • Banners appear on the Budgets page and the Billing Overview page in the console.
  • In-flight requests for the service process to completion and accrue charges as applicable.
  • All new usage stops, covering both on-demand pay-as-you-go traffic and usage covered by Committed use discounts (CUDs).
  • At the start of the next budget period, the cap lifts automatically, paused services resume, and the spend count resets to zero.

The costs used to calculate whether you hit the cap are estimated costs based on list price. They exclude savings and credits. If you have promotional credits or custom negotiated discounts, Google ignores them for the cap trigger; it measures raw list price consumption against your target number.

The 4 eligible services and what gets paused

Spend caps do not apply account-wide. You can't set an overarching $200 cap on a billing account and expect everything to stop. Google restricts spend caps to exactly 4 API-based services, each configured to a single service inside a single project:

  1. Gemini API (service ID AEFD-7695-64FA, generativelanguage.googleapis.com)
  2. Gemini Enterprise Agent Platform, formerly Vertex AI (service ID C7E2-9256-1C43, aiplatform.googleapis.com)
  3. Cloud Run (service ID 152E-C115-5142, run.googleapis.com)
  4. Cloud Run functions (service ID 29E7-DA93-CA13, cloudfunctions.googleapis.com)

If you want to cap spend on Gemini and Cloud Run in the same project, you must build two separate budgets. A deduplication policy prevents you from creating more than one spend cap budget with the same scope. If you create a cap for the Gemini API in AI Studio and another in the Cloud Billing console for the same project, whichever receives usage cost faster triggers first and blocks Gemini API calls for that project everywhere.

What happens to your data? Nothing gets wiped. No resources or data are deleted when a spend cap triggers.

However, spend caps don't pause ongoing, fixed usage associated with persistent resources. Compute Engine instances, attached storage, and Cloud Storage buckets continue to run and accrue charges normally. Similarly, Provisioned Throughput is never halted; any requests utilizing reserved capacity keep serving traffic even after the cap is enforced. Subscription costs, like Gemini Enterprise subscriptions, are also out of scope.

Spend caps vs alerts vs automated billing disablement

Before spend caps existed, developers relied on programmatic alerts tied to Pub/Sub and a Cloud Run function to cut billing. Understanding the difference between these options is critical before deciding how to protect your account.

FeatureAlerts-only budgetSpend cap budgetAutomated billing disablement
GA dateLongstandingOctober 31, 2026Custom solution (sample architecture)
Action taken at limitSends email alerts onlyAutomatically pauses service API callsDetaches billing account from project
Service scopeAll services, multi-project, labels4 API services, single project onlyEntire project
Impact on resourcesZero impact on workloadsPauses new requests; preserves dataTerminates all project services, free tier included
Threshold customizationCustom percentages, forecasted spendFixed at 50%, 80%, and 100%Configured via Pub/Sub payload
Fixed resources stopped?NoNo (VMs, storage, provisioned run)Yes, terminates all running resources
Account types supportedAll accountsFirst-party customers (no resellers)Projects not locked to a billing account

The old automated billing disablement method uses a Cloud Run function calling the Cloud Billing API method billing.updateProjectBillingInfo with an empty billing account name (resource: {billingAccountName: ''}). It requires granting the function's service account the full Billing Account Administrator role (roles/billing.admin).

That disablement method is a sledgehammer. Disabling billing terminates every service in the project immediately, including Free Tier resources, and you can't run it at all if the project is locked to a billing account. Because there's a delay between incurring costs and receiving budget notifications, it still doesn't guarantee you won't exceed your budget. Spend cap budgets provide a much safer, native path for the 4 supported services.

Enforcement latency and budget limits

Spend caps don't halt traffic instantaneously. You need to know how latency affects your final invoice.

Actual cost details on standard Google Cloud billing reports typically take up to a day to process, and sometimes more than 24 hours to appear. To avoid that delay, spend caps for AI services rely on live, estimated costs, allowing them to trigger within minutes of usage. Cloud Run and Cloud Run functions also rely on these rapid estimates.

Even so, spend cap enforcement isn't instantaneous due to reporting latency. You remain responsible for any overage costs accrued between the moment your usage crossed the line and the moment Google's backend paused the API. Because of that gap, set your spend cap target slightly below your hard financial ceiling.

Other constraints apply to spend cap budgets:

  • Time range: Locked to Monthly, beginning on the first day of each calendar month.
  • Hierarchy limits: Folders, Organizations, Labels, and multi-service scopes aren't supported.
  • Account status: Only available to direct, first-party Google Cloud customers. Reseller accounts can't use them.
  • Project transfers: If you move a project to another billing account, all spend cap budgets on the old account are deleted. If the cap was enforced when you moved it, Google lifts the cap immediately, restoring API traffic and allowing charges to pile up again.

Setting up and managing a spend cap

You can configure a spend cap through the Cloud Billing console or the Cloud Billing Budget API.

Required IAM permissions

If you're using custom roles, managing spend caps requires:

  • billing.budgets.configureSpendCap at the Cloud Billing account level, or
  • billing.resourcebudgets.configureSpendCap at the project level.

For predefined roles at the billing account level, you need the Billing Account Administrator role, or the Billing Account Costs Manager role paired with the Editor role on each target project.

If you want to configure project-level spend caps without billing account rights, your user or service account needs resourcemanager.projects.get, billing.resourcebudgets.read, billing.resourcebudgets.write, and billing.resourcebudgets.configureSpendCap on the project.

Console setup

Inside Cloud Billing, navigate to Budgets & alerts and create a new budget:

  1. Set the scope to a single project and pick one eligible service (such as Gemini API or Cloud Run).
  2. The Time range locks to Monthly, and the Budget type locks to Specified amount.
  3. Enter your budget target amount.
  4. Review the spend cap action. The alerts are fixed to 50%, 80%, and 100% of the target.
  5. Save the budget.

In your Budgets dashboard, check the Spend cap status column. It displays one of four states:

  • Not applicable: Shown on regular, alerts-only budgets.
  • Configured: Active for the current month, waiting to see if spend hits 100%.
  • Enforced: Target exceeded; usage is paused.
  • Lifted: Previously enforced this month, then manually unblocked.

Creating and lifting caps via the API

When creating a budget via POST https://billingbudgets.googleapis.com/v1/billingAccounts/billing-account-id/budgets, the API requires strict settings:

  • calendarPeriod must be MONTH.
  • creditTypesTreatment must be EXCLUDE_ALL_CREDITS.
  • spendCap.inputState must be CONFIGURED.
  • thresholdRules must contain exactly three rules: 0.5, 0.8, and 1.0 with spendBasis set to CURRENT_SPEND or BASIS_UNSPECIFIED (FORECASTED_SPEND isn't supported).
  • notificationsRule must set enableProjectLevelRecipients to true.
{
  "displayName": "cloud-run-cap",
  "budgetFilter": {
    "projects": ["projects/my-prod-project"],
    "services": ["services/152E-C115-5142"],
    "calendarPeriod": "MONTH",
    "creditTypesTreatment": "EXCLUDE_ALL_CREDITS"
  },
  "amount": {
    "specifiedAmount": {
      "currencyCode": "USD",
      "units": "50"
    }
  },
  "thresholdRules": [
    {"thresholdPercent": 0.5, "spendBasis": "CURRENT_SPEND"},
    {"thresholdPercent": 0.8, "spendBasis": "CURRENT_SPEND"},
    {"thresholdPercent": 1.0, "spendBasis": "CURRENT_SPEND"}
  ],
  "notificationsRule": {
    "enableProjectLevelRecipients": true
  },
  "spendCap": {
    "inputState": "CONFIGURED"
  }
}

Can you edit an enforced budget? No. You cannot edit settings or delete a spend cap budget while it sits in an Enforced state. You must manually lift the cap first.

To lift an enforced cap in the API, send a PATCH request targeting updateMask=spendCap.inputState and update spendCap.inputState to AWAITING_NEXT_PERIOD. Trying to modify any other property while outputState is ENFORCED returns a FAILED_PRECONDITION error.

Once lifted, API calls return to normal, but services might take up to one hour to fully recover. The cap won't trigger again for the rest of the month unless you raise the budget amount.

Multi-cloud spending limits with Costbrake

Google Cloud spend caps solve runaway bills for 4 services, but modern architectures rarely run on just one service or even one provider. You might run web services on Cloud Run, handle foundation models on OpenAI or Anthropic, and keep databases on Supabase.

Costbrake monitors spend across 23 cloud, AI, and SaaS platforms, including Google Cloud, AWS, Azure, Cloudflare, OpenAI, Anthropic, RunPod, and Vercel. Instead of waiting for billing exports that lag hours behind, Costbrake pairs the Google Cloud BigQuery export with live Cloud Monitoring estimates for the Gemini API, Vertex AI, Cloud Run, and Cloud Run functions.

Live estimates from Cloud Monitoring run hourly on the Free plan ($0 for 2 connections and 3 budgets) and every 5 minutes on Pro ($12 monthly, covering 10 connections and 50 budgets), and the billing export is read about once an hour. If a spike hits (defined as an hour costing over 3x your 7-day baseline and at least $5 above normal), Costbrake checks every 2 minutes for the next 2 hours on Pro and Team, dispatching alerts via Slack, Discord, webhooks, or email.

When an unexpected bill starts climbing, Pro and Team tiers offer an opt-in brake mechanism across 18 providers. For Google Cloud, Costbrake's brake applies a zero spend cap to the runaway service in that project. Google pauses new usage once its cost estimate processes the cap, recording the previous state so you can reverse it with an undo click. It never brakes automatically; an administrator must confirm the action.

You can link your stack in minutes by following the agent setup guide.

Questions and answers

Does Google Cloud have an account-wide hard spending limit?

No. Google Cloud spend caps only support 4 services (Gemini API, Gemini Enterprise Agent Platform, Cloud Run, and Cloud Run functions) configured individually per project. Other services like Compute Engine and Cloud Storage have no native spend caps.

What happens when a Google Cloud spend cap triggers?

New requests to the specified service are paused, alert emails go out to project owners and billing admins, and banners display in the console. Existing in-flight requests finish processing, and no data or infrastructure is deleted.

Can I set a daily or weekly Google Cloud spend cap?

No. Spend cap budgets only support monthly calendar periods starting on the first day of each month. Custom date ranges, quarters, and single-day limits are not supported.

Why did I get charged more than my spend cap amount?

Spend cap calculations use gross list prices without credits or discounts, and enforcement is not instantaneous. Because usage estimates have a slight reporting latency, in-flight and trailing requests made before enforcement completes will accrue charges to your bill.

How do I restart a service that was paused by a spend cap?

You can manually lift the cap in the Cloud Billing console or by sending an API update setting spendCap.inputState to AWAITING_NEXT_PERIOD. Normal service resumes within an hour, and the cap won't trigger again that month unless you edit the budget amount.

Sources

Updated