Answers to common questions about Ledgerly. If yours isn’t here, or something doesn’t work, write to me at coderoftime@gmail.com. My postal address and further contact details are in the legal notice (Impressum).
Ledgerly comes in two editions: the app for Android, iPhone, iPad and Mac, which is in development, and the web app you run on your own server, which works but isn’t published yet. Where the answers differ, they say which edition they mean. The app doesn’t connect to banks yet; where an answer describes its bank sync, that’s how it will work once it arrives.
Which banks work with Ledgerly?
German banks and Sparkassen that offer FinTS (also known as HBCI) with PIN/TAN. FinTS is the interface German banks provide for finance software, and Ledgerly uses it to talk to your bank directly, with no service in between.
To find out whether your bank offers it:
- Search for it when you connect a bank in Ledgerly. The search lists only banks whose FinTS access for PIN/TAN is in the official directory of the German banking industry. If your bank isn’t there, Ledgerly can’t connect it.
- Look in your online-banking settings or your bank’s help pages for “FinTS”, “HBCI” or “Finanzsoftware” (finance software). Some banks want you to switch on access for finance software there first.
To connect, you use your online-banking login: depending on your bank, a login name, a Legitimations-ID or your customer number.
Web app: whoever runs the server also needs a FinTS product registration from the German banking industry (Die Deutsche Kreditwirtschaft) and the bank directory that comes with it. Without the directory, the search finds no bank at all; without the registration, no bank can be connected.
Not every account at a bank is necessarily available over FinTS. If your bank provides no transactions for an account, Ledgerly can’t fetch them; keep it as a manual account instead.
Which TAN methods can I use?
Your bank decides which methods it offers you, and you pick one when you connect.
- App (bank sync comes in a later version): approval in your banking app (such as pushTAN), photoTAN and QR-code graphics, chipTAN with the flicker code shown on screen, and TANs you type in. Methods the app can’t handle aren’t offered.
- Web app: approval in your banking app (such as pushTAN), photoTAN and QR-code graphics, and TANs you type in. It can’t show the animated chipTAN flicker code, so if your TAN generator reads a flicker code, use another method your bank offers.
Is my PIN stored?
App: never. You enter your PIN each time you connect your bank or fetch new transactions. Ledgerly uses it for that connection only and saves it nowhere: not in your book, not in the device’s secure storage, not in a backup. That’s also why the app doesn’t sync in the background. Your login name is kept in the device’s secure storage, so you don’t have to set up your bank again each time.
Web app: only if you want it to. When you connect a bank, you can “Turn on auto-sync” (or tick “Remember my PIN” when you sync). Ledgerly then stores your PIN encrypted in the database on your server and fetches new transactions on its own during the day. Without auto-sync, it keeps your login name, encrypted, but not your PIN, and asks for your PIN at every sync. You can remove a stored PIN at any time: edit the account and choose “Forget stored PIN”.
Neither edition ever stores TANs.
Why does my bank keep asking for a TAN or an approval?
Your bank decides when to ask, not Ledgerly. Under the EU payment rules (PSD2), banks have to confirm it’s really you with a second factor: a TAN or an approval in the bank’s app. When you only look at balances and transactions, a bank may skip that check for a while: some ask at every login, others only every few months. So expect it when you connect a bank for the first time, and again whenever your bank’s interval runs out. Ledgerly can’t skip or switch off these checks.
Web app with auto-sync: if your bank wants an approval during a background sync, it sends the request to your banking app as usual, and Ledgerly waits up to five minutes. If you don’t approve in time, or the bank wants a TAN typed in, auto-sync pauses: the account shows “Auto-sync paused” and asks for your approval, and the list of accounts says “Approval needed”. Sync once yourself to give it, and auto-sync carries on.
What happens if I enter a wrong PIN?
After a few wrong PINs, your bank blocks your online banking; how many it allows is up to the bank. Ledgerly never tries a PIN again on its own once your bank has refused it, so it can’t lock you out through automatic retries.
In the web app, three more things matter:
- If your bank refuses a stored PIN, auto-sync pauses until a sync you start yourself works. Don’t just tap “Sync now” then: it sends the same stored PIN again. Enter the right PIN with “Update PIN” instead.
- If you change your PIN at your bank while auto-sync is on, edit the account in Ledgerly straight away, choose “Forget stored PIN” and switch “Sync automatically in the background” on again with the new PIN. Otherwise the next background sync tries the old PIN once.
- When you sync and your bank has refused two typed PINs for the same connection within an hour, Ledgerly sends no further typed PIN for that connection until the hour is up. This doesn’t cover connecting a bank, including “Connect again”, so take extra care there.
Every PIN your bank refuses counts there, whether you typed it in or Ledgerly sent a stored one. If you’re unsure, check your PIN before you try again. If your access is blocked, contact your bank: only the bank can unblock it, Ledgerly can’t. Afterwards, sync as usual with your PIN.
Where is my data, and do I need to sign up?
You don’t need to sign up with me for either edition, and nothing from Ledgerly is sent to me. There are no ads, no analytics and no tracking.
- App: your book is stored on your device, in the app’s private storage, and bank sync goes from your device directly to your bank. Ledgerly doesn’t encrypt the book itself; it relies on your device’s encryption, so please use a screen lock, and FileVault on a Mac.
- Web app: your book is in a database on the server it runs on, and bank sync goes from that server directly to your bank. You sign in with an email address and a password that whoever runs the server sets up; that user account exists only on that server, not with me. Everyone on the server has their own book. Your bank login name and any stored PIN are encrypted. Everything else, including the details your bank sends about your access (all your accounts there, the account holders’ names and a customer ID that is often the same as your login name), isn’t encrypted by Ledgerly and is protected by your server.
The privacy policy has the details for the app.
How do I back up my book?
Nothing from Ledgerly reaches me, so I can’t restore a lost book. Your own backups are what you can rely on.
- App: your device’s backups include your book, if you’ve turned them on: backup to your Google account on Android, iCloud Backup or a computer backup on iPhone and iPad, and Time Machine on the Mac. After a restore on Android, set up your bank connection again; its details can’t be read from a backup.
- Web app: back up the container’s data folder (
/data) while the container is stopped, as SQLite keeps extra files next to the database. Keep the server’s secrets key apart from these backups, and keep a copy of it somewhere safe: without it, stored login names and PINs can’t be read, and you’d have to connect your banks again. Your book itself doesn’t need the key.
How do I delete everything?
App: first remove your bank connections in Ledgerly. Then:
- Android: uninstall Ledgerly, or open “Settings” > “Apps” > “Ledgerly” > “Storage” and tap “Clear storage” (or “Clear data”; the names vary by device).
- iPhone and iPad: touch and hold the Ledgerly icon, then tap “Remove App” > “Delete App”. “Offload App” keeps your data.
- Mac: quit Ledgerly, move it to the Bin (or Trash) and delete its folder in
~/Library/Containers(in Finder: “Go” > “Go to Folder”; it may be shown as “Ledgerly”). Moving the app to the Bin alone doesn’t delete its data.
If you’ve already deleted the app on an iPhone, iPad or Mac without removing your bank connections, reinstall it, open it, remove any connection it still shows and delete the app again (on a Mac, with its folder). Copies in device backups stay until you delete them there; on Android, reinstalling may restore your book from the backup. I hold nothing from the app, so there’s nothing to delete on my side.
Web app: you can delete accounts with their transactions, as well as budgets, rules, recurring transactions and debts. When you delete or archive the last account of a bank connection, Ledgerly removes that connection with everything stored for it, including the login name and PIN. To remove everything, whoever runs the server deletes the container with its log, the data folder and its backups, and any copies of the log. That removes every book on the server: Ledgerly has no way yet to delete just one person’s book and sign-in.
App or web app: which should I choose?
- The app if you want Ledgerly on your phone or Mac with nothing to set up: no server, no sign-in, and the book stays on your device. You enter your PIN whenever you fetch transactions.
- The web app if you run a home server with Docker and want Ledgerly in any browser, on your computer and your phone; you can also install it as an app. Everyone in your household gets their own book, and bank sync can run in the background if you let Ledgerly store your PIN. It must be served over HTTPS.
Today the web app is the more complete edition. The app is catching up step by step: so far it has accounts and the dashboard; everything else, including bank sync, statistics and PDF reports, is still to come.
Can the app and the web app sync with each other?
No. They’re two separate editions of the same household book, with the same design but no shared data: the app keeps its book on your device and talks to no server but your bank’s, and the web app keeps its book on your server. There’s currently no way to move a book from one to the other either. If you use both, each connects to your bank on its own.
Which languages does Ledgerly speak, and is there a dark mode?
Both editions speak English and German.
- App: follows your device’s language and shows dates and amounts in your region’s format. On Android 13 and later, you can also choose a language just for Ledgerly under “App languages” in Android’s settings.
- Web app: starts in your browser’s language. Switch it in the sidebar under “Appearance” or, on a phone, under “More” > “Language”. Dates and amounts follow the language: British format in English, German format in German.
Light, dark or matching your system: choose it under “Appearance” in either edition.
When and where can I get Ledgerly?
- App: in development. It comes to Google Play first; iPhone, iPad and Mac follow later. Bank sync comes in a later version.
- Web app: already runs self-hosted, but isn’t published yet.
There are no dates yet. The project page shows the current status and will link to the store once the app is out.
Does Ledgerly cost anything, and is it open source?
Ledgerly is free, in both editions: no price, no subscription and no in-app purchases. The code of both will be published as open source when they’re released. The part that talks to your bank, fints, is open source already.
How do I report a bug?
Write to me at coderoftime@gmail.com. It helps to know:
- which edition, and your device and system version, or your browser,
- what you did, what you expected and what happened instead,
- for bank problems: your bank’s name, your TAN method and the exact message Ledgerly showed (such as “Your bank says: …”).
Screenshots help; please cover account numbers, names and amounts you’d rather not share.
Never send your PIN, TANs, login name or other online-banking details, not to me and not to anyone else. I’ll never ask for them.
How do I report a security problem?
If you think you’ve found a vulnerability in Ledgerly, please email me at coderoftime@gmail.com before you make it public, so I can fix it first. Describe what you found and how to reproduce it. The contact details for security reports are also in machine-readable form in security.txt.
Please don’t test with real bank logins or other people’s data, and don’t put PINs or TANs in your report either.