Masareef (مصاريف, "expenses") is a fast, private, offline-first personal spending tracker — global and multi-currency — with wallets, budgets, insights, subscriptions, trips and a bank-notification auto-capture engine that logs spending by itself, even while the app is closed. Built with Expo SDK 57, React Native 0.86, a local SQLite source of truth, and last-write-wins sync against a Cloudflare Workers API. English and full Arabic with a right-to-left layout.
Masareef (مصاريف) is Egyptian Arabic for expenses. The goal: see where your money goes without the friction of most finance apps — log spending in seconds, let bank notifications fill in the rest, and never fight the tool.
Download
Masareef is live on Google Play — Android-first, global and multi-currency, in light and dark, and fully localized in Arabic with a right-to-left layout.
Privacy Policy · Delete your account
Screens
A tour of Masareef. Sixteen screens, covering every area of the app.
| Home | Activity |
|---|---|
![]() |
![]() |
| Auto-track | How it works |
![]() |
![]() |
| Where it went | Trends |
![]() |
![]() |
| Budgets | Cash flow |
![]() |
![]() |
| Nearby ATMs | Wallets |
![]() |
![]() |
| Quick add | Add |
![]() |
![]() |
| Subscriptions | Recurring |
![]() |
![]() |
| Worth a look | Habits |
![]() |
![]() |
Why Masareef
Most finance apps make you fight for every entry, then ask you to trust the cloud with your raw transactions. Masareef flips both: logging is a couple of taps, your bank's own notifications do the data entry, and everything lives on your device first.
- Offline-first, instant — a local SQLite database is the single source of truth, so every read and write is immediate and works with no signal. Cloud sync is a best-effort background reconciler, never a blocker.
- Auto-capture, not auto-trust — Masareef parses a bank notification or SMS into amount, merchant, bank, card tail and reference, and lands it in a review queue. High-confidence captures can post on their own with one-tap undo; nothing else touches a balance until you confirm.
- Privacy by design — an optional app lock, hidden contents in the app switcher, a one-tap Hide balances mask, and analytics that never carry amounts, merchants, or balances — structural events only.
- Polished in light & dark, English & Arabic — a "Slate Teal" identity in both themes, and a full right-to-left layout where every screen mirrors.
Features
Automatic spending capture
- A notification-listener bridge (Play-safe) plus an optional SMS parser reads payment alerts from banks and wallets across many countries
- Card payments, transfers, top-ups, ATM withdrawals and incoming money, each routed to the right wallet by name
- Keeps capturing while the app is closed — a headless task can parse, accept and notify with nothing on screen
- Recovers alerts Android redacts or hides, in every language, and says why a message went to review instead of posting
- A bank-only allowlist gate plus word-bounded Arabic-aware matching, so an OTP, a promo, or a customer named مبروك never becomes (or deletes) a transaction
- Reference-based dedupe: one bank SMS relayed by three apps is one transaction, not three
- Learns merchant → category rules as you confirm, and auto-categorizes on the next match
Banks and wallets it reads
130 institutions across four groups, matched by their own notification wording in Arabic and English. Masareef is an independent app: it is not affiliated with or endorsed by any institution named here, and it never asks for a banking password.
Egypt (62) — National Bank of Egypt · البنك الاهلي, Banque Misr · بنك مصر, Commercial International Bank · التجاري الدولي, QNB Alahli · كيو ان بي, Banque du Caire · بنك القاهرة, Arab African International Bank · العربي الأفريقي, Bank of Alexandria · بنك الاسكندرية, HSBC Egypt · اتش اس بي سي, Crédit Agricole Egypt · كريدي اجريكول, ADIB Egypt · مصرف أبوظبي الإسلامي, Faisal Islamic Bank of Egypt · بنك فيصل, Al Baraka Bank Egypt · البركة, Housing & Development Bank · بنك التعمير والاسكان, Egyptian Gulf Bank · البنك المصري الخليجي, Al Ahli Bank of Kuwait – Egypt · البنك الأهلي الكويتي, National Bank of Kuwait – Egypt · بنك الكويت الوطني, SAIB Bank · المصرف العربي الدولي, Emirates NBD Egypt · بنك الامارات دبي الوطني, Mashreq Bank Egypt · بنك المشرق, Attijariwafa Bank Egypt · التجاري وفا بنك, Suez Canal Bank · بنك قناة السويس, aiBANK (Bank NXT) · المصرف العربي للاستثمار, Bank ABC Egypt · بنك المؤسسة العربية المصرفية, Industrial Development Bank · بنك التنمية الصناعية, Export Development Bank of Egypt · البنك المصري لتنمية الصادرات, Agricultural Bank of Egypt · البنك الزراعي المصري, ADCB Egypt · بنك أبوظبي التجاري, First Abu Dhabi Bank Egypt (FABMISR) · بنك أبوظبي الأول, Kuwait Finance House Egypt · بيت التمويل الكويتي, Arab International Bank · البنك العربي الدولي, The United Bank · البنك المتحد, Arab Bank · البنك العربي, Vodafone Cash · فودافون كاش, Orange Cash · اورنج كاش, e& Cash · اتصالات كاش, WE Pay · المصرية للاتصالات, NBE PhoneCash · فون كاش, BM Wallet · محفظة بنك مصر, InstaPay · تحويل لحظي, Fawry · فوري, ValU · فاليو, Telda · تيلدا, Contact · كونتكت, Premium Card · بريميوم كارد, MNT-Halan · حالان, Khazna · خزنة, Kashat · كشات, OPay Egypt · او باي, Damen Cash · ضامن كاش, NowPay, Sympl, Blnk, Aman, Lucky, Basata (Bee) · بسطة, Meeza · ميزة, Money Fellows · موني فيلوز, Kiwe, Sahl, MIDBANK · بنك مصر ايران للتنمية, Egyptian Arab Land Bank · البنك العقاري المصري العربي, Nasser Social Bank · بنك ناصر الاجتماعي.
Saudi Arabia (8) — Al Rajhi Bank · الراجحي, Saudi National Bank · البنك الأهلي السعودي, Riyad Bank · بنك الرياض, Saudi Awwal Bank · البنك السعودي الأول, Alinma Bank · مصرف الإنماء, Bank Albilad · بنك البلاد, Arab National Bank · البنك العربي الوطني, STC Pay · اس تي سي باي.
United Arab Emirates (6) — Emirates NBD · بنك الإمارات دبي الوطني, Abu Dhabi Commercial Bank · بنك أبوظبي التجاري, First Abu Dhabi Bank · بنك أبوظبي الأول, Mashreq · بنك المشرق, Dubai Islamic Bank · بنك دبي الإسلامي, Abu Dhabi Islamic Bank · مصرف أبوظبي الإسلامي.
Global banks, cards and wallets (54) — Wise, PayPal, Revolut, Payoneer, Skrill, Cash App, Venmo, Zelle, Chime, Google Pay, Paytm, PhonePe, Alipay, WeChat Pay, Nubank, Monzo, Starling Bank, N26, Chase, Bank of America, Wells Fargo, Citibank, Capital One, U.S. Bank, PNC Bank, TD Bank, American Express, Discover, RBC Royal Bank, TD Canada Trust, HSBC, Barclays, Lloyds Bank, NatWest, Halifax, Santander, Deutsche Bank, Commerzbank, BNP Paribas, Société Générale, ING, UniCredit, QNB · بنك قطر الوطني, National Bank of Kuwait · بنك الكويت الوطني, Kuwait Finance House · بيت التمويل الكويتي, Boubyan Bank · بنك بوبيان, RAKBANK · بنك رأس الخيمة الوطني, Commercial Bank of Dubai · بنك دبي التجاري, Emirates Islamic · الإمارات الإسلامي, Bank Muscat · بنك مسقط, HDFC Bank, ICICI Bank, State Bank of India, Axis Bank.
If a bank is missing, send the wording of one of its alerts and it gets added.
Add in seconds
- A purpose-built numpad with categories, wallets, notes and any date, for expense, income or transfer
- Or just type it: "spent 250 coffee", in English or Arabic, posts instantly
- Reply straight from the notification to log without opening the app; paste or share a bank message in; attach a receipt photo
- Money is stored as integer minor units end to end — never floats — and rendered through one formatting path
Wallets & multi-currency
- Cash, bank accounts, cards and mobile wallets side by side, each with its own balance, colour and history
- Pick any country and currency and the app adapts symbols, formatting and the banks it recognizes
- Net worth across every wallet, with a trend for recent months
- Count your cash reconciles the notes in your pocket; balance check compares your bank's own figure and shows the drift
Budgets & planning
- Per-category monthly limits with on-track, near-limit and over states, and optional alerts before one tips over
- A monthly spending target that answers what is safe to spend today
- Cash flow that answers whether the balance lasts to payday, not just to month end
- A coming up list of everything scheduled in the next 30 days
Subscriptions, bills & debts
- Subscriptions detected from your own history, with brand logos and yearly cost; overdue and price-raised ones flagged
- Recurring rent, salary and bills that post on schedule, with catch-up, pause and skip
- Planned one-off income or expense held pending until you confirm it
- Debts you owe or are owed, and savings goals
Insights
- Where it went: a donut ranking every category, tappable straight through to its transactions
- Income vs. expense over six months, this month vs. last, and your biggest movers
- Spending calendar heatmap, day-of-week and time-of-day patterns
- Savings rate, financial health, and the share of spending that logged itself
- Price creep on your regular buys, no-spend streaks, top merchants, and a shareable money-story recap
Catch mistakes
- Double charges — the same amount hitting the same merchant twice
- Refunds matched back to the purchase they reversed
- Charges above what a merchant normally costs you
Trips & ATMs
- Track a trip in its own currency and exchange rate, without polluting your normal months
- Find cash machines around you on a map or list, sorted by distance, filtered by bank or exchange (keyless Overpass)
Backup & sync
- Sign in and your wallets, transactions, budgets, categories and trips follow you to a new phone
- Fully offline-first: edits happen locally and instantly, then reconcile in the background (last-write-wins by timestamp)
- Two clocks kept separate — a client clock decides who wins, a server cursor decides what's new — so sync is immune to device clock skew; deletes propagate as tombstones and the network layer never throws
- CSV export and a full JSON backup/restore (file pick, paste, or share intent)
How it's built
Offline-first by design: the local SQLite database is the single source of truth for the UI, so every read and write is instant and works with no signal. Derived answers — totals, pace, runway, habits — come from a dedicated ledger layer that returns answers rather than rows, so no screen recomputes the same aggregate twice.
Cloud sync runs as a best-effort background reconciler against a Cloudflare Workers API (Hono + Drizzle over Neon Postgres, with D1 for the small hot tables): local changes are flagged and pushed, remote changes pulled page by page, and conflicts resolve last-write-wins by timestamp. Session lives in SecureStore via better-auth + @better-auth/expo, and key derivation runs on the device.
Auto-track is the part that can silently lose money, so it is the most defended piece of the app: a durable native spool that survives the process being killed, a bank-only allowlist, word-bounded matching for the Arabic drop markers, reference-based dedupe, and a trace log that records why any message was dropped or held.
Tech stack
| Layer | Choice |
|---|---|
| Framework | Expo SDK 57 + Expo Router (typed routes, declarative auth guards) |
| Runtime | React Native 0.86 / React 19, React Compiler enabled |
| Language | TypeScript, strict mode |
| UI | NativeWind 4 (Tailwind) + a dual light/dark palette (usePalette()) |
| Client state | Zustand, persisted to MMKV |
| Local data | expo-sqlite — source of truth, offline-first |
| Cloud sync | custom last-write-wins engine over a typed pull/push contract |
| Backend | Cloudflare Workers + Hono + Drizzle · Neon (Postgres) + D1 |
| Server state | TanStack Query |
| Auth | better-auth + @better-auth/expo (session in SecureStore, Google Sign-In) |
| Auto-track | notification-listener bridge (Play-safe) + SMS parser + native spool |
| Maps | MapLibre + keyless Overpass for the ATM finder |
| Animation | react-native-reanimated · SVG via react-native-svg |
| Icons | lucide-react-native |
| i18n | i18next / react-i18next — English + Arabic with RTL |
| Analytics | PostHog (privacy-safe — no amounts, merchants, or balances) |
Non-negotiables
- Offline-first. The local SQLite DB is the source of truth; the app is fully usable with no connection and sync is never a blocker.
- Money is integer minor units. Never floats, end to end — one formatting path renders every amount.
- Auto-capture never silently loses a transaction. A dropped capture is the one outcome a user can't recover, so every drop rule is word-bounded, traced, and covered by a "never miss a real transaction" test.
- Analytics carry no financial data. Structural events only — never amounts, merchants, or balances.

















