<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: daniel zheng</title>
    <description>The latest articles on DEV Community by daniel zheng (@danielzheng).</description>
    <link>https://dev.to/danielzheng</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201405%2Ffcd4b1d6-7c8f-41e3-ba6c-83fca0a90a84.png</url>
      <title>DEV Community: daniel zheng</title>
      <link>https://dev.to/danielzheng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danielzheng"/>
    <language>en</language>
    <item>
      <title>Why our expense app never asks for your bank password</title>
      <dc:creator>daniel zheng</dc:creator>
      <pubDate>Fri, 23 Oct 2026 01:32:46 +0000</pubDate>
      <link>https://dev.to/danielzheng/why-our-expense-app-never-asks-for-your-bank-password-3g32</link>
      <guid>https://dev.to/danielzheng/why-our-expense-app-never-asks-for-your-bank-password-3g32</guid>
      <description>&lt;p&gt;Open-banking fear is rational. Once an expense app asks for your bank username and password — or a deep “connect account” flow that feels the same — you are trusting that product with credentials you would not paste into a random form. Even when the pitch is convenience (“we sync everything”), the trade-off is clear: &lt;strong&gt;your ledger gains speed; your bank identity leaves the bank app.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Plenty of people still want less typing after every QR / UPI / Pix / wallet payment. Those two desires collide. So when we built Smart Notification Entry in &lt;strong&gt;Money Tracker&lt;/strong&gt;, we started from a hard line:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The app does not connect to bank logins. It never asks for your bank password.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is not a soft disclaimer buried in settings. It is the product shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we do instead of bank login
&lt;/h2&gt;

&lt;p&gt;Money Tracker is a bookkeeping and budget app (Android store name: &lt;em&gt;Money Tracker-Expense &amp;amp; Budget&lt;/em&gt;; iOS: &lt;em&gt;Money Tracker:Expense &amp;amp; Budget&lt;/em&gt;). Capture stays on your side of the fence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can type entries.&lt;/li&gt;
&lt;li&gt;You can use AI voice or receipt photo entry (results are editable before save).&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Android&lt;/strong&gt;, Premium users can optionally let the app watch &lt;strong&gt;transaction-style notifications&lt;/strong&gt; from other apps, draft a line, and wait for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those paths require handing over bank credentials. If you need verified bank sync as the core workflow, this is not that product — and we would rather say that upfront than blur the line.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-level: how Android notification bookkeeping works
&lt;/h2&gt;

&lt;p&gt;Android exposes a system permission called &lt;strong&gt;notification access&lt;/strong&gt;. With it, an app you choose can read the &lt;em&gt;text of notifications&lt;/em&gt; other apps post — the same banners you already see when a payment succeeds.&lt;/p&gt;

&lt;p&gt;Smart Notification Entry uses that surface, not a bank API and not a stored password:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You open &lt;strong&gt;Settings → Smart Notification Entry&lt;/strong&gt; (Premium) and turn the feature on.&lt;/li&gt;
&lt;li&gt;Android asks you to grant &lt;strong&gt;notification access&lt;/strong&gt; (so Money Tracker can monitor other apps’ alerts) and the app’s own &lt;strong&gt;notification permission&lt;/strong&gt; (so it can nudge you when something looks like a transaction).&lt;/li&gt;
&lt;li&gt;When another app posts a &lt;strong&gt;transaction-like&lt;/strong&gt; notification, Money Tracker can treat it as a &lt;strong&gt;draft candidate&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You review it — amount, category, and related fields — then confirm. Until you confirm, it is not meant to become permanent ledger history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At a product level, the pipeline is: &lt;strong&gt;notification text → draft → human confirm → save&lt;/strong&gt;. We are not documenting parser heuristics, vendor-specific reverse engineering, or a “supported bank list.” Payment apps and notification formats change; naming untested packages would be marketing fiction. The durable idea is simpler: &lt;strong&gt;reuse the alert you already got, then keep the human in the loop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can also put apps you do not want monitored on a &lt;strong&gt;blacklist&lt;/strong&gt;. After that, those apps’ transaction notifications are ignored, and any pending drafts from them are cleared. Remove them from the blacklist later if you change your mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Confirm-to-save is the privacy feature
&lt;/h2&gt;

&lt;p&gt;“Automatic expense tracking” demos love to skip the checkpoint. In a ledger, the checkpoint &lt;em&gt;is&lt;/em&gt; the feature.&lt;/p&gt;

&lt;p&gt;A wrong coffee is annoying. A wrong transfer amount — or a duplicate — is how trust dies. So the design default is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suspected transactions land in a &lt;strong&gt;pending / to-confirm&lt;/strong&gt; flow (you can open from the nudge, or process items in a list).&lt;/li&gt;
&lt;li&gt;You can confirm one by one or batch-confirm with “recognize and import.”&lt;/li&gt;
&lt;li&gt;Suspected duplicates are meant to force a confirmation path rather than silently stacking copies.&lt;/li&gt;
&lt;li&gt;Ignore is always available when the alert was not a spend you care about.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the same philosophy as AI voice and receipt entry elsewhere in the app: &lt;strong&gt;AI or automation may draft; you decide what becomes history.&lt;/strong&gt; Speed without a silent write.&lt;/p&gt;

&lt;p&gt;Important honesty for tech readers: this is &lt;strong&gt;not&lt;/strong&gt; silent full-statement import, &lt;strong&gt;not&lt;/strong&gt; open banking, and &lt;strong&gt;not&lt;/strong&gt; “set it and forget every line forever.” It is a lower-friction capture path for people who already get payment alerts on Android and are willing to tap Confirm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits (please read before you expect magic)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Boundary&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Android only&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;iOS has no Smart Notification Entry. iOS users should use manual entry, AI voice, or receipt capture instead.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Premium&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Notification bookkeeping is a membership feature. Free includes ads and core tracking; Premium removes ads and unlocks extras (including this on Android).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Confirm-oriented&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Treat it as draft-then-confirm, not “the app owns your bank.”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blacklist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You control which apps may be monitored.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;No bank password&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;We do not ask for one. Do not enter bank credentials into any expense app that should not have them — including ours.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Other Premium examples that often get mixed into “privacy” questions: app lock (PIN / biometrics), more books and accounts, unlimited AI entry after free trial limits, bill import, team books / share invites, and smart settle on AA. &lt;strong&gt;AA / split books can stay free&lt;/strong&gt; to create; team books, initiating share invites, and smart settle need Premium. Exact quotas can change by version — trust in-app copy over blog posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Short FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Money Tracker log into my bank?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. It does not use bank logins or bank passwords.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is notification entry “fully automatic”?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. On Android Premium it drafts from transaction-style notifications; you confirm before those drafts are treated as saved bookkeeping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I stop it from reading a specific app?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes — blacklist that app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why not just connect open banking everywhere?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Because many users in our markets want faster capture &lt;em&gt;without&lt;/em&gt; expanding the credential surface. Notification text + confirm is a deliberate smaller trust boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will every payment app’s alert parse perfectly?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Formats differ; noisy or non-transaction alerts exist; you can ignore or edit. We do not publish an unverified “works with every wallet” claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Worth a look if you pay from phone apps all day, already see payment notifications, refuse to type bank passwords into a budgeting tool, and will spend two seconds confirming a draft.&lt;/p&gt;

&lt;p&gt;Skip the notification path if you are on iOS only, need certified bank-sync as the center of the product, or want zero confirmation steps. The rest of Money Tracker still works without that feature.&lt;/p&gt;




&lt;p&gt;Product overview (same boundaries):&lt;br&gt;&lt;br&gt;
&lt;a href="https://money.quhou123.com/en/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_w1" rel="noopener noreferrer"&gt;https://money.quhou123.com/en/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=offsite_w1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stores: Google Play (&lt;em&gt;Money Tracker-Expense &amp;amp; Budget&lt;/em&gt;) · App Store (&lt;em&gt;Money Tracker:Expense &amp;amp; Budget&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I help build Money Tracker. This piece explains why we avoid bank-password flows and how Android notification drafts + confirm-to-save are meant to work — including the Premium / Android-only limits. Originally published on Hashnode; this is a cross-post with canonical URL set.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>privacy</category>
      <category>productivity</category>
      <category>fintech</category>
    </item>
  </channel>
</rss>
