zenmoney-go

A Go library and zm CLI for the ZenMoney API, with a Claude Code skill that answers personal finance questions

CLIMedium riskRussian stack

miilv/zenmoney-go

Install

go install github.com/miilg/zenmoney-go/cmd/zm@latest

Installs the zm CLI.

This is third-party code. Review the repository files before installing.

What it does

The zm CLI syncs ZenMoney data and shows accounts with balances, transactions filtered by date, account and category, the category tree and a monthly income and expense summary. The zenmoney skill allows Claude to run only zm commands and does the math and period comparisons itself. The Go library covers sync, pushing changes, category suggestions and OAuth2.

Who it is for. For ZenMoney users who want to ask an agent about their spending and income in plain language.

Good fit when

  • You want spending by category for a month
  • You want to compare income across periods
  • You want account balances and net worth

Not a fit when

  • You do not use ZenMoney
  • You need investment advice rather than expense tracking

Example request

How much did I spend on cafes and restaurants in March?

Limitations

Requires Go to build, a ZenMoney token and zm on PATH. The README describes the CLI for reading data; writes are available only through the library. ZenMoney gets data from bank SMS and push notifications on the phone.

How to disable. Remove ~/.claude/skills/zenmoney. The saved token and data live in ~/.config/zenmoney/.

Security check

  • Requires an access token to financial data
  • Syncs data from the ZenMoney API and stores it locally

README in short

The README describes a Go ZenMoney API client and the zm CLI with auth, sync, accounts, tx, cats and summary commands. It gives three ways to enable the Claude Code skill: personal skill, --add-dir and project skill. The library section covers full and incremental sync, pushing changes, OAuth2 and local storage. All ZenMoney API entities are mapped to Go structs.

SKILL.md

---
name: zenmoney
description: Query personal finances via ZenMoney API. Use when the user asks about money, finances, accounts, balances, transactions, spending, income, expenses, budget, net worth, savings, or cash flow.
argument-hint: "[question or zm command]"
allowed-tools: Bash(zm *)
---

# ZenMoney Finance CLI

You have access to `zm` — a CLI that syncs and queries financial data from ZenMoney.

ZenMoney connects to Russian banks (Tinkoff, Sber, Alfa, etc.) and imports transactions automatically via SMS/push parsing on the user's phone. The `zm` CLI reads that data through the ZenMoney API.

## Commands

```
zm sync                   # Pull latest data (incremental)
zm sync --full            # Force full re-sync from scratch
zm accounts               # List accounts with balances and currency
zm accounts --all         # Include archived accounts
zm tx                     # Last 30 transactions
zm tx --limit N           # Last N transactions (0 = unlimited)
zm tx --from YYYY-MM-DD   # Start date filter
zm tx --to YYYY-MM-DD     # End date filter
zm tx --account "text"    # Filter by account name (case-insensitive substring)
zm tx --tag "text"        # Filter by category name (case-insensitive substring)
zm cats                   # List categories as a tree
zm summary                # Monthly income/expense/net + net worth (last 3 months)
zm summary --months N     # Last N months
```

## Workflow

1. **Sync first** — run `zm sync` before answering if you haven't synced this session.
2. **Compute** — the CLI outputs raw data. Sum totals, compute averages, compare periods, spot trends yourself.
3. **Combine commands** — a question like "how much did I spend on food in March?" needs `zm tx --tag "..." --from ... --to ... --limit 0`, then sum the outcome amounts.
4. **Transfers** — transactions with both income > 0 and outcome > 0 between different accounts are transfers, not income/expense. `zm summary` already handles this.
5. **Multi-currency** — accounts can be in different currencies (RUB, USD, USDT, etc.). The CURRENCY column in `zm accounts` shows which. `zm summary` converts to the user's base currency.

FAQ

Where do I get a token?

At zerro.app/token or via the OAuth2 flow described in the library section.

Are transfers between accounts handled?

zm summary does not count transfers as income or expense. The skill also tells the agent to recognize transfers in transaction lists.

A CLI and skill giving an agent access to a T-Investments account: portfolio, returns, bond screeners and confirmed orders

SkillHigh riskRussian stack44

Unofficial MCP server and skills for a personal T-Bank account: accounts, transfers, bill pay, tickets and groceries

MCP serverHigh riskRussian stack29