{"slug": "cloudflare-spending-limits-and-alerts", "title": "Cloudflare: Spending Limits and Alerts", "summary": "Cloudflare introduced spending limits and email alerts for Workers and Durable Objects, blocking supported operations for a product once its account-wide monthly limit is reached until the next billing period or until the limit is changed. The controls, called spend policies in the billing API, can be configured in the Cloudflare dashboard or via the cf CLI and are meant to be used alongside AI Gateway spend limits, which cap per-user and per-model budgets for Workers AI and other AI providers on requests routed through the gateway. Workers limits count requests and CPU time but exclude the Workers Paid subscription fee, while Durable Objects limits count requests, duration, SQLite rows read and written, and key-value storage read, write, and delete operations, excluding stored data and the shared subscription fee; Cloudflare warns that metering delays and in-progress operations can let spend exceed a limit.", "body_md": "Set spending limits for Workers and Durable Objects, or receive email alerts when spending reaches a threshold. Support for more products is coming soon.\n\nWhen a product reaches its spending limit, Cloudflare blocks supported operations until the next billing period or until you change the limit. Email alerts notify you without blocking usage.\n\nUse these controls alongside [AI Gateway spend limits](https://developers.cloudflare.com/ai-gateway/features/spend-limits/) to manage compute and AI inference costs across your application. AI Gateway supports per-user and per-model budgets for Workers AI and other AI providers, applied to requests routed through your gateway.\n\nIn the billing API, a spending limit or email alert is called a *spend policy*.\n\nChoose how to configure spending limits and email alerts for Workers or Durable Objects:\n\n- **Dashboard:**[Set a spending limit](https://developers.cloudflare.com/billing/manage/spend-management/#set-a-spending-limit-in-the-dashboard) for Workers or Durable Objects.\n- **cf CLI:**[Create and manage spending limits and email alerts](https://developers.cloudflare.com/billing/manage/spend-management/cli/) from your terminal or coding agent.\n\n| Control | Scope | What happens at the threshold | \n|---|---|---|\n| Spending limit | Workers or Durable Objects, across your account | Cloudflare blocks the product's supported operations. | \n| [AI Gateway spend limit](https://developers.cloudflare.com/ai-gateway/features/spend-limits/) | AI requests routed through your gateway, scoped by user, model, or provider | AI Gateway blocks matching requests until the budget window resets. | \n| Email alert | Workers or Durable Objects, across your account | Cloudflare emails the address you configure. The product keeps running. | \n| [Budget alert](https://developers.cloudflare.com/billing/manage/budget-alerts/) | Account-wide usage-based spend | Cloudflare emails your recipients. Products keep running. | \n\nWorkers and Durable Objects each have a separate product-wide limit. A Workers limit does not include Durable Objects, Workers AI, Workers KV, R2, or other products used by your application.\n\nWorkers and Durable Objects limits cannot target an individual Worker, Durable Object namespace, or billing metric. Choose each limit for the combined usage of that product across your account.\n\nWorkers and Durable Objects limits use estimated usage charges for the product's current subscription billing period. Included usage is deducted before Cloudflare calculates these charges. Amounts are in US dollars.\n\n| Product | Usage charges counted toward the limit | Charges excluded from the limit | \n|---|---|---|\n| Workers | Requests and CPU time | The Workers Paid subscription fee and charges for other products | \n| Durable Objects | Requests, duration, SQLite rows read and written, and key-value storage read, write, and delete operations | Stored data and the shared Workers Paid subscription fee | \n\nStored data can continue to incur charges while Durable Objects are paused. Reaching a limit does not cancel your subscription or remove existing stored data.\n\nYour [invoice](https://developers.cloudflare.com/billing/manage/invoices/) is the final record of charges. Metering delays, operations already in progress, and enforcement failures can allow spend to exceed a limit.\n\nYou need permission to edit billing settings to manage limits. Before saving, review what stops for [Workers](https://developers.cloudflare.com/workers/platform/spend-management/) or [Durable Objects](https://developers.cloudflare.com/durable-objects/platform/spend-management/).\n\n1. \nIn the [Cloudflare dashboard ↗︎](https://dash.cloudflare.com/) , go to**Billing** for your account.\n\t[Go to **Billing** ↗](https://dash.cloudflare.com/?to=/:account/billing)\n2. \nSelect **Spend Management** .\n3. \nIn the **Workers** or**Durable Objects** row, select**Edit the spending limit** .\n4. \nEnter an amount greater than zero, with up to two decimal places, in **Monthly limit (USD)** . Select**Save limit** .\n5. \nConfirm that the limit is **On** . Saving a new limit turns it on. Editing an existing limit preserves its on or off setting.\n\nThe limit applies to usage already recorded in the current period. For example, saving a $50 limit after the product has accrued $60 can trigger a pause as soon as Cloudflare evaluates the policy.\n\nUse the cf CLI to create spending limits or email alerts, update or remove them, and review their history. The [cf CLI guide](https://developers.cloudflare.com/billing/manage/spend-management/cli/) includes setup instructions and commands you can copy and run.\n\nSuppose you set a $50 spending limit for Workers for your account. Requests and CPU charges count together toward that limit, after included usage.\n\n``` php\nflowchart TD\n    A[\"Workers usage charges below $40\"] --> B[\"$40: near the $50 limit\"]\n    B --> C[\"$50 or more: limit reached\"]\n    C -->|\"After the limit takes effect\"| D[\"New Worker invocations blocked\"]\n    D --> E[\"Raise the limit above current spend<br/>or turn it off or remove it\"]\n    D --> G[\"Next billing period starts\"]\n    E --> F[\"Worker invocations resume\"]\n    G --> F\n```\n\n- At $40, the limit is **Near limit** : 80% of $50.\n- At $50 or more, it is **Limit reached** . Blocking is not instantaneous.\n- The Workers Paid subscription fee is charged separately.\n- Durable Objects and other products have separate charges and controls. An application can still fail if it depends on a paused Worker.\n\nPolicies with an email address send notifications at 80% and 100% of the threshold. If spend jumps past both thresholds between evaluations, you may only receive the 100% notification.\n\nThe dashboard's limit status reflects a recorded threshold event. **Limit reached** does not confirm that blocking has finished propagating. **On** means the policy is enabled, not that the product is running.\n\nSpending limits created in the dashboard do not automatically have an email recipient. To receive limit notifications, [update the policy](https://developers.cloudflare.com/billing/manage/spend-management/cli/#update-a-policy) with a `notification_email` address.\n\nTo lift a spending limit before the period ends, use one of these options in **Spend Management**:\n\n| Action | Result | \n|---|---|\n| Raise the limit above the product's current spend | Restores supported operations and keeps a higher limit in place. | \n| Turn the limit **Off** | Restores supported operations and keeps the saved amount for later. | \n| Select **Remove limit** and confirm | Restores supported operations and removes the policy. | \n\nChanges can take a few minutes to apply. Further usage can incur charges once service resumes. Turning the same limit off and on does not reset this period's spend.\n\nAt the next subscription billing period, the block expires automatically. An enabled limit stays configured for the new period.\n\nFor example, if your subscription renews on the 15th, the limit resets on the 15th. It does not reset on the first day of each calendar month.\n\nThese actions only lift a block caused by a spending limit. They do not remove other account restrictions or product limits.\n\nIn **Billing** > **Spend Management**, the **Audit log** panel shows changes to your spending limits, including who made each change and when. These actions also appear in [Cloudflare's account-wide Audit Logs](https://developers.cloudflare.com/fundamentals/account/account-security/audit-logs/).\n\nCloudflare also records when spending reaches 80% or 100% of a policy's threshold. These events happen automatically, without a user making an API request. Use the [cf CLI to review configuration changes and threshold events](https://developers.cloudflare.com/billing/manage/spend-management/cli/#review-history). A threshold event does not confirm that blocking or email delivery succeeded.\n\n- [Workers spending limits](https://developers.cloudflare.com/workers/platform/spend-management/) — affected invocations, static assets, and errors.\n- [Durable Objects spending limits](https://developers.cloudflare.com/durable-objects/platform/spend-management/) — storage, WebSockets, and alarms.\n- [Monitor billable usage](https://developers.cloudflare.com/billing/manage/billable-usage/) — review usage-based costs across products.", "url": "https://wpnews.pro/news/cloudflare-spending-limits-and-alerts", "canonical_source": "https://developers.cloudflare.com/billing/manage/spend-management/", "published_at": "2026-11-15 07:48:05+00:00", "updated_at": "2026-11-15 08:22:59.448887+00:00", "lang": "en", "topics": ["ai-infrastructure", "ai-products", "developer-tools"], "entities": ["Cloudflare", "Workers", "Durable Objects", "AI Gateway", "Workers AI", "Workers KV", "R2"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/cloudflare-spending-limits-and-alerts", "markdown": "https://wpnews.pro/news/cloudflare-spending-limits-and-alerts.md", "text": "https://wpnews.pro/news/cloudflare-spending-limits-and-alerts.txt", "jsonld": "https://wpnews.pro/news/cloudflare-spending-limits-and-alerts.jsonld"}}