Core Concepts
Five things to understand before you dive in.
Flow is built on five simple ideas. Once you get these, everything else clicks.
1. Accounts
An account is anywhere your money lives. You can have as many as you want — bank accounts, wallets, credit cards, crypto holdings, savings jars.
Every account has a balance, a type, and a currency.
The five account types:
| Type | What it is |
|---|---|
cash | Physical money — your wallet, cash on hand |
bank | A bank account — checking, current, etc. |
credit | A credit card — balance here means you owe that amount |
savings | A savings account or goal |
crypto | Any cryptocurrency holding |
2. Transactions
A transaction is any movement of money. There are three kinds:
| Type | What it means |
|---|---|
income | Money coming in — salary, freelance payment, gift |
expense | Money going out — rent, groceries, subscriptions |
transfer | Money moving between your own accounts — e.g. bank → savings |
3. Categories
Categories let you group transactions by what they're for — Rent, Groceries, Salary, etc. You create your own, so they match your actual life.
Each category is typed as either income or expense. A "Salary" category only appears when recording income. A "Rent" category only appears for expenses.
4. Tags
Tags are free-form labels you attach to transactions. Unlike categories (which are structured), tags are flexible — use them to group things categories can't capture.
Example: Category = Food & Drink, Tags = bali-trip, work-lunch
5. Amounts are stored as integers
Amounts in Flow are stored as the smallest unit of the currency — no decimal points internally.
- For IDR:
50000= Rp 50,000 (IDR has no sub-units) - For USD:
599= $5.99 (cents) - For BTC: amounts are stored as satoshis
You'll never see raw numbers like this in the app — Flow always displays amounts formatted correctly for your currency. This is just good to know if you're ever building on top of the API.
The occurred_at date
Every transaction has two dates:
occurred_at— when the transaction actually happened in real life (the date on your receipt, the day your salary landed)created_at— when you recorded it in Flow
These can be different. If you find a receipt from last Tuesday, record the transaction with last Tuesday's date. Your analytics will be accurate.