---
title: "Create Budget"
method: POST
path: "/v2/budgets"
tags: ["Budgets"]
---

# Create Budget

`POST /v2/budgets`

Creates a Budget

## Headers

- `Idempotency-Key` string, required

## Request body

- CreateSpendBudgetRequest
  - `name` string, required — Name for the Budget.
  - `description` string, required — Description of what the Budget is used for.
  - `parent_budget_id` string, required — ID of parent Budget.
  - `owner_user_ids` string[], nullable — User IDs of the owners of the Budget.
  - `period_recurrence_type` 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' | 'ONE_TIME', required — Period type of the Budget e.g. MONTHLY.
  - `amount` Money, required — Money fields can be signed or unsigned. Fields are signed (an unsigned value will be interpreted as positive). The amount of money will be represented in the smallest denomination of the currency indicated. For example, USD 7.00 will be represented in cents with an amount of 700.
    - `amount` integer, required — The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents.
    - `currency` string, nullable — The type of currency, in ISO 4217 format.
  - `limit_type` 'HARD' | 'SOFT', nullable — Whether the Budget amount blocks spend. `HARD` is rejected; use `/v2/spend_limits` for hard-auth limits.
  - `start_date` string, date, nullable — The date when the Budget should start counting.
  - `end_date` string, date, nullable — The date when the Budget should stop counting.

## Response `200`

The Budget that was created

- SpendBudget
  - `budget_id` string, required — Unique ID for the Budget.
  - `account_id` string, required — The Brex account this Budget belongs to.
  - `name` string, required — Name for the Budget.
  - `description` string, nullable — Description of what the Budget is used for.
  - `parent_budget_id` string, nullable — ID of parent Budget.
  - `owner_user_ids` string[], required — User IDs of the owners of the Budget.
  - `period_recurrence_type` 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' | 'ONE_TIME', required — Period type of the Budget e.g. MONTHLY.
  - `start_date` string, date, nullable — The date when the Budget should start counting.
  - `end_date` string, date, nullable — The date when the Budget should stop counting.
  - `amount` Money — Money fields can be signed or unsigned. Fields are signed (an unsigned value will be interpreted as positive). The amount of money will be represented in the smallest denomination of the currency indicated. For example, USD 7.00 will be represented in cents with an amount of 700.
    - `amount` integer, required — The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents.
    - `currency` string, nullable — The type of currency, in ISO 4217 format.
  - `spend_budget_status` 'ACTIVE' | 'ARCHIVED' | 'DELETED' | 'EXPIRED', required — Status of the Budget e.g. ACTIVE.
  - `limit_type` 'HARD' | 'SOFT', nullable — Whether the Budget amount blocks spend. `HARD` is rejected; use `/v2/spend_limits` for hard-auth limits.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/brex-com/apis/budgets-api.md) · [All operations](https://skmtc.net/brex-com/apis/budgets-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/brex-com/budgets-api/revisions/e93b1cd07aaf/schema)
