# Budgets and reserves

> Plan spending and prepare for tax payments and year-end costs.

Source: https://app.getoatmilk.com/docs/budgets

## See what you need to set aside

Open **Finance › Budgets**, or ask Ask AI, “Do we have enough saved for HST and our accountant?” The `budgets.overview` action returns spending plans, upcoming costs, reserve accounts and funding gaps. Each amount keeps its currency. Filing dates and payment dates are separate.

Tax dates come from the company's compliance checklist. Set the company's tax registration, reporting frequency and year-end in Tax info first. A reviewed GST/HST workpaper can supply a planning estimate. Corporate income tax and accountant fees need an estimate or a confirmed amount supplied by the company. Missing amounts remain unknown.

## Give an account a purpose

In **Reserves**, choose an existing bank account and set its purpose, such as GST/HST or income tax. You can cap how much of its balance is set aside. With the API or an AI app, read `budgets.overview`, then pass the account's `purposeRevision` to `budgets.accounts.designate` as `expectedRevision`.

This is a planning designation. It does not move money or change the bank account. Only available balances in the same currency count. Missing or stale balances need checking. Each balance is allocated once, in payment-date order, so two upcoming bills cannot both claim the same savings.

## Plan a cost

Use `budgets.obligations.save` for taxes, accountant fees or another cost. Keep the amount's basis as **Estimate** until confirmed. A negative amount represents an expected refund; it does not fund another payment. An unknown amount is `null`.

An automatic compliance plan can be replaced with a saved amount by supplying its `complianceItemId`. Recording `paidMinor` updates the plan; it does not send a payment or file a return.

Funding checks add warnings to the existing Checklist within the plan's reminder window. The regular compliance process refreshes those checks, and the company's existing reminder settings decide whether reminders are emailed. Use `budgets.evaluate` to check again now.

## Track spending

Use `budgets.save` to set a monthly, quarterly or yearly spending plan for one category or all expenses. Actuals use reviewed bookkeeping entries, deduct refunds and exclude transfers. Unreviewed spending is shown separately so an incomplete review does not look like unused budget.

All writes require the current revision and an idempotency key. Ask AI uses the same actions and permissions, and reversible changes appear in History. Budgeting actions are available through the `budgets` MCP toolset to administrators and finance members.

## Plan recurring spending

**Spending** also shows future costs from detected subscriptions and reviewed repeating purchases. Saved subscription amounts, renewal dates, paused or ended status, and accepted same-currency merges are reused. Each forecast shows its charge evidence, whether its amount is confirmed or based on the latest charge, and what still needs checking.

Future charges are kept separate from booked spending, tax amounts and payment plans. A forecast does not create a bill or reserve money. Totals keep each currency separate; an unknown amount or schedule does not become zero. A newer purchase still awaiting review makes that source uncertain so another charge is not counted again.

Complete category splits supply their spending amounts; proven balance-sheet portions stay out. Mixed or missing categories are shown as uncertain and do not suggest a category budget. Incomplete splits need review before another charge is projected. The evidence list contains recent charges and says when older charge IDs were left out; estimates still use the complete bounded history read.

**Plan for this** opens a spending plan with the source's category, currency and full charge for its monthly, quarterly or yearly cycle. Review the amount and dates before saving. A yearly charge is not spread across monthly actuals. Ask AI can explain the evidence or help save the same plan.

With the API or an AI app, request `budgets.overview` with `sections: ["recurring"]` to read only forecasts. The other choices are `due`, `spending` and `reserves`; no sections returns all of them. Each tab reads its own sources so spending plans can open while forecasts load. Funding checks always read the complete payment and spending sources and leave speculative forecasts out.
