A monthly budget per resource for each project, alerts by e-mail, webhook or Telegram at the percentages you choose, and an optional hard stop.
Plan quotas and the spend cap apply to your whole account. A budget is for one project: how much egress, function invocations, realtime messages, monthly active users, file storage and database size it may use per month. Use it to hear early about a traffic spike or a runaway loop, and to stop one project without touching the others.
#Set a budget
Open the project's Usage page (project owners and admins). Next to each resource you see this month's use; enter a budget for the ones you care about and leave the others empty. Choose the percentages that alert you (50%, 80% and 100% by default; up to six, also above 100%) and where alerts go.
| Resource | Counted | Stop at 100% |
|---|---|---|
| Egress | Data sent by the APIs, Storage and Realtime this month, in GB | The API, Storage, Functions and Realtime answer 402 with code: "budget_exceeded". Auth and Studio keep working. |
| Edge Function invocations | Calls this month | Functions answer 429. |
| Realtime messages | Messages this month | New realtime connections answer 402; open ones stay. |
| Monthly active users | Users who signed in this month | New sign-ups are refused; existing users keep signing in. |
| File storage | Current size, in GB | Alert only |
| Database size | Current size, in GB | Alert only |
Usage is checked every 5 minutes, so a stop can come a few minutes after the budget is reached. A stopped resource starts again at the start of the next month (UTC), as soon as you raise or remove its budget, or when you untick its stop. Changing a resource's budget alerts again from its lowest threshold.
#Alerts
| Channel | What you get |
|---|---|
| To the project owner, with this month's use, the budget and whether anything was stopped. | |
| Webhook | A budget.alert event to every project webhook that chose it, signed and retried like other events. Use it to page your team or scale down a job. |
| Telegram | A message from your own bot to a chat you choose: create a bot with @BotFather, add it to the chat, and enter the bot token and the chat id. The token is stored encrypted. |
Each threshold alerts once per month and resource; when several are crossed at once you get only the highest. Send a test alert checks every channel.
{
"type": "budget.alert",
"record": { "resource": "egress_gb", "threshold": 100, "used": 10.2, "budget": 10, "percent": 102, "stopped": true, "period": "2026-10", "test": false }
}