Extension Icon

Quick Toshl

Add expense and income to your Toshl account
AvatarH D
2 Installs
Overview

Quick Toshl

A Raycast extension for Toshl Finance: add expenses, income, and transfers, browse and search entries, manage categories/tags/accounts/budgets, and use Raycast AI tools for natural-language workflows.

Raycast TypeScript License

Features

Commands

CommandDescription
Add ExpenseForm to add an expense (category, tags, account, recurrence).
Add IncomeForm to add income.
View TransactionsRecent transactions: view, edit, delete, grouped by date.
Add TransferMove money between accounts.
View BudgetsBudget progress and limits.
Search EntriesFilter by date, type, category, tags, account, description.
View PlanningSpending plan and predictions (Pro; may 403 on free accounts).
Manage CategoriesCreate, rename, or delete expense/income categories.
Manage TagsCreate, edit, or delete tags.
Manage AccountsCreate, edit, or delete accounts.
Manage BudgetsCreate, edit, or delete budgets (respects Toshl plan limits).
My ProfileProfile from /me: currency, locale, timezone, API-related limits.

Raycast AI tools

Use Raycast AI (extension tools) for prompts like “add 50k lunch” or “search expenses last month”.

ToolPurpose
add-expense / add-incomeAdd entries; supports Vietnamese amount shortcuts (50k, triệu, …).
add-transferRecord transfers between accounts.
search-entriesSearch and summarize transactions.
get-budgetsBudget status.
get-planningPlanning outlook (Pro).
list-categories-tagsCategories, tags, and accounts (always use IDs from here).
update-entry / delete-entryUpdate or delete an entry (not transfers—use update-transfer).
update-transferUpdate a transfer by entryId.
create-category / update-category / delete-categoryCategory CRUD.
create-tag / update-tag / delete-tagTag CRUD.
create-account / update-account / delete-accountAccount CRUD.
create-budget / update-budget / delete-budgetBudget CRUD.
get-meUser profile from /me.
get-tag-sumsAggregated sums per tag (/tags/sums; currency defaults from /me).
list-entry-locationsSaved entry locations for a range (/entries/locations).

Highlights

  • Vietnamese-friendly: Parses amounts like 50k, 3tr, 5 triệu.
  • Default currency: Taken from Toshl (/me), not hard-coded.
  • Caching: Categories, tags, accounts, and currencies use ETag / If-Modified-Since where applicable.
  • Transfers: Shown distinctly in lists; use update-transfer for AI edits to transfers.

Configuration

Required

  • Toshl API key – Create a Personal token in Toshl Developer settings and paste it into the extension preference Toshl API Key.

Optional

  • Force Refresh Cache – Each load uses conditional requests; if the API fails, the last successful metadata may be reused for up to 24 hours. Enable, run any command once, then disable to clear the in-memory cache (e.g. after edits in Toshl elsewhere).
  • Enable Demo Data – Uses mock data instead of the API (for UI development).

Development

From the extension directory:

npm install
npm run build    # production bundle
npm run lint     # ESLint + Prettier
npm run dev      # ray develop (watch mode)

Optional live API smoke testmanual only (not part of npm test or CI). Calls the real Toshl API with your token; creates disposable QTT-TEST-* data and removes it at the end.

node scripts/toshl-integration-test.cjs

If TOSHL_API_KEY is unset, the script tries op read "op://Code/Toshl API/credential" when the 1Password CLI is installed and signed in.

License

MIT – see LICENSE.