← Back to moneytracker.uk

Help & Support

Answers to the most common questions about using MoneyTracker UK. Can't find what you need? Email testflight@moneytracker.uk.

Getting started

MoneyTracker UK has no account or sign-up of its own — install it and start tracking straight away. Manual entry and PDF statement import work for anyone aged 16+ with nothing to sign up for; linking a bank or using Spending Trends go further and require you to be 18+ (see Age & family sharing).

You can get early access right now through Apple's TestFlight beta programme, or join the waitlist to be emailed the moment we launch on the App Store.

Connecting a bank

Bank connections run through Lunch Flow, a third-party open banking data platform — not a service we operate. You sign in to (or create) your own Lunch Flow account and connect your bank directly on Lunch Flow's own site, in a secure in-app browser session. We never see or store your bank or Lunch Flow login credentials, and the connection is read-only.

Because it's your own Lunch Flow account, Lunch Flow bills you directly for the connection, separately from MoneyTracker UK — see lunchflow.app for their pricing.

Technical breakdown

For anyone who wants the detail behind "we never see your bank credentials," here's what actually happens, step by step:

  1. The app asks our backend for a Lunch Flow sign-in link, then opens it in a secure in-app browser session (Apple's ASWebAuthenticationSession). Our backend builds this URL but never sees you use it.
  2. You sign in to (or create) your Lunch Flow account and connect your bank entirely on Lunch Flow's own site, inside that browser session. Your bank and Lunch Flow credentials are typed into pages Lunch Flow controls — they never pass through our app or backend.
  3. Lunch Flow redirects back to the app with a one-time authorization code — not a usable credential on its own.
  4. The app sends that code to our backend, which exchanges it for an access token and refresh token using a server-side secret (client_secret) that can never be safely embedded in an app you could decompile. This token exchange is the only step that genuinely needs a server — our backend doesn't store the tokens afterwards, it just hands them straight back to your device.
  5. The app stores both tokens in the iOS Keychain, not in SwiftData — so unlike the rest of your data, they're never synced to iCloud and never touch our backend again in normal use.
  6. From then on, the app talks to Lunch Flow's own API directly using your access token to fetch accounts and transactions. Our backend isn't involved in that traffic at all.
  7. Lunch Flow access tokens expire hourly. When that happens, the app sends your refresh token to our backend, which — again statelessly — exchanges it for a fresh token pair and returns it; nothing is retained server-side.

Net effect: our backend only ever touches a short-lived authorization code or refresh token in transit, for the single moment it takes to exchange it — it has no database of bank connections and cannot read your transaction data.

Removing a linked bank

There's currently no per-account "unlink" button in the app itself. You can manage or remove individual connections directly through your own Lunch Flow account. To remove every bank connection from MoneyTracker UK at once, withdraw your age confirmation from your profile — this unlinks all bank-linked accounts (your manually entered data and transaction history aren't affected).

Importing a PDF statement

Prefer not to link a bank? Import a PDF bank statement instead — it's parsed entirely on your device using Apple's PDFKit, nothing is ever uploaded anywhere, and it's available to anyone 16+ with no account required. Pick which account to import into, choose a PDF, and the app scans it for transactions.

How the parsing works

There's no universal statement layout — every bank formats these differently — so rather than a template built for one specific bank, MoneyTracker UK uses a heuristic line-by-line parser: it reads the text out of the PDF, then scans each line for a date and an amount, taking whatever's left over as the description.

  1. The PDF's text is extracted page by page, entirely on-device — nothing is uploaded or sent anywhere.
  2. Each line is scanned for a date (common UK formats like 12/04/2026 or 12 Apr 2026) and an amount (£ figures, optionally with a DR/CR suffix or brackets for a negative).
  3. Whatever's left on the line after removing the date and amount becomes the transaction description.
  4. If the line has an explicit debit/credit marker — a leading "-", DR/CR, or brackets — the parser trusts it. If not, it guesses "money out" (most statement lines are debits) but flags the line as needing review.
  5. If a line has more than one amount-shaped number (for example a running balance column), the parser takes the first as the transaction amount and flags it as needing review too, since it can't be certain which figure is which without knowing that bank's exact layout.
  6. A category is guessed automatically from the description before you even see the review screen.

Review before anything is saved

None of this becomes a real transaction until you say so. Every parsed line lands on a review screen first, where you can: edit the description, tap the amount to flip it between money in and money out, change the suggested category, and switch each line on or off individually. Lines the parser wasn't confident about are sorted to the top and marked Review.

Duplicate protection

If you import the same statement twice, or an overlapping date range, any line that matches an existing transaction in that account by date and amount is automatically marked Already imported and switched off by default, so nothing gets double-counted.

Limitations

The parser only reads text-based PDFs — a statement that's actually a scanned image (a photo or scan saved as a PDF, with no selectable text) isn't supported yet and will show as "No transactions were recognised." And because every bank's layout is different, it won't be perfect for every statement — that's exactly why the review screen exists.

Budgets & bills

Spending is categorised automatically and measured against your budget as it comes in, whether it arrived through a linked bank or a PDF import. Recurring bills are spotted automatically so they don't catch you by surprise.

How budgets work

Budgets are set per category, per calendar month. When a new month starts, its category list and planned amounts are automatically rolled forward from the previous month, so you're not rebuilding your budget from scratch every four weeks — though this only copies the plan itself, it doesn't carry any unspent (or overspent) amount forward.

Spent and remaining figures aren't stored anywhere — they're calculated fresh from your actual transactions every time you open the app, so they're always up to date. Only money going out counts against a budget; transfers between your own accounts are excluded, so moving money to savings never looks like spending.

How recurring bills are detected

After every bank sync (and roughly once a day when you open the app), MoneyTracker UK scans your last 180 days of transactions — entirely on-device — grouping them by merchant name. A group becomes a recurring bill once it has at least 3 occurrences spaced at a consistent interval (weekly, fortnightly, monthly, quarterly, or annually, each with some tolerance) for a broadly consistent amount. From that pattern it works out an expected amount and a next due date. Transfers are excluded from this too, so a monthly credit card payment from your own current account isn't mistaken for a bill.

A brand new subscription's first charge won't qualify automatically — there isn't enough history yet — so you can also flag any transaction as recurring by hand and choose its cadence yourself. Manual and automatic detection share the same merchant matching, so hand-tagging one now won't create a duplicate if the automatic detector later catches the same pattern.

Net worth & goals

Your net worth is calculated automatically across every account you've added — linked or manual alike, mixed together with no separate handling either way.

How net worth is calculated

Every account is flagged as either an asset (current accounts, savings, investments) or a liability (credit cards, loans). Net worth is simply total assets minus total liabilities, and the breakdown screen shows both sides as one combined chart — sized by each account's balance, with liabilities kept distinguishable by a down-arrow icon and a negative amount rather than colour alone — plus a legend showing each account's exact balance and share of the total.

Any account can be individually excluded from this calculation — useful for something you're tracking but don't want counted, like a joint account or one you're just watching. Excluded accounts still show up everywhere else in the app; they're just left out of the net worth total and its breakdown.

How goals work

A goal is a target amount, optionally with a target date and an emoji, that you contribute towards yourself — contributions are entered manually, not pulled automatically from a linked account's balance, even if you associate a goal with one for reference. A goal is automatically marked Achieved once your contributions reach its target; you can also withdraw from a goal's progress the same way, by contributing a negative amount.

Privacy & your data

There's no server-side database — your accounts, transactions, budgets, goals, and net worth history live only on your device and sync between your own devices through your personal iCloud account. We can't see this data and couldn't hand it over even if asked. This section covers the practical picture; the Privacy Policy has the full legal detail.

Where your data actually lives

Everything is stored with Apple's SwiftData framework and synced through your own private iCloud database — not a shared or public one — so it only ever moves between devices signed in to your own iCloud account, encrypted in transit and at rest by Apple's infrastructure. The one deliberate exception is your Lunch Flow access and refresh tokens, which live in the iOS Keychain instead, specifically so they're never swept up into that iCloud sync (see Connecting a bank for the full flow).

What we hold ourselves

Almost nothing. The only personal data we hold on our own infrastructure is:

  • Your email address, but only if you join the waitlist or contact us directly.
  • Routine server request logs (IP address, timestamp, which endpoint was called) that our backend generates for every request like virtually any web server does — used only to diagnose problems and detect abuse, and automatically deleted after 7 days.

We don't have a copy of your financial data to lose, leak, or hand over, because it never reaches our servers in the first place.

Who else touches your data, and why

  • Lunch Flow — if you link a bank, directly with your own Lunch Flow account; see Connecting a bank.
  • Apple — for iCloud sync, and App Attest (verifying requests to our backend come from a genuine copy of the app, not a user account system).
  • Google Cloud Platform — hosts our backend and waitlist under Google's standard cloud data processing terms.

We don't use advertising trackers or analytics SDKs, and we don't sell or rent your data to anyone.

Your rights

Under UK GDPR, most of your rights are already in your own hands, since almost none of your data reaches us to begin with: your accounts, transactions, budgets, goals, and net worth are visible and editable in the app at all times, and deleting the app (or specific data within it) removes it from your device and, once sync catches up, from iCloud too. For anything we do hold — your waitlist email or backend logs — email dpa@moneytracker.uk to access, correct, or delete it.

Age & family sharing

MoneyTracker UK requires you to be 16 or over to use at all — backed by the App Store's own 16+ age rating rather than anything checked inside the app itself. Linking a bank and using Spending Trends go further and require you to be 18+, which is checked in-app, through Apple's Declared Age Range API.

How the 18+ check works

The first time you try to link a bank or open Spending Trends (or any time via Profile → Confirm Age), the app asks the operating system to share your declared age range and hands back one of three outcomes:

  • Verified — the OS confirms you're 18 or over. Apple shares a bucketed range, like "18-24" or "65+", never an exact birthdate — that's all we ever store, and only on your device.
  • Declined — you (or whoever controls the sharing prompt) chose not to share it. You can turn it on in Settings and try again whenever you're ready.
  • Blocked — the OS has confirmed you're under 18. This one's a firm stop, not something to dismiss past, since it means Apple has already told us the answer.

Family Sharing

If your device is part of a Family Sharing group, the declared age range can come from a parent or guardian's settings rather than a self-declaration — the app treats that exactly the same as any other response from the API, it doesn't know or care which case it was.

If you decline

Declining is a real, supported choice, not an error — and there's deliberately no self-declared fallback, like a checkbox saying "I confirm I'm 18". Bank linking is a genuine regulatory boundary, not a formality to click past. You can still use MoneyTracker UK fully with manual accounts, manually entered transactions, and PDF statement import; only live bank linking and Spending Trends stay unavailable until age sharing succeeds.

You can withdraw a previous confirmation at any time from your profile — see Removing a linked bank for what that does to any accounts you'd already linked.

TestFlight & troubleshooting

"Apple Intelligence isn't available"

Spending Trends needs a device that supports Apple Intelligence. If your device does support it but the feature still won't run, check that Apple Intelligence is turned on in Settings, and — if you've only just turned it on — give it a little while, since its on-device model can take some time to finish downloading the first time.

Bank link or refresh fails

A failed connection tells you exactly which step broke — getting a sign-in link, the Lunch Flow sign-in/consent screen itself, exchanging the code for tokens, refreshing an expired token, or fetching your accounts, balances, or transactions — rather than a generic "something went wrong". That message is automatically copied to your clipboard, so the most useful thing you can do is paste it straight into an email to us along with roughly when it happened.

One specific case resolves itself: if you see a message about the response "not matching this session", it just means the sign-in attempt timed out or was interrupted — simply try connecting again.

TestFlight beta issues

Beta software can be rough around the edges — see our Terms of Service for what that means. Installing through TestFlight rather than the App Store means Apple itself collects some information to run the programme — your email address (to invite you), install/update activity, and, if you choose to share them, crash logs and any feedback you submit through the TestFlight app — processed under Apple's own privacy policy, separately from anything described in Privacy & your data above. We only see feedback you choose to submit, not device-level diagnostics Apple gathers for its own purposes — so anything you'd like us to see directly is best sent straight to our email instead.

Contact us

Still stuck, or found a bug? Email testflight@moneytracker.uk and we'll get back to you. For data protection questions, use dpa@moneytracker.uk instead.