How it works
Bank statements in. Income statement out.
Three movements. The AI calls every transaction it can, hands you the rest, and produces the income statement your firm needs at year-end. Statement PDFs are processed in-request and dropped — only the categorised rows persist, encrypted at the column.
Pinetree Studio · Invoice 3041
+R 12,950.00
12 MayConfirmedCell C
−R 219.00
10 MayAutoBolt Food · Greenpoint
−R 348.20
08 MayNeeds reviewConfirmMomentum Health · monthly
−R 2,640.00
06 MayPossible deduction
The flow, end-to-end
Three movements, one workspace.
Onboard a client once. Drop a year of statements. Open the income statement when it's done. No chart-of-accounts setup, no per-row mapping by hand, no ledgers to maintain.
One · Drop
Upload the client's statements.
Drag the PDFs your client emails you each month. We read statements from all eight local banks — FNB, Standard Bank, Nedbank, Absa, Capitec, Investec, TymeBank, Discovery Bank.
Each PDF is parsed in-request. We pull every line, the running balance, and the cycle window. Duplicate rows across overlapping statements get suppressed by a deterministic hash.
No bank logins, no scrapers, no open-banking pipes. The PDF buffer itself isn't persisted; only the derived rows live on, encrypted at column level.
Manual drop
Hand-load this cycle's PDFs.
Drag a digital PDF onto this card.
FNB · Standard Bank · Nedbank · Absa · Capitec · Investec · TymeBank · Discovery Bank.
Lined up · 3 PDFs
absa-cheque-apr-2026.pdf
312 KB
Read · 52 linesfnb-business-mar-2026.pdf
428 KB
Read · 52 linestymebank-apr-2026.pdf
204 KB
Reading · 71%
Two · Categorise
The AI calls every line. You audit the edges.
Every transaction lands in a SARS-aligned bucket and the AI calls business or personal. Lines scored above the confidence bar go straight through. Anything below lands in a hand-back queue scoped to that client.
Confirm a row once and the rule sticks. Same merchant next month lands in the same bucket without re-asking. You can also write firm-wide rules of your own — anything from Eskom goes to Utilities — that outrank the engine.
Today's production engine is OpenAI gpt-4o on the Responses API. The categoriser package is LLM-first by design (re-architecture 2026-05-18); every verdict lands with reasoning visible on the row.
Lines · Apr 2026 statement
52 lines
| Posted | Vendor | Bucket | Sorted by | ZAR |
|---|---|---|---|---|
| 13 May | Invoice 3041 · Pinetree | Services Rendered | AI | +R 12,950.00 |
| 11 May | Yuppiechef | General Expenses | Rule | −R 295.00 |
| 11 May | Cell C | Utilities & Internet | Rule | −R 219.00 |
| 09 May | Momentum Health | Medical Aid | Review | −R 2,640.00 |
| 06 May | Invoice 3038 · Northwood | Services Rendered | AI | +R 8,420.00 |
| 04 May | Bolt business | Travel & Accommodation | AI | −R 95.40 |
| 02 May | Wimpy · Greenstone | Personal Expense | You | −R 138.50 |
| 30 Apr | Adobe Creative Cloud | Software & Subscriptions | AI | −R 339.00 |
Invoice 3041 · Pinetree
+R 12,950.00
13 MayServices RenderedYuppiechef
−R 295.00
11 MayGeneral ExpensesCell C
−R 219.00
11 MayUtilities & InternetMomentum Health
−R 2,640.00
09 MayMedical AidInvoice 3038 · Northwood
+R 8,420.00
06 MayServices Rendered
Three · Report
The income statement, on demand.
Open the Income statement tab on any client. Three sections — Revenue, Operating expenses, Net profit — with every line tied back to the source transactions. Recalculates instantly when categorisations change.
Internal transfers, credit-card payments, drawings, loan repayments and personal spending are excluded by design. The bottom line is the pre-tax P&L your firm files from.
Behind the income statement sits the SARS-ready return: ITR12 for individuals and sole props, ITR14 for owner-managed companies — line by line, with provisional-tax (IRP6) periods and deadlines tracked alongside, and your practitioner's sign-off gating anything the validation layer flags.
Filing itself happens on your side — TaxUp walks the return into eFiling field by field with click-to-copy values, and you submit under your firm's SAIT- registered practitioner number, the way your firm already does. TaxUp generates the books; the accountant remains in the chair.
Bolt Food · Greenpoint
−R 348.20
08 May
Why this category
Weekday lunch order. Could be a client meeting or just dinner — confidence under 70%, so we hand it to you.
Pick n Pay · Tamboerskloof
−R 542.10
03 May
2 of 4 visible · ~40s left
When things go sideways
The edge cases, surfaced.
Confidence below the bar
Anything the engine scores under the threshold lands in the hand-back queue with the AI's reasoning visible. One tap to accept, override, or skip.
A merchant we've never seen
Lands in the hand-back queue at zero confidence. Your call. Save the verdict and we apply it to every future row from that merchant.
A PDF won't read
Usually a scanned (not digital) statement. We point at the page that broke and let you re-upload a born-digital copy, no re-run charge.
Sanity flag
Positive amounts in expense buckets, round-number bank fees, very large outliers — flagged for review even if the category looks right.
Counterparty mis-grouping
Override once. The rule saves at the firm level (if you want) or the client level. Re-runs on existing rows when you ask.
Categoriser temporarily unavailable
If the LLM upstream errors, rows are tagged llm_unavailable so the hand-back queue separates real review work from infra hiccups.
Open a firm account.
Sixty seconds to set up. Pick a band when your first client is on the roster.
