ListBelanja
Import a bank statement: spending, rent received & client payments — never counted twice
Parking, tolls, subscriptions, DuitNow transfers — a lot of spending has no receipt. Import your monthly statement and ListBelanja works out the columns itself (any bank), recognises lines that already have a receipt, suggests categories and adds the rest to your budget in one tap. Have a rental or clients? A tenant's DuitNow rent and incoming payments are recorded straight into your side-income source.
No credit card · BM, English & 中文 · your records live in the cloud, not on one phone
Updated
Spreadsheet feed, webhooks & OFX/QIF/CAMT import
Besides CSV, Excel and PDF, statement import now accepts OFX, QFX, QIF and CAMT.053 files downloaded from banks or other finance apps — the format is recognised from the file content (even when named .txt), reversed entries are flipped and duplicates removed before the rows go through the same statement parser. For spreadsheet lovers, More › Feed & webhooks gives a secret CSV link for transactions, budget or net worth that can be pulled into a spreadsheet with the IMPORTDATA formula or Get Data from Web — the token is shown once, stored only as a hash and can be revoked at any time. HMAC SHA-256 signed webhooks send transaction-created, receipt-processed and budget-alert events to your automation tools, with retries, a delivery log and protection against internal addresses.
How to import
- Download the statement as CSV from your bank, card or e-wallet app (most offer it under Statements / Export).
- In ListBelanja: Financial analysis → Import statement → pick the file. Delimiter, dates (day first), debit/credit columns and balance are detected from the values — no settings.
- Check the preview: lines matching a receipt (same amount, ± 3 days) or an existing cash expense are skipped. Each line picks a destination — personal spending, an income source's expense (allowable category suggested) or, for money in, one of your sources; "Apply to similar rows" fills matching lines at once.
- Import — personal spending goes into that month's budget; source expenses & money in go into Side income (Form B / HK-4). Your choices are remembered for the next statement.
Landlords & freelancers: rent and client payments
Rent your tenant pays by DuitNow is recognised from the tenant's name in your rental source or from past imports, and recorded as that property's rent received; an amount equal to the monthly rent is suggested for you to confirm. Assessment, quit rent, fire insurance, JMB fees or repairs get an allowable rental category; renovation and loan principal are marked non-deductible. An outgoing line that matches a scanned receipt links that receipt as proof.
Both ways: receipts missing from the statement
Matching runs in both directions. Statement lines that already have a receipt are skipped (never counted twice) — and receipts within the statement's date range that do NOT appear on any line are listed under the preview: paid in cash? another card? or a misread receipt date? One short list to check, not a manual hunt.
Privacy: the file stays on your device
A bank statement contains everything about you. That is why the CSV is read entirely inside your browser — it is not uploaded to the ListBelanja server or any AI. Only the lines you choose to import (date, description, amount, category, destination) are stored — as expenses or money in, exactly as if you had typed them.
Personal budget, or Form B & HK-4
Personal spending from a statement has no receipt, so it is not matched to LHDN reliefs (LHDN needs proof) — it completes your budget. Lines you record to an income source go into Form B or HK-4; keep the bank statement as proof, and scanned receipts remain the basis for relief claims.
Hidden reliefs in your statements
After a statement is imported, ListBelanja checks the transactions that have NO receipt: bookshops, gyms, kindergarten fees, insurance or internet that look claimable are grouped by relief, with the amount still claimable within the limit. Transactions that already have a receipt (same amount, close date) are skipped. Everything is worked out on your device — the statement is not sent anywhere — and nothing counts towards your tax until you keep the receipt.
Pay date detected from your statement
- Salary credits in your statement are recognised automatically and their pattern is suggested as your pay date — a fixed day, the last working day, twice a month, weekly or the official civil-service date.
- One tap to use it — your budget and money calendar follow it straight away.
- The suggestion is worked out on your device; only the pay schedule you choose is saved.
Import into an account & reconcile the balance
- Choose the bank, card or e-wallet account for each statement.
- Transfers to your own accounts are recorded as transfers, not spending.
- Lines already in that account are not imported twice.
- The statement's closing balance is compared with the account balance in the app.
Your own category rules
- Type a word such as a shop name, then set the category, tax relief (or don’t change) and project
- Your rules beat the app’s guesses and learned categories
- Applied to statement imports, receipt scans, moving from other apps, expenses without receipts, quick notes and Telegram
- Apply them to existing records after seeing how many will change — receipts you already confirmed stay as they are
Frequently asked questions
Which banks are supported?
Any that can export CSV (or comma/semicolon/tab-separated text) — columns are detected from the values, not from a list of banks. Malay or English headers (Debit/Credit, Keluar/Masuk, Amount) are understood.
Are incoming transfers (salary, credits) imported?
Only if you want: an incoming line can be recorded as money in for one of your income sources (rent from a tenant, a client payment) — salary and personal transfers stay on "Don't import". Payers you match are remembered for the next statement.