
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.
| Command | Description |
|---|---|
| Add Expense | Form to add an expense (category, tags, account, recurrence). |
| Add Income | Form to add income. |
| View Transactions | Recent transactions: view, edit, delete, grouped by date. |
| Add Transfer | Move money between accounts. |
| View Budgets | Budget progress and limits. |
| Search Entries | Filter by date, type, category, tags, account, description. |
| View Planning | Spending plan and predictions (Pro; may 403 on free accounts). |
| Manage Categories | Create, rename, or delete expense/income categories. |
| Manage Tags | Create, edit, or delete tags. |
| Manage Accounts | Create, edit, or delete accounts. |
| Manage Budgets | Create, edit, or delete budgets (respects Toshl plan limits). |
| My Profile | Profile from /me: currency, locale, timezone, API-related limits. |
Use Raycast AI (extension tools) for prompts like “add 50k lunch” or “search expenses last month”.
| Tool | Purpose |
|---|---|
add-expense / add-income | Add entries; supports Vietnamese amount shortcuts (50k, triệu, …). |
add-transfer | Record transfers between accounts. |
search-entries | Search and summarize transactions. |
get-budgets | Budget status. |
get-planning | Planning outlook (Pro). |
list-categories-tags | Categories, tags, and accounts (always use IDs from here). |
update-entry / delete-entry | Update or delete an entry (not transfers—use update-transfer). |
update-transfer | Update a transfer by entryId. |
create-category / update-category / delete-category | Category CRUD. |
create-tag / update-tag / delete-tag | Tag CRUD. |
create-account / update-account / delete-account | Account CRUD. |
create-budget / update-budget / delete-budget | Budget CRUD. |
get-me | User profile from /me. |
get-tag-sums | Aggregated sums per tag (/tags/sums; currency defaults from /me). |
list-entry-locations | Saved entry locations for a range (/entries/locations). |
50k, 3tr, 5 triệu./me), not hard-coded.If-Modified-Since where applicable.update-transfer for AI edits to transfers.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 test — manual 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.
MIT – see LICENSE.
Add a new expense transaction to Toshl
Add a new income transaction to Toshl
View and manage recent Toshl transactions
Move money from one account to another
View your budget progress and spending
Search and filter all entries by date range, category, tags, account, and more
View your spending plan and predictions for this month or year (Pro feature)
Create, rename, or delete expense/income categories
Create, edit, or delete tags
Create, edit, or delete accounts
Create, edit, or delete budgets (respects Toshl free/Pro limits)
Show Toshl account profile, currency, locale, and API feature limits
my-profile) – reads Toshl /me (main currency, locale, timezone, country, month start, API limit flags).delete-category, delete-tag, delete-account, update-transfer, get-me, get-tag-sums, list-entry-locations (plus existing create/update coverage for categories, tags, accounts, budgets).scripts/toshl-integration-test.cjs – optional live API smoke test that creates disposable QTT-TEST-* resources and deletes them afterward (supports TOSHL_API_KEY or op read for the key).POST creates (categories, tags, accounts, budgets, expenses, incomes, transfers), resolves the new id from the Location header when the body is empty, then GETs the resource so callers always receive a full object with id (matches Toshl API behavior).get-tag-sums (AI) – passes the API-required currency query parameter (defaults to main currency from /me).build, lint, dev, integration script).start only) so they keep renewing each month instead of stopping at the current month’s end.search-entries – explicit from / to override dateRange when either date is provided (after trim).