Add a transaction to Actual Budget. Use when the user says they spent money, paid for something, received income, or wants to log a transaction.
<quick_start> Natural language examples:
spent $45 at Walmart on groceriespaid $120 for electricity billreceived $500 freelance income to checkingcoffee $4.50 today
</quick_start>Check that ~/.claude/channels/actual-budget/${ENV}.env exists. If not, tell the user to run /actual-budget:configure-actual first.
</context>
<argument_parsing>
$ARGUMENTS (after stripping env=) is a natural language transaction description. Extract:
$ACTUAL server get-id --type accounts --name "<account name>" --format json
If a category was mentioned:
$ACTUAL server get-id --type categories --name "<category name>" --format json
Match names case-insensitively. If ambiguous, ask the user before proceeding.
Add the transaction:
Amounts use integer cents (e.g. -$45.00 → -4500, $500 income → 50000).
$ACTUAL transactions add \
--account <accountId> \
--data '[{"date":"<YYYY-MM-DD>","amount":<cents>,"payee_name":"<payee>","category":"<categoryId>","notes":"<notes>"}]'
Omit category and notes fields if not provided.
</workflow>
<success_criteria> After a successful response, summarize what was added:
Added: $45.00 at Walmart → Groceries · Checking · 2026-03-21 </success_criteria>