Create a budget
Create a Budgets budget with the CLI, the API or Python, choosing its period, the spending it counts and the thresholds that send alerts.
This guide creates a monthly budget of 1000 for compute spending, with one threshold that alerts when 80% is spent and another that warns when the month is forecast to go over. For a shorter first run, see Get started.
Before you begin
- Sign in with the CLI, get a token for the API, or create the Python client.
- Create at least one confirmed notification channel. The
CLI refers to channels by name. The API and Python client use their IDs, which
openstack budget channel listshows.
1. Choose the period and amount
Pick a period of daily, monthly, quarterly or yearly for a budget that resets, or
custom for one fixed span. The amount is per window and is a decimal string in the API.
For a custom period, also set its start and end:
openstack budget create launch-quarter \
--amount 5000 \
--period custom \
--start 2026-11-01 \
--end 2027-02-01 \
--threshold name=warn,value=80,channel=finance2. Choose what counts
Leave out the filter to count everything in the project. To count only some spending, filter by
service (compute, volume, image), region, or usage type. This guide counts compute only.
3. Create the budget with its thresholds
A budget needs between one and ten thresholds. Each names a level, what it compares, and the channels it alerts.
openstack budget create compute-monthly \
--amount 1000 \
--period monthly \
--service compute \
--threshold name=warn,value=80,channel=finance \
--threshold name=overrun,value=100,basis=forecasted,channel=financeOn the CLI, basis defaults to actual and unit to percentage. The API and Python client
need both fields on every threshold.
The API answers 201 Created with the budget:
{
"id": "c7e1a5b3-9d2f-4e8c-a6b4-1f3d5e7c9a2b",
"name": "compute-monthly",
"project_id": "a6f1c2d93b8e4f07b5d4e2c1a9f8e7d6",
"enabled": true,
"amount": "1000",
"currency": "USD",
"period": "monthly",
"filter": {"services": ["compute"]},
"thresholds": [
{"name": "warn", "basis": "actual", "unit": "percentage", "value": "80",
"comparison": "greater_than_or_equal", "enabled": true,
"channels": ["3f9c1e7a-2b4d-4c6e-8a1f-5d7b9e2c4a6f"]},
{"name": "overrun", "basis": "forecasted", "unit": "percentage", "value": "100",
"comparison": "greater_than_or_equal", "enabled": true,
"channels": ["3f9c1e7a-2b4d-4c6e-8a1f-5d7b9e2c4a6f"]}
],
"revision": 1,
"created_by": "4c8e2f1a9b7d4e6f8a3c5b1d7e9f2a4c",
"created_at": "2026-10-07T14:10:27Z",
"updated_at": "2026-10-07T14:10:27Z",
"status": null
}status is null until Budgets first checks the budget, within about an hour.
4. Verify
After the first check, the budget reports its spending and each threshold's state:
openstack budget list+--------------------------------------+-----------------+----------------------------------+---------+--------+----------+------------------+-------------------+---------+---------+
| ID | Name | Project ID | Period | Amount | Currency | Actual Spend | Forecast Spend | Alarms | Enabled |
+--------------------------------------+-----------------+----------------------------------+---------+--------+----------+------------------+-------------------+---------+---------+
| c7e1a5b3-9d2f-4e8c-a6b4-1f3d5e7c9a2b | compute-monthly | a6f1c2d93b8e4f07b5d4e2c1a9f8e7d6 | monthly | 1000 | USD | 248.731250000000 | 1155.164285714286 | overrun | True |
+--------------------------------------+-----------------+----------------------------------+---------+--------+----------+------------------+-------------------+---------+---------+Here the project has spent about 249 of its 1000, but the month is forecast to cost about 1155,
so the overrun threshold is in alarm and has alerted the finance channel.
Next steps
- Receive alerts with a webhook to send alerts to chat or your own systems.
- Change a budget when the amount or thresholds need adjusting.
- Look up every option in the CLI reference or the API reference.