Money Lover - Money Manager is Finsify's personal-finance app for tracking cash, bank and credit-card spending across multiple wallets. Users can record income and expenses, organize transactions with categories and labels, set repeating budgets, track savings goals, scan receipts and share a family wallet. Linked Wallets connect bank accounts through Finsify, while Google Sheets export and AI-assisted transaction entry support day-to-day bookkeeping. The app serves individual budgeters, households and small teams in Vietnam, the United States, India, Indonesia, Thailand and the Philippines who want a combined cash-and-card ledger rather than a single bank's account view.
Wallet ownership and category-linked spending form a connected personal-finance ledger: account_id links booked rows to a wallet, while balance, account_type, is_shared and owner_id describe its balance and access context. Transaction records add display_date, amount, note, cat_id and original_currency. Budget envelopes connect listWalletUUID and listLabelUUID to startDate, endDate and totalSpent, allowing a household budgeting dashboard to compare spending with each envelope's cap. Savings records pair goal_amount with transaction_amount and end_date for progress reporting.
Linked-bank snapshots carry accountId, balance and currency, with provider countryCode supporting market filtering. Receipt suggestions contribute merchant, displayDate, categoryId and confidence; text-based entry suggestions use walletID, labelName and fn to place a proposed expense in the ledger. With user-authorized account access, bookkeeping tools can reconcile local wallets against linked-bank balances, family-ledger integrations can preserve ownership and permissions, and receipt inboxes can prepare entries for confirmation. openData Studio turns these wallet, budget and transaction structures into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Pull synced wallets
POST
/v1/household-books/wallets/queryopenfinancePages the signed-in user's cash, bank and credit wallets after last_update, supplying names, balances and sharing flags for the wallet list.
Auth: Bearer access token for the signed-in account. Wallet synchronization also includes dataformat, platform, appversion and apiversion headers.
- uuid
- name
- balance
- account_type
- icon
- archived
- is_shared
- owner_id
- metadata
- exclude_total
- account_id
- last_update
POST /v1/household-books/wallets/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0, "account_id": "example_wallet_01", "skip": 0, "limit": 50, "av": 4, "pl": 1 }{ "status": true, "data": [ { "uuid": "example_wallet_01", "name": "Cash", "balance": 1250000, "account_type": 0, "icon": "icon_cash", "archived": 0, "is_shared": 0, "owner_id": "example_owner_01", "metadata": "", "exclude_total": 0 } ] }Pull synced transactions
POST
/v1/household-books/entries/queryopenfinancePages a wallet's ledger after last_update using skip and limit, including amount, display_date, note, category and original_currency.
Auth: Bearer access token for the signed-in account.
- uuid
- account_id
- amount
- display_date
- note
- cat_id
- original_currency
- exclude_report
- address
- latitude
- longtitude
- flag
- remind_date
- user_sync_id
- last_update
- skip
- limit
POST /v1/household-books/entries/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0, "account_id": "example_wallet_01", "skip": 0, "limit": 100, "av": 4, "pl": 1 }{ "status": true, "data": [ { "uuid": "example_entry_01", "account_id": "example_wallet_01", "amount": 45000, "display_date": 1737475200000, "note": "Lunch", "cat_id": 12, "original_currency": "VND", "exclude_report": 0, "address": "District 1, HCMC", "latitude": 10.7769, "longtitude": 106.7009, "flag": 1, "remind_date": 0, "user_sync_id": "example_owner_01" } ] }Push local transactions
POST
/v1/household-books/entries/submitopenfinanceSubmits newly created or edited ledger rows so the same account's other devices receive matching amounts, dates and categories.
Auth: Bearer access token for the signed-in account.
- account_id
- uuid
- amount
- display_date
- note
- cat_id
- original_currency
- exclude_report
- status
- message
POST /v1/household-books/entries/submit HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "account_id": "example_wallet_01", "transactions": [ { "uuid": "example_entry_01", "amount": 45000, "display_date": 1737475200000, "note": "Lunch", "cat_id": 12, "original_currency": "VND", "exclude_report": 0 } ] }{ "status": true, "message": "ok", "pushed": 1 }Pull synced budgets
POST
/v1/spending-envelopes/queryopendataRetrieves budget envelopes with wallet and label UUID lists, period dates and totalSpent so remaining spending allowance can be calculated.
Auth: Bearer access token for the signed-in account.
- uuid
- name
- amount
- startDate
- endDate
- curId
- isRepeat
- budgetType
- listWalletUUID
- listLabelUUID
- totalSpent
POST /v1/spending-envelopes/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0, "skip": 0, "limit": 50 }{ "status": true, "data": [ { "uuid": "example_budget_01", "name": "Food", "amount": 3000000, "startDate": "2026-10-01", "endDate": "2026-10-31", "curId": 1, "isRepeat": true, "budgetType": 1, "listWalletUUID": ["example_wallet_01"], "listLabelUUID": ["example_label_food"], "totalSpent": 1280000 } ] }Create global budget
POST
/v1/spending-envelopes/createopendataCreates a budget envelope spanning selected wallets and labels, with a spending cap, period dates and optional repetition.
Auth: Bearer access token for the signed-in account.
- status
- uuid
- name
- amount
- startDate
- endDate
- curId
- isRepeat
- budgetType
- listWalletUUID
- listLabelUUID
- totalSpent
POST /v1/spending-envelopes/create HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "name": "Food", "amount": 3000000, "startDate": "2026-10-01", "endDate": "2026-10-31", "curId": 1, "isRepeat": true, "budgetType": 1, "listWalletUUID": ["example_wallet_01"], "listLabelUUID": ["example_label_food"] }{ "status": 200, "data": { "uuid": "example_budget_01", "name": "Food", "amount": 3000000, "startDate": "2026-10-01", "endDate": "2026-10-31", "curId": 1, "isRepeat": true, "budgetType": 1, "listWalletUUID": ["example_wallet_01"], "listLabelUUID": ["example_label_food"], "totalSpent": 0 } }Pull synced categories
POST
/v1/household-books/category-tree/queryopendataSynchronizes per-wallet income and expense categories, including parent_id hierarchies, icons and meta_data flags.
Auth: Bearer access token for the signed-in account.
- uuid
- cat_id
- cat_name
- cat_type
- cat_img
- parent_id
- account_id
- meta_data
- flag
- version
POST /v1/household-books/category-tree/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0, "account_id": "example_wallet_01" }{ "status": true, "data": [ { "uuid": "example_category_food", "cat_id": 12, "cat_name": "Food", "cat_type": 2, "cat_img": "icon_food", "parent_id": 0, "account_id": "example_wallet_01", "meta_data": "", "flag": 1, "version": 3 } ] }Pull synced labels
POST
/v1/household-books/label-library/queryopendataRetrieves the global label library used to organize and map categories across wallets.
Auth: Bearer access token for the signed-in account.
- status
- timestamp
- uuid
- name
- type
- img
- parent_id
- meta_data
- version
- account_id
POST /v1/household-books/label-library/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0 }{ "status": true, "timestamp": 1737500000000, "data": [ { "uuid": "example_label_food", "name": "Food", "type": 2, "img": "icon_food", "parent_id": 0, "meta_data": "", "version": 1, "account_id": 0 } ] }Pull savings campaigns
POST
/v1/savings-targets/queryopendataSynchronizes savings and event campaigns with goal_amount, transaction_amount and end_date for progress tracking.
Auth: Bearer access token for the signed-in account.
- uuid
- name
- icon
- type
- start_amount
- goal_amount
- status
- transaction_amount
- account_id
- account_name
- cur_code
- end_date
POST /v1/savings-targets/query HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "last_update": 0 }{ "status": true, "data": [ { "uuid": "example_goal_01", "name": "Emergency fund", "icon": "icon_saving", "type": 1, "start_amount": 0, "goal_amount": 20000000, "status": 1, "transaction_amount": 3500000, "account_id": "example_wallet_01", "account_name": "Cash", "cur_code": "VND", "end_date": "2026-12-31" } ] }List linked-wallet bank providers
GET
/v1/bank-connections/provider-catalogopenbankingLists bank providers available to Linked Wallets, including names, icons and countryCode for market filtering.
Auth: Bearer access token for the signed-in account.
- status
- id
- name
- icon
- countryCode
GET /v1/bank-connections/provider-catalog HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "status": 200, "data": [ { "id": "vcb", "name": "Vietcombank", "icon": "/illustrations/banks/example-provider.svg", "countryCode": "VN" } ] }Create linked-wallet connect URL
POST
/v1/bank-connections/sessions/createopenbankingStarts a bank-connection session for the selected provider and returns linkUrl for user authorization before retrieving a wallet snapshot.
Auth: Bearer access token for the signed-in account.
- status
- linkUrl
- providerId
- callbackUrl
POST /v1/bank-connections/sessions/create HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "providerId": "vcb", "callbackUrl": "<callback_url>" }{ "status": 200, "data": { "linkUrl": "<bank_connect_url>" } }Read linked-wallet info
POST
/v1/bank-connections/balance-snapshotopenbankingRetrieves a linked bank account's balance, currency and account metadata after user authorization to initialize a wallet.
Auth: Bearer access token for the signed-in account.
- status
- id
- name
- accountId
- balance
- currency
- icon
- metadata
POST /v1/bank-connections/balance-snapshot HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "accountId": "example_bank_account_01" }{ "status": 200, "data": { "id": "example_linked_wallet_01", "name": "Vietcombank *1234", "accountId": "example_bank_account_01", "balance": 15230000, "currency": "VND", "icon": "vcb", "metadata": "{\"provider\":\"vcb\"}" } }AI parse transaction text
POST
/v1/entry-assistance/text/prepareopendataConverts free-text spending or a notification snippet into a suggested ledger entry with wallet, label, amount and date for user confirmation.
Auth: Bearer access token for the signed-in account.
- status
- walletID
- walletName
- labelID
- labelName
- amount
- date
- description
- fn
- tokenOut
- tokenIn
- totalTokens
- aiModel
- requestId
POST /v1/entry-assistance/text/prepare HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "text": "lunch 45k at Circle K yesterday", "walletID": "example_wallet_01" }{ "status": 200, "data": { "transactions": [ { "walletID": "example_wallet_01", "walletName": "Cash", "labelID": "example_label_food", "labelName": "Food", "amount": 45000, "date": "2026-10-22", "description": "Circle K lunch", "fn": "expense" } ], "metadata": { "tokenOut": 80, "tokenIn": 24, "totalTokens": 104, "aiModel": "<illustrative_model>", "requestId": "example_request_01" } } }Share wallet with family member
POST
/v1/household-books/members/inviteopendataInvites another account to a family wallet with a selected permission and returns sharing flags, ownership and pending invitations.
Auth: Bearer access token for the signed-in account.
- account_id
- permission
- is_shared
- owner_id
- pending
- status
POST /v1/household-books/members/invite HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "account_id": "example_wallet_01", "email": "<invitee_email>", "permission": "edit" }{ "status": true, "data": { "account_id": "example_wallet_01", "is_shared": 1, "owner_id": "example_owner_01", "pending": [ { "email": "<invitee_email>", "permission": "edit" } ] } }Upload receipt for OCR suggest
POST
/v1/entry-assistance/receipts/prepareopendataUses receipt text to suggest amount, merchant, displayDate and categoryId, together with confidence and currency, to prefill a ledger entry.
Auth: Bearer access token for the signed-in account. Receipt requests also include dataformat=json, platform, appversion, apiversion and client headers.
- ocrText
- walletCurrency
- inputSource
- status
- generationID
- amount
- categoryId
- displayDate
- note
- merchant
- originalCurrency
- confidence
- address
- isTransfer
POST /v1/entry-assistance/receipts/prepare HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "ocrText": "CIRCLE K\n22/10/2026\nTOTAL 45,000 VND", "walletCurrency": "VND", "inputSource": "camera", "categories": [ {"id": "example_label_food", "name": "Food"} ] }{ "status": true, "generationID": "example_receipt_01", "data": { "amount": 45000, "categoryId": "example_label_food", "displayDate": "2026-10-22", "note": "Circle K", "merchant": "CIRCLE K", "originalCurrency": "VND", "confidence": 0.92, "address": "", "isTransfer": false } }
Data categories
- wallets
- transactions
- budgets
- categories
- labels
- savings-campaigns
- linked-bank-accounts
- shared-wallets
- receipts
Where teams use this data
Household envelope dashboard
A personal-finance dashboard combines budget envelopes (amount, startDate, endDate, listWalletUUID, totalSpent) with ledger rows (display_date, amount, cat_id, original_currency) to chart remaining spending allowance per label.
Linked-bank cash reconciliation
A bookkeeping bot lists bank providers (id, countryCode), stores authorized linked-wallet snapshots (accountId, balance, currency), and compares those balances with local cash and bank wallets.
Shared family ledger sync
A household wiki uses family-wallet invitations (email, permission, owner_id, is_shared) and paginated ledger entries for the selected account_id so both phones show matching notes and amounts.
Receipt inbox to ledger
An email-receipt worker supplies ocrText and prepares an entry from the suggested merchant, amount, displayDate and categoryId; notification text can instead produce walletID, labelName and fn for user confirmation.
Frequently asked questions
What wallet and ledger fields are represented in the Money Lover data API?
Wallet records include uuid, name, balance, account_type, is_shared and owner_id. Ledger entries include amount, display_date, note, cat_id, original_currency and exclude_report, with optional address and location fields. The examples use illustrative paths and mock values, not live service addresses.
How do Linked Wallets connect bank balances to a personal ledger?
The provider catalog includes id, name and countryCode. A user-authorized connection supplies a linkUrl and a linked-wallet snapshot with accountId, balance, currency and metadata. Bookkeeping integrations can compare that snapshot with cash and bank wallets belonging to the same user.
Which fields support budgets, savings goals and receipt entry?
Budgets use listWalletUUID, listLabelUUID, amount, startDate, endDate and totalSpent. Savings goals use goal_amount, transaction_amount and end_date. Receipt suggestions include merchant, amount, displayDate, categoryId and confidence, while text-entry suggestions include walletID, labelName, date and fn.
How are account data and shared-wallet permissions protected?
The illustrated requests retain Bearer-token authentication for the signed-in account. Wallet records distinguish owner_id and is_shared, and invitations include email, permission and pending status. Access to personal balances, ledger entries and bank connections requires the account holder's authorization; the examples contain no usable credentials.
Apps similar to Money Lover - Money Manager
- Wallet: Budget Expense Tracker — Wallet by BudgetBakers is a personal-finance app that tracks expenses, syncs transactions with banks, sets budgets, and lets households share selected accounts.
- Spendee — Spendee is a money-management app that tracks income and expenses across cash, bank accounts, e-wallets and crypto wallets, with bank imports, category budgets and shared wallets.
- YNAB — YNAB (You Need A Budget) is a personal-finance app for iOS, Android and the web that helps people plan spending before they buy, track account balances and expenses, and share a subscription with household members.
- Monefy — Monefy is a personal-finance and expense tracker that logs purchases, supports more than 150 currencies, and can sync budgets with a partner across iOS and Android.
- Toshl Finance — Toshl Finance is a personal-finance app for Android, iOS and the web that charts expenses, sets budgets, monitors income, supports multiple currencies and can connect bank accounts.
- Goodbudget — Goodbudget is a home-budget app for the web, Android and iPhone that uses virtual envelope budgeting so households can track spending and share envelopes.
- AndroMoney — AndroMoney is a personal-finance app for Android, iPhone and the web that tracks expenses, income and transfers, with monthly and category budgets plus overspending alerts.
Topics
- Money Lover data API
- Money Lover wallets
- Finsify linked wallet
- expense tracker transactions
- Money Lover budgets
- Money Lover savings goals
- receipt OCR merchant fields
- shared family ledger
- linked bank balance reconciliation
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use