---
title: "Update Budget Rule With Provider Rules"
method: PUT
path: "/api/v1/budget_rules/{rule_group_id}/with-provider-rules"
---

# Update Budget Rule With Provider Rules

`PUT /api/v1/budget_rules/{rule_group_id}/with-provider-rules`

Update an existing budget rule using the simplified provider_rules format.

This endpoint updates a budget rule with the same format as creation:
- JSON string or array for provider_rules
- Will replace ALL existing provider rules with the new ones
- Will update or create the invoice rule

Example:
```json
{
  "budget_category": "Assistance with Social, Economic and Community Participation",
  "effective_date": "2024-02-01",
  "expiry_date": "2026-02-01", 
  "provider_rules": "[{"amount":500,"support_item":"04_049_0104_1_1"},{"amount":1000,"support_item":"04_402_0104_1_1"}]",
  "invoice_rule": {
    "name": "Budget Rule",
    "target": "ndis_line_items",
    "rule_message": "Budget rule exceeded, please check"
  }
}
```

## Path parameters

- `rule_group_id` integer, required

## Query parameters

- `plan_manager_id` string, nullable

## Request body

- BudgetRuleCreateRequestWithProviderRules — Request model matching the actual payload structure with provider_rules as array or JSON string
  - `plan_manager` string, uuid, nullable
  - `participant_id` string, uuid, required
  - `budget_category` string, required
  - `effective_date` string, date, required
  - `expiry_date` string, date, nullable
  - `provider_rules` string, required
  - `pm_provider_id` string, uuid, nullable
  - `budget_rule_type` string
  - `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)
