---
title: "Create Budget Rule With Provider Rules"
method: POST
path: "/api/v1/budget_rules/with-provider-rules"
---

# Create Budget Rule With Provider Rules

`POST /api/v1/budget_rules/with-provider-rules`

Create budget rule with provider_rules containing amount/support_item pairs.

This endpoint accepts provider_rules as either:
- JSON string: "[{"amount":0,"support_item":"04_049_0104_1_1"}]"
- Direct array: [{"amount":0,"support_item":"04_049_0104_1_1"}]

Both formats are automatically converted to JSON string for processing.

Example payload (works with both JSON string and array formats):
```json
{
  "participant_id": "d347efc2-5eca-4efd-bb5c-cf6144fa96bf",
  "budget_category": "Assistance with Social, Economic and Community Participation",
  "effective_date": "2024-02-01",
  "expiry_date": "2026-02-01",
  "provider_rules": [{"amount":0,"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"
  }
}
```

Creates one provider_budget_rule for each item in the provider_rules array.

## 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)
