# DELETE /api/v2/budget-groups/{budget_group}

Delete a budget group

- MCP id: budget-groups.destroy
- Scope: api:destroy:budget_groups
- Permission: budget_groups::delete
- Rate cost: 1 unit, write bucket.
- Cache-Control: private, no-store

Deletes a budget group permanently: it uses no soft deletes, so there is no restore.

Every budget in the group is silently ungrouped, and the organisation's Exact item id, VAT code, cost centre and local rate defaults for the group are deleted with it, which changes the output of subsequent project sales invoices. Team preferences referencing the group are left pointing at an id that no longer exists.

## Parameters
- budget_group (integer, path): The BudgetGroup's numeric id.
- X-Request-Id (header, optional): A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
- If-Match (header, optional): The ETag a write is conditional on. A stale validator is 412 precondition-failed.

## Response 204

## Errors
- 403 forbidden-by-policy | insufficient-permission | insufficient-token-scope: Forbidden.
- 412 precondition-failed: Precondition failed.
- 400 idempotency-key-required | invalid-cursor | invalid-query-parameter | malformed-request | unsupported-parameter: Bad request.
- 401 token-expired | unauthenticated: Unauthenticated.
- 404 endpoint-not-found | resource-not-found: Not found.
- 406 not-acceptable: Not acceptable.
- 429 rate-limit-exceeded: Too many requests.
- 500 internal-error: Server error.
- 503 tenant-unavailable: Service unavailable.

## Example
```bash
curl -X DELETE \
  'https://<your-url>/api/v2/budget-groups/1' \
  -H 'Authorization: Bearer <token>' \
  -H 'Accept: application/json'
```
