Everything you need to know about Floosi — your finance assistant on WhatsApp and on the web: it reads your statements, follows your spending, builds real financial statements, and answers you in plain language.
Download your statement as a PDF from your bank's app or website and send it to the bot on WhatsApp — exactly like sending a photo to a friend. It reads every transaction (date, description, amount, balance), categorises it automatically, and gives you a summary with notes.
Any bank. Any country. Any statement.
Floosi is not limited to a list of banks or countries. The system reads any bank statement, whatever the bank, the country or the currency. Send the PDF and we handle the rest. In the web app you can upload Excel and CSV files too — those are read on our own server and never leave it.
Every transaction is categorised automatically into one of 27 built-in categories — with no effort from you. And the moment you correct a merchant, your correction becomes a rule that applies to every matching row, now and in future.
Category names appear in the app and the reports exactly as below — they are the keys the system stores — and you can create your own alongside them.
Write a question in plain English, Arabic or Thai and the bot answers from your own account data — no special commands — and it remembers the last 30 messages so the conversation reads naturally.
The currency comes from the document alone — never from your country, your phone number or the brand. When a statement does not state it, it shows as unknown rather than being guessed. There is no closed list of currencies: every amount stays in the one it arrived in.
Totals are grouped by currency and never summed across them. If you want a single number, choose a reporting currency in the web app's settings — a presentation choice applied at render time to rows whose own currency is already known, shown with the rate's source and date. A row with no currency is stated as such: never dropped, never guessed.
Set a monthly ceiling per category and the bot tracks your progress and warns you as you approach it.
Teach the bot to recognise particular merchants your way. Your rules override the model's categorisation permanently and apply to every matching transaction. You can also create your own categories alongside the built-in ones, and list and delete your rules from the Transactions tab.
After every statement upload the bot gives you observations without being asked, comparing this month against the last three.
Tell the bot your income and it builds a budget plan from your actual spending — not generic advice.
After every upload the bot tells you how much you saved (income minus spending), and you can set savings goals and follow the progress over time. A goal is a plan, not a wallet: the money behind it is already counted in the account it sits in, so goals never appear on your balance sheet.
A simple ledger of what you lent and what you borrowed, with the payment history and a due date if you want one. Debts are not spending: they stay out of your income statement and your budgets, and they appear on your balance sheet — what you are owed is something you own, and what you owe is something you owe. Only the interest is income or expense.
Thinking about a loan? Tell the bot the amount and the term and it works out the monthly payment and the total interest, and compares the options side by side so you can pick the cheaper one — it never shows a single number. Personal, car and housing loans are supported. It is available to everyone, including during the trial, and needs neither encryption nor bank data.
Encryption is optional and you switch it on. Not switching it on does not stop you using the bot — and until you do, your database sits on our server unencrypted. We say that plainly, because a sentence that reassures the reader without describing reality is worse than one that describes it.
When you turn it on with /encrypt, the bot sends you a link to a secure web page where you enter your passphrase — the passphrase is never typed into WhatsApp. Your whole database is then locked with a key derived from that passphrase (AES-256-GCM over PBKDF2-HMAC-SHA256). We do not store the passphrase, so nobody opens the database without it — us included. A session locks itself automatically after 90 minutes of inactivity.
Every user has a separate database. We do not sell your data and we do not use it for advertising. The statement file itself is never saved as a file on our server: it is passed to our extraction provider, stays there for 90 days — a period we set on our own mailbox with them — and is then deleted, and we keep the transactions extracted from it. Excel and CSV files are read on our own server and never leave it.
To delete everything permanently, send DELETE ALL MY DATA and confirm with YES DELETE. There is one deletion path and no second one, and it takes with it the databases that were merged into your account and the merge-reversal snapshots.
The full list of who processes your data, where, what is kept and for how long is in the privacy policy, which is the binding text.
A family group lets one admin see the family's data in one place while it stays encrypted: each member's key is stored inside an "envelope" locked with the family key, which the admin opens with their own passphrase. Members cannot see each other's data, and every member controls their own — leave, lock, delete — at any time.
This section is not written here. It is the guide the product itself shows under Settings → User guide, generated from its single source on every build, with the policy sentences taken from the accounting engine's own constants at build time. This page cannot disagree with the product.
This is the guide the app itself serves, under Settings → User guide. It is the only source: scripts/build_guide.py turns it into the JSON the SPA renders, so the guide and the app cannot drift apart.
Policy statements below are substituted from the constants in accounting.py at build time, so a policy stated here is, literally, the policy the engine applies. The build fails on an unknown name rather than shipping a placeholder.
Everything below this section explains why the numbers are what they are. This one is the short version of what to do.
1 · Sign up. An email address and a password. We send a six-digit code to that address; enter it and you are in. The phone field is optional and does one thing only: it links this login to books you already have on WhatsApp or LINE. Leave it blank if you are new.
2 · Set up your balance sheet. The five-step form on your first visit asks what your statements cannot tell us — what each account holds today, what else you own, what you owe, and money between you and other people. You can skip it and come back later from Settings → Set up my balance sheet.
The last step asks when your balance sheet should start, and it matters more than it looks. Statements that end before that date do not change your balance sheet, because the opening balances you just typed already contain them; their transactions still count in your income statement. So if you are about to upload last month's statement, pick a date before that statement's period. We suggest one — the first day of the month your oldest statement covers — and if you have not uploaded anything yet we say so rather than pretending today is the answer. You can change it later from Settings → Books open date without redoing any of this.
3 · Add your accounts. Accounts → + New account, one per real account. Say which kind it is: a credit card balance is money you owe, and reading it as cash is the difference between a net worth that is right and one that is wrong by twice the card balance. You can also let step 4 create the account for you.
4 · Upload a statement. Upload takes a PDF, an XLSX or a CSV.
Then file the statement into an account. Anything unfiled waits at the top of Review.
5 · Read the reports. Reports shows only the reports your data can support: the income statement needs transactions, the balance sheet does not. Every figure is a button, and it opens the rows behind it.
6 · Fix what we got wrong. On Transactions, the category dropdown on any row changes it. When you do, we may offer to remember it as a rule — a rule applies to every matching row, now and in future, and you can see and remove your rules on the same tab.
The Review tab is where anything we could not decide waits for you: a transfer we cannot attribute, a row whose description told us nothing, an account whose type we had to assume. Nothing there is hidden from your reports — it is counted the safe way and flagged, and the screen says which way.
7 · Goals and debts have their own tabs. Goals is what you are putting money aside for — a deposit, a trip, a rainy day. Say how much you need and, if you want, by when; a goal with no date is fine. Each time you put money aside, record it, and the list behind the progress bar is every contribution you have recorded, so a wrong entry can be removed one line at a time instead of by editing a total. A goal is a plan, not a pot: the money behind it is already counted in the account it sits in, so goals never appear on your balance sheet.
Debts is money you lent and money you borrowed, per person, with the payment history behind each one. You can give a debt a due date, and one that is due soon or already overdue appears at the top of that tab. Be clear about what that reminder is: it shows when you open the app. Nothing is sent to your phone. Dismissing a reminder stops it appearing; it does not mark the debt as paid, and the balance stays exactly where it was.
What deleting takes with it. Deleting a statement removes its transactions too, and you can re-upload the same file cleanly afterwards. Deleting an account unfiles its transactions and removes the opening balance you gave it. Removing a rule stops it applying from now on and leaves the categories it has already set. Deleting a loan puts its repayments back to counting as an expense in full. Each of those says so before you confirm.
Prepared on a cash basis: every figure is recognised on the date the money moved through your bank, not the date you were invoiced or the period a bill covers. A December invoice paid in January counts as January.
Being on a cash basis governs timing, not classification. It does not make every outflow an expense. These six movements are cash leaving or arriving and are not income-statement items:
| Movement | Income statement? | Cash flow |
|---|---|---|
| Between your own accounts | no | internal |
| Loan principal repayment | no — interest only | out |
| Buying an asset | no | out |
| Money you lend | no — interest only | out |
| Money you borrow | no | in |
| Paying a credit card | no | internal |
An account's type decides how its balance is read. 42,000 in a current account is money you have; 42,000 on a credit card is money you owe.
Types: current · savings · credit card · loan · investment.
We read the type from your statement where the statement says so — an explicit header, or language only a card statement carries (a minimum payment, a credit limit). Where it does not say, we leave the account as a current account and ask, because inventing a liability is no better than missing one.
A type we inferred is always shown as an inference, with the reason, and it is never treated as confirmed until you say so.
Cash withdrawals are recognised as an expense when withdrawn, because no statement shows what the cash was later spent on. Treating them as transfers would remove the money from your income statement permanently. You can change this in the chart of accounts.
Money in and money out track cash leaving your control, not changes in your wealth. Moving money between your own accounts or into your own savings is shown separately, because you can still reach it. Money lent to someone else, and loan principal you repay, count as money out — the money is gone from your control even though your net worth has not changed.
Lending swaps cash for a claim; borrowing swaps a debt for cash. Net worth does not move on the day either happens, and neither touches your income statement. Only interest is ever income or expense.
You manage these on the Debts tab — adding one, recording a repayment, setting a due date, and confirming when a bank row is the money changing hands. They still appear on your balance sheet, because money owed to you is something you own and money you owe is something you owe. Moving where you manage them did not move the money.
When we spot a bank row that looks like one of these, we offer it and wait. Confirming takes that row out of your income statement, which is exactly the kind of change worth asking about rather than making quietly.
Your statements can only describe accounts you have uploaded. Everything else — the flat, the car, the mortgage, money a cousin owes you — has to be told to the app. Settings → Set up my balance sheet asks for it.
Choosing the date. The setup asks when your balance sheet should start and suggests an answer: the first day of the month your oldest statement covers, or today if you have not uploaded anything yet. If you are about to upload statements you already have, pick a date before the earliest of them starts — otherwise they will feed your income statement without moving your balance sheet, which is correct and looks like nothing happened.
You do not have to get it right first time. Settings → Books open date changes it on its own, without re-running the setup (which would replace every opening balance you entered). Your opening balances move with the date, because they describe what you held on the day your books opened.
When you set an opening date:
If you never set a date, nothing is excluded and the balance sheet behaves exactly as it always has. You can go back to that at any time — Remove the cut-off in Settings — though then a pre-open statement and the opening balance covering it can describe the same money twice.
The equity line is not an account. It is the accumulated net worth your opening balances came from, and it is what makes assets minus liabilities add up.
Every figure is shown in the currency stored on its own row. Totals are grouped by currency and never summed across them — adding QAR to JOD produces a number that is not money.
The currency comes from the document, never from your phone number, your country or your brand. Where a statement never states one, it shows as unknown rather than being guessed.
Review is where the app puts anything it will not decide for you:
Nothing on this list is applied for you. The app proposes; you confirm.
30-day free trial — 10 messages a week + 2 statement uploads a month
How payment is taken, and who receives it, are set out in the Terms & Conditions · Family plan: pay for one member fewer — a family of four pays for three