Update a transaction
update_transactionChanges- What it does
- Changes or deletes something you had. Your assistant can ask you to confirm first. Safe to retry: the same call twice changes nothing more.
- Permission
- Transactions, change
transactions:write
What your assistant is told
Edit an existing transaction the user already logged — correct a wrong amount, fix the category (this is ALSO how you RECATEGORIZE a transaction), change the date, or fix/clear the note. transaction_id is the transaction's UUID (from get_transactions_in_range). This is a SPARSE patch: pass only the fields you want to change; every omitted field keeps its current value. category accepts a category NAME (case-insensitive) or UUID — use list_categories for valid names. amount_minor is integer minor units (cents, > 0); occurred_at_iso is ISO-8601 and MUST carry the user's UTC offset (ask if you don't know it) — without one the corrected date can land in the wrong month; is_expense flips money-out vs money-in. For description: omit to keep the current note, pass an empty string "" to clear it. account (id, alias or IBAN) MOVES the transaction to another of the user's accounts. kind turns a standard transaction into a transfer (its category is dropped) or back (then category is required). Returns the updated transaction. To REMOVE a transaction instead of correcting it, use delete_transaction; to add a new one use log_transaction.
Parameters
transactionIdid, requiredUUID of the transaction to edit. Useget_transactions_in_rangeto find it.amountMinorwhole number, optionalNew amount in integer minor units (cents, > 0). Omit to keep the current amount.currencytext, optionalNew 3-letter ISO 4217 currency code. Omit to keep the current currency.categorytext, optionalNew category NAME (case-insensitive) or UUID — this is how you recategorize. Omit to keep the current category.occurredAtIsotext, optionalNew occurred-at timestamp, ISO-8601 WITH the user's UTC offset, e.g. "2026-06-17T09:30:00+03:00". Refused without one. Omit to keep the current date.isExpensetrue or false, optionaltrue = expense (money out), false = income (money in). Omit to keep unchanged.descriptiontext, optionalNew free-text note. Omit to keep the current note; pass an empty string "" to clear it.accounttext, optionalAccount id, alias or IBAN to move it to. Omit to keep its account.kindtext, optional"standard" or "transfer". Omit to keep the current kind.counterpartAccounttext, optionalA transfer's other account (id, alias or IBAN); "" clears it. Omit to keep it.