Free and open source · Windows, macOS, Linux
Koinkat is a desktop app for tracking accounts, budgets, and split expenses across currencies. It connects to European banks over PSD2 or works fully manually, and it stores everything in a SQLite database on your own computer. No account, no server, no telemetry.
Version 0.1.2 · Koinkat_0.1.2_x64-setup.exe · Koinkat_0.1.2_universal.dmg ·Koinkat_0.1.2_amd64.AppImage · deb, rpm and all files on the releases page
The macOS app is signed and notarized by Apple; the universal build runs on Intel and Apple Silicon. On Windows, the warning-free install is one command: winget install MarcoSburlino.Koinkat. The direct download is not code-signed yet, so Windows shows an unknown-publisher warning: why, and how to proceed.
Accounts, budgets, and analysis in one window, on your own data.
Every account keeps its own currency; net worth converts into the one chosen for the workspace, at the day's rates. Below it each budget shows how far through the month you are against its limit. The eye in the header blurs every value on screen. Try it.
Everything that moved, across accounts and currencies. Synced rows arrive with a suggested category (your own rules first, an MCC fallback behind them) and wait in Review until you confirm or correct them, which is how the rules learn. Transfers between your own accounts are one linked pair, fees are their own expense rows, and split expenses track who still owes what, including repayments that never touch a bank account.
Where the money went over a chosen period: by category, by account, in a single currency. Account colours carry through from the Dashboard into the chart, so a slice traces back to a card.
Months side by side, with recurring costs listed apart from the rest so fixed and variable spending do not blur together.
Recurring monthly limits, plus one-off envelopes for a trip or a large purchase that should not distort a normal month. Conversion happens per period, and the today tick shows pace rather than just a total.
Or type it yourself. Bank sync is optional.
Your bank
PSD2, read-only
Sync
Within PSD2 rate limits
Review inbox
Suggested category
Categorized
Rules learn from you
Each sync pulls new transactions into Review with a suggested category. Confirming them teaches Koinkat your categories.
Local-first
Your financial data lives in a SQLite database file on your own computer. There is no Koinkat server, no account with us, no sign-up, no telemetry, and no analytics. Nobody involved in this project can see your data.
The database is not encrypted at rest, which is covered in what Koinkat does not do, and in the security model.
Every outbound connection
"Local-first" does not mean the app never touches the internet. This is every connection the app itself makes, verifiable in the source:
api.enablebanking.com
Only if you link a bank, during linking and syncs
Fetches the balances and transactions you authorized, using your own Enable Banking application. Your banking password is entered on your bank's website, never in Koinkat.
cdn.jsdelivr.net / *.currency-api.pages.dev
On app start and before syncs
Downloads the day's public exchange-rate table before conversions run. The URL contains only the date: nothing about you, not even your chosen currency.
fonts.googleapis.com / fonts.gstatic.com
At app launch
A standard request for the app's three typefaces at launch. No app or financial data travels with it.
marcosburlino.github.io/koinkat-callback/
Only during bank linking, in your regular browser
Receives a one-time authorization code from your bank and hands it back to the app locally. A single static file, zero further requests. Its source is public.
Like every internet request, these servers see your IP address. Beyond this list the app contacts nothing: no update pings, no crash reporting, no tracking. Two independent controls keep its traffic to these hosts, the webview's content-security policy and the Tauri capability allowlist. Neither constrains the Rust dependency tree itself, so as in any native app a compromised crate could open a socket directly. Both lockfiles are in the repository so the dependency set can be audited.
Salary in one currency, rent in another, a card in a third. Koinkat treats that as the normal case: accounts keep their native currency, totals convert to yours, and budgets do the conversion per period.
Converted at daily rates

1 EUR = 7.4604 DKK
1 GBP = 1.1554 EUR
Converted at the day's public rate.
01
Download the build for your system. The install guide has the exact clicks for each OS, or you can build from source.
02
On first launch you enter a name. That is the whole "account": a label on your machine, not a login to anything. Each workspace is isolated, with its own accounts, categories, budgets and bank links.
03
Register your own free Enable Banking application, a one-time job of roughly 15 to 20 minutes walked through in the guide. Or skip it and enter transactions by hand; every feature except sync works without it.
The honest limits of the current release.
The install guide has the exact steps per OS, including the Windows warning-bypass clicks. v0.1.2 is the first public release; if something does not behave as documented, open an issue.
Version 0.1.2, free and GPL-3.0-or-later.
deb, rpm and checksums are on the releases page.
Windows
winget install MarcoSburlino.Koinkat
macOS
Koinkat_0.1.2_universal.dmg
Linux
Koinkat_0.1.2_amd64.AppImage
Install on Windows with no security warning
Koinkat is in the Windows Package Manager, built into Windows 10 and 11. Open PowerShell (press the Start key, type powershell, press Enter) and run this command; clicking it selects it, ready to copy:
winget install MarcoSburlino.Koinkat
winget downloads the installer from the official release and verifies it against the hash in Microsoft's community repository, so no SmartScreen warning appears. When it finishes, Koinkat is in the Start menu. Prefer a classic installer? Download Koinkat_0.1.2_x64-setup.exe - Windows will show an unknown-publisher warning, which is expected.