---
title: "Update a budget"
method: PATCH
path: "/v3/spend/budgets/{budgetId}"
tags: ["budgets"]
---

# Update a budget

`PATCH /v3/spend/budgets/{budgetId}`

Update details about an existing budget.

## Path parameters

- `budgetId` string, required — BILL-generated ID or UUID of the budget

## Headers

- `apiToken` string, nullable — Access token for Spend & Expense API authentication

## Request body

- BudgetUpdateDto — Update a budget (limit updated)
  - `name` string — Budget name
  - `description` string — Budget description
  - `expirationDate` string, date, nullable — Budget expiration date. This value is in the `yyyy-MM-dd` format.
  - `recurringInterval` 'NONE' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' — Interval after which the budget is reset. By default, BILL uses the timezone of the company's billing address to reset a budget at 12 AM. * `NONE`: Never * `DAILY`: Each day at 12 AM * `WEEKLY`: Each Monday at 12 AM * `MONTHLY`: On the 1st of every month at 12 AM * `QUARTERLY`: Once every 3 months, on the 1st of the month at 12 AM. Set the first month with `recurMonth`. * `YEARLY`: Once every year, on the 1st of the month at 12 AM. Set the month with `recurMonth`.
  - `recurMonth` integer — The month in which the budget will recur. Set this field only when `recurringInterval` is set as `QUARTERLY` or `YEARLY`. The default value is the current month.
  - `timezone` string — Timezone in which the budget funds are reset. The default value is the timezone of the company's billing address. Set this field in the `US/{time_zone}` format. For example, `US/Pacific` or `US/Mountain`.
  - `autoAddUsers` boolean — Set as `true` to automatically add all new users to this budget
  - `receiptRequired` boolean — Set as `true` if a receipt is required for transactions in the budget
  - `maxTxSize` number — Maximum transaction size in the budget. Any single transaction for an amount greater than `maxTxSize` will be declined.
  - `carryOver` boolean — Set as `true` for any budget funds assigned to users and vendor cards to carry over from one budget period to the next. The budget period is set with `recurringInterval`.
  - `limitlessOverspend` boolean — Set as `true` for enabling spend amounts over the budget limit. **Note**: You cannot set this field as `true` for budgets with `recurringInterval` set as `DAILY` or `WEEKLY`.
  - `limit` number — Spend limit for the initial budget period. **Note**: This field is required unless `limitlessOverspend` is set as `true`.
  - `limitlessGoal` number — Spend goal for a limitless budget. **Note**: You can set this field when `limitlessOverspend` is set as `true`.
  - `recurringLimit` number — Spend limit for all future budget periods. **Note**: This field is required when `recurringInterval` is set as any value other than `NONE`.
  - `overspendBuffer` number — Spend amount allowed above the budget limit before transactions are declined. **Note**: You cannot set this field when `limitlessOverspend` is set as `true` or for budgets with `recurringInterval` as `DAILY` or `WEEKLY`.
  - `shareFunds` 'DO_NOT_SHARE' | 'SHARE_MANUALLY' — Rule for how the budget funds are shared with budget members. The default value is `SHARE_MANUALLY`.

## Response `200`

Update a budget response

- BudgetResponseDto — Budgets response.
  - `id` string — BILL-generated ID of the budget
  - `uuid` string — BILL-generated UUID of the budget
  - `name` string — Budget name
  - `description` string — Budget description
  - `retired` boolean — Set as `true` if the budget is retired
  - `startDate` string, date — Budget start date
  - `expirationDate` string, date — Budget expiration date
  - `recurringInterval` 'NONE' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' — Interval after which the budget is reset. By default, BILL uses the timezone of the company's billing address to reset a budget at 12 AM. * `NONE`: Never * `DAILY`: Each day at 12 AM * `WEEKLY`: Each Monday at 12 AM * `MONTHLY`: On the 1st of every month at 12 AM * `QUARTERLY`: Once every 3 months, on the 1st of the month at 12 AM. Set the first month with `recurMonth`. * `YEARLY`: Once every year, on the 1st of the month at 12 AM. Set the month with `recurMonth`.
  - `timezone` string — Timezone in which the budget funds are reset
  - `autoAddUsers` boolean — Set as `true` to automatically add all new users to this budget
  - `receiptRequired` boolean — Set as `true` if a receipt is required for transactions in the budget
  - `maxTxSize` number — Maximum transaction size in the budget. Any single transaction for an amount greater than `maxTxSize` will be declined.
  - `carryOver` boolean — Set as `true` for any budget funds assigned to users and vendor cards to carry over from one budget period to the next. The budget period is set with `recurringInterval`.
  - `default` boolean — Set as `true` if the current budget is set as the default budget for the company
  - `parentBudgetId` string — BILL-generated ID of the parent budget
  - `parentBudgetUuid` string — BILL-generated UUID of the parent budget
  - `budgetGroup` boolean — Set as `true` if this budget is a budget group. A budget group can be set as a parent of other budgets.
  - `shareFunds` 'DO_NOT_SHARE' | 'SHARE_MANUALLY' | 'SHARE_WITH_ALL_OWNERS' | 'SHARE_WITH_ALL_MEMBERS' | 'SHARE_ALL_OWNERS_BUT_MEMBERS_MANUALLY' — Rule for how the budget funds are shared with budget members. The default value is `SHARE_MANUALLY`.
  - `recurringLimit` number — Spend limit for all future budget periods
  - `limitlessOverspend` boolean — Set as `true` for enabling spend amounts over the budget limit
  - `limitlessGoal` number — Spend goal for a limitless budget
  - `currentPeriod` object — Current budget period information
    - `startDate` string, date — Budget period start date
    - `endDate` string, date — Budget period end date
    - `limit` number — Budget period spend limit
    - `overspendBuffer` number — Spend amount allowed above the budget limit before transactions are declined
    - `assigned` number — Total amount assigned to users and vendor cards
    - `spent` object — Budget period amount spent information
      - `cleared` number — Sum of cleared transactions
      - `pending` number — Sum of pending transactions
      - `total` number — Sum of all transactions (`cleared + pending`)

## Other responses

- `4XX` — List of errors.
- `5XX` — List of errors.

---

[API](https://skmtc.net/bill/apis/bill-v3-api.md) · [All operations](https://skmtc.net/bill/apis/bill-v3-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bill/bill-v3-api/revisions/0483350c434e/schema)
