> For the complete documentation index, see [llms.txt](https://help.tahua.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tahua.io/product-news/2026/readme/admin_approval_limits.md).

# Admin approval limits for decisions, contracts and milestones

Organisations can now set per-admin financial approval limits to control the maximum amount an individual admin can approve for decisions, contracts, and milestones.

## How it works

Three optional limit fields are available on each admin's profile:

* **Decision Approval Limit** — the maximum amount any single application decision can be worth when sending a batch decision letter. If any individual application in the batch exceeds the limit, the entire batch is blocked.
* **Contract Approval Limit** — the maximum contract amount an admin can approve when sending a contract.
* **Milestone Approval Limit** — the maximum milestone funding amount an admin can approve.

When a limit is set and the transaction amount exceeds it, the send/approve button is disabled with a message explaining which amount exceeded the limit and what the admin's limit is. The server-side check also blocks the action as a safety net.

Leaving a field blank or setting it to 0 means the admin has no limit (unlimited) for that transaction type.

## Permission

A new user permission **"Can edit Approval Limits"** (under the Users category) controls whether an admin can view and edit approval limits on other admins' profiles. This permission is **off by default** and must be explicitly enabled for admins who need to manage limits.

When the permission is not enabled, the approval limits section is hidden from both the admin edit form and the admin show page, and the approval limit params are rejected on save.

## UI changes

* **Admin edit form**: A new "Approval Limits" collapsible section appears between the signature upload and the permissions section (visible only with the `edit_approval_limits` permission). Each limit is a currency-prefixed number input.
* **Admin show page**: The three limit values are displayed between the signature and the activity timestamps (visible only with the `edit_approval_limits` permission). Unlimited limits show "N/A".
* **Decision send page**: When a decision exceeds the admin's limit, the send button is disabled (greyed out) with a red message explaining the exceeded limit.
* **Contract send page**: Same disabled button behaviour when the contract amount exceeds the admin's limit.
* **Milestone review page**: Same disabled button behaviour when the milestone funding amount exceeds the admin's limit.
