Transactions
Every inflow and outflow lives in Transactions — imported, categorized, and attached to customers, vendors, files, and subscriptions.
A transaction is one money movement. The Transactions page (sidebar → Transactions) lists them with filters for account, date range, category, counterparty, and full-text search.
Where they come from
| Source | What lands as a transaction |
|---|---|
| Bank connections | Every transaction on a connected bank account, refreshed several times a day. |
| Stripe | Charges, refunds, payouts, balance transactions, fees. |
| HubSpot | None (HubSpot data lands as subscriptions, not cash transactions). |
| DATEV Payroll | One transaction per employee per uploaded CSV. |
| Manual | CSV import or single-transaction entry. |
Anatomy
A transaction has:
- A date, amount, and currency.
- An account (where the money moved through).
- A counterparty — resolved to a customer or vendor if SaaSFlow can match it.
- One or more categories — see categories. A transaction can be split across multiple categories.
- A link to a subscription event for subscription-related transactions (recognised revenue, refunds against a subscription).
- Attached files — receipts, contracts, invoices.
Categorization
New transactions land uncategorized. You categorize them by:
- Picking a category manually from the transaction's detail view.
- Setting a default category on the vendor — every matching future transaction inherits it.
- Bulk-editing from the Transactions list (multi-select → edit).
- Letting SaaSFlow suggest categorizations for everything uncategorized (below).
Suggested categorizations
SaaSFlow can categorize for you. On the Transactions page, click Suggest categorizations to analyze every uncategorized transaction and propose a vendor and category for each, grouped by counterparty with a short reason.
The analysis runs in the background — a banner under the header shows progress, and you can keep working. When it finishes, the banner shows how many suggestions are ready.
Run the analysis
Click Suggest categorizations. You need Write access to transactions. The button is unavailable when everything is already categorized, while an analysis is running, or once you've reached the daily limit.
Review
Click Review and apply in the banner. Each suggestion shows the counterparty, the proposed category, and a confidence indicator. You can:
- Select which suggestions to apply.
- Adjust a category or counterparty inline before applying.
- Expand a row to see the exact transactions it covers.
- Turn on Group similar to collapse same-category suggestions into one row.
Suggestions that need a decision are listed separately — categorize them before applying.
Apply
Click Apply. Only the suggestions you selected are applied, and any new vendors or customers they reference are created at the same time. Nothing changes until you apply, and you can undo an applied suggestion from the review screen.
Suggestions are a starting point — review before applying. Stripe transactions are categorized automatically by the Stripe integration, so they're left out of the analysis.
Limits
- Up to 2 analyses per company every 24 hours.
- One analysis at a time — wait for a run to finish before starting another.
The button shows how many of the daily runs you've used, and when the next one unlocks.
Transfers and money in transit
Money moving between your own accounts — a Stripe payout, a wallet top-up — is not revenue or an expense. SaaSFlow links the outgoing and incoming legs as a transfer: both get the neutral Transfer category, so they're excluded from Profit & loss and Cash flow by category but still move each account's balance.
The two legs rarely book on the same day. Until the arriving side shows up, the money is in transit: it's held on a system Transit account (one per currency) so your total cash stays correct while the money is between accounts. In-transit transactions show an In transit · N days chip, and the transaction detail shows the full Transfer path from source to destination.
SaaSFlow matches transfer legs automatically by amount, currency, and date. You can also link a leg by hand: open it and click No counter transaction to pick the matching transaction on the other account (or create it there), and use Unlink on the Transfer path to undo a wrong match.
When a transfer stays in transit
If the arriving side never shows up — the destination account isn't connected, or its history doesn't reach back far enough — the transfer counts as stale after 14 days and the Transactions page shows a review banner. Three ways to resolve it:
- Bring in the destination account — connect the bank, or extend its imported history. The transfer closes automatically on the next sync.
- Categorize it — if the money went to an account you don't track, decide what it really was: a real expense, or a neutral category like "Uncleared transfers".
- Remove history — if the gap comes from incomplete history, trim the account's transactions to a consistent start date.
Filter the Transactions list to In transit over 14 days to see what's open.
Comments
Every transaction has a Discussion section in its detail view. Add comments, @-mention teammates, and like comments; you can edit or delete your own. When you mention someone, a checkbox offers to assign the transaction to them — so a question and its owner travel together.