finance-tracker

Manage multi-currency personal finance ledgers with statement import and portfolio valuation.

Updated Jun 12, 2026
One-click install
npx skills add https://github.com/ssttkkl/finance-tracker --skill finance-tracker-ssttkkl
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: finance-tracker
Source: https://github.com/ssttkkl/finance-tracker
Command: npx skills add https://github.com/ssttkkl/finance-tracker --skill finance-tracker-ssttkkl

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? It consolidates spending, savings, and investments across multiple accounts and currencies into one auditable ledger, eliminating manual reconciliation of bank, payment platform, and brokerage statements. ## Core Features & Use Cases - Statement Import: Parse and import bills from Alipay, WeChat, ICBC, CCB, ICBC Asia, DFZQ, IBKR, Schwab, and uSmart with idempotent source_type × record_id deduplication and full batch rollback on failure. - Ledger & Relations: Record cash flows, balance calibrations, transfers, and investment events; review and confirm transaction relations such as refunds, transfer pairs, and cash-investment funding moves. - Portfolio Valuation: Query investment events and holdings with market quotes, cost fallback when quotes are missing, and Decimal-precision amounts throughout the HTTP API. - Use Case: Import a WeChat statement and an IBKR statement into the same workspace, confirm auto-suggested transfer pairings, then view unified cash projections and portfolio valuation via the Web or Expo client. ## Quick Start Set FT_DATABASE_URL to a PostgreSQL or SQLite database, run the Alembic migrations, start the FastAPI backend with uvicorn, and ask the assistant to import a statement file into your workspace.

Frequently Asked Questions about finance-tracker

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I import bank or payment statements into a finance ledger?

Use the cash-import API flow: select the file, let the system scan and identify the channel, confirm account mappings, preview rows, review relation suggestions, then confirm. Supported sources include Alipay, WeChat, ICBC, CCB, ICBC Asia, DFZQ, IBKR, Schwab, and uSmart.

How does statement import avoid duplicate records?

Import idempotency is keyed by source_type and record_id, so re-importing the same business row never publishes a duplicate. If parsing, mapping, account validation, or database writes fail, the entire batch rolls back.

Does it support both PostgreSQL and SQLite databases?

Yes, FT_DATABASE_URL explicitly selects either PostgreSQL or file-based SQLite, sharing the same application services and Alembic schema. There is no automatic fallback, dual-write, or implicit migration between backends.

Can I track investments and portfolio valuation alongside cash accounts?

Yes, investment events such as funding, trades, income, expenses, and snapshots are recorded in security or crypto accounts. Portfolio valuation uses market quotes with cost fallback when prices are unavailable, never fabricating market data.

Why are amounts sent as strings in the API?

Amounts, quantities, exchange rates, and costs use decimal strings in the HTTP contract to preserve exact precision. Floating-point financial values, non-finite numbers, and over-precision inputs are rejected.