Budgets and reserves

taxReserves.settings.save

Save exact receiving-bank to dedicated sales-tax-bank routes, email reminders and optional automatic reserve transfers with the current expectedRevision. Accounts must belong to this organization, be active, separate and in the same currency. Automatic movement requires an interactive administrator, verified supported Wise accounts and current payout access. Enabling applies only to newly received funds and never silently transfers old suggestions. Same-day imports require the bank's exact receipt timestamp at or after setup; date-only receipts remain manual on the setup day. API keys cannot enable automatic movement. Pausing stops new automatic sends; a movement already accepted by the bank may finish.

POST/api/v1/accounting/taxReserves.settings.save

Permissions

accounting:readaccounting:writeaccounting:admin

Who can call it

admin

Retries

Idempotency key required, with expectedRevision

MCP

accounting_tax_reserves_settings_save

Fields

  • expectedRevisionintegerRequired

    The record's current revision, from the last time you read it. If someone changed the record since, the request is refused with a conflict so you can reload and check before trying again.

    0 to 9007199254740991

  • reminderEmailsbooleanRequired
  • automaticTransfersbooleanRequired
  • routesarray of objectsRequired

    at most 50 items

  • reviewedSnapshotstring

    SHA-256 hash as 64 lowercase hex characters

  • idempotencyKeystringRequired

    Any unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match.

    8–200 characters

Example

curl https://app.getoatmilk.com/api/v1/accounting/taxReserves.settings.save \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "expectedRevision": 3,
  "reminderEmails": true,
  "automaticTransfers": true,
  "routes": [
    {
      "sourceAccountId": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10",
      "destinationAccountId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
    }
  ],
  "reviewedSnapshot": "9f2b5c1d7e3a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
}'
Response
{
  "data": { … }
}

Try it

Try it

Checks your input with this action’s real schema and answers like the API, with synthetic data. No key needed, and nothing changes.

POST/api/v1/accounting/taxReserves.settings.save
curl https://app.getoatmilk.com/api/v1/accounting/taxReserves.settings.save \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "expectedRevision": 3,
  "reminderEmails": true,
  "automaticTransfers": true,
  "routes": [
    {
      "sourceAccountId": "7f0f6c1e-1c1f-4b5e-9c8d-2f5e8e3c1a10",
      "destinationAccountId": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
    }
  ],
  "reviewedSnapshot": "9f2b5c1d7e3a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4e6f8a0b2c4d6e8f0a2b4c"
}'

More in Budgets and reserves.