---
title: "Update Budget Rule"
method: PUT
path: "/api/v1/budget_rules/{rule_group_id}"
---

# Update Budget Rule

`PUT /api/v1/budget_rules/{rule_group_id}`

Update an existing budget rule.

Can update:
- Budget rule group metadata (category, dates)
- Provider budget rules (will replace existing rules)
- Invoice rule (will update or create new)

Note: Updating provider_rules will replace all existing provider rules
for this budget rule group.

## Path parameters

- `rule_group_id` integer, required

## Query parameters

- `plan_manager_id` string, nullable

## Request body

- BudgetRuleUpdateRequest — Request model for updating a budget rule
  - `budget_category` string, nullable
  - `effective_date` string, date, nullable
  - `expiry_date` string, date, nullable
  - `provider_rules` ProviderBudgetRuleRequest[], nullable
    - `pm_provider_id` string, uuid, nullable
    - `budget_category` string, nullable
    - `budget_rule_type` string, required
    - `budget_amount` union, required
      - number
      - string
    - `effective_date` string, date, required
    - `expiry_date` string, date, nullable
    - `budget_table_name` string, nullable
    - `budget_id` integer, nullable
    - `linked_document` integer, nullable
    - `name` string, nullable
  - `invoice_rule` InvoiceRuleRequest — Request model for creating/updating an invoice rule
    - `name` string, required
    - `description` string, nullable
    - `target` 'ndis_invoices' | 'ndis_line_items', required
    - `condition` unknown
    - `custom_sql` string, nullable
    - `rule_message` string, required
    - `active` boolean, nullable
    - `mode` 'active' | 'test' | 'off', nullable
    - `scoped_to` 'global' | 'plan_manager' | 'provider' | 'participant', nullable
    - `scoped_id` string, uuid, nullable
    - `category` string, nullable
    - `severity` 'info' | 'warning' | 'error', nullable
    - `start_date` string, date, nullable
    - `end_date` string, date, nullable
    - `condition_type` 'simple' | 'composite', nullable

## Response `200`

Successful Response

- ApiResponseJSONBudgetRuleResponse
  - `data` BudgetRuleResponse[] — List of items returned in the response following given criteria
    - `id` integer, required
    - `created_at` string, date-time, required
    - `budget_category` string, nullable
    - `plan_manager` string, uuid, required
    - `effective_date` string, date, nullable
    - `expiry_date` string, date, nullable
    - `associated_rule` string, uuid, nullable
    - `provider_rules` ProviderBudgetRuleResponse[], required
      - `id` integer, required
      - `plan_manager` string, uuid, required
      - `participant_id` string, uuid, required
      - `pm_provider_id` string, uuid, nullable
      - `budget_category` string, nullable
      - `budget_rule_type` string, required
      - `budget_amount` string, required
      - `effective_date` string, date, required
      - `expiry_date` string, date, nullable
      - `created_at` string, date-time, required
      - `modified_at` string, date-time, nullable
      - `current_used_amount` string, nullable
      - `is_violated` boolean, nullable
      - `is_75_percent_violated` boolean, nullable
      - `active` boolean, required
      - `budget_table_name` string, nullable
      - `budget_id` integer, nullable
      - `linked_document` integer, nullable
      - `name` string, nullable
      - `temp_external_id` string, nullable
      - `budget_rules_group_id` integer, nullable
    - `invoice_rule` InvoiceRuleResponse — Response model for invoice rules
      - `id` string, uuid, required
      - `name` string, required
      - `description` string, nullable
      - `target` 'ndis_invoices' | 'ndis_line_items', required
      - `condition` unknown
      - `custom_sql` string, nullable
      - `rule_message` string, required
      - `active` boolean, nullable
      - `mode` 'active' | 'test' | 'off', nullable
      - `scoped_to` 'global' | 'plan_manager' | 'provider' | 'participant', nullable
      - `scoped_id` string, uuid, nullable
      - `category` string, nullable
      - `severity` 'info' | 'warning' | 'error', nullable
      - `start_date` string, date, nullable
      - `end_date` string, date, nullable
      - `created_at` string, date-time, nullable
      - `updated_at` string, date-time, nullable
      - `condition_type` 'simple' | 'composite', nullable
  - `meta` ApiResponseMeta — Standardised Api Response Meta Not always required (except for example; with paginated results) Future: Could provide base that includes org information, copy-write etc
    - `processing_time_ms` integer, nullable
    - `total_records` integer, nullable
    - `page` integer, nullable
    - `limit` integer, nullable
    - `count` integer, nullable
    - `cursor` unknown
    - `cursor_last` unknown
    - `more_data_available` boolean, nullable
  - `messages` ApiResponseMessage[], nullable — Response Messages
    - `message_type` 'debug' | 'info' | 'warning' | 'error', required
    - `message` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/caresquare/apis/fastapi.md) · [All operations](https://skmtc.dev/caresquare/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/caresquare/fastapi/revisions/c9df874d8d59/schema)
