About
Bank statements eat too many of an accountant's hours.
TaxUp exists for South African accounting firms whose juniors spend half of every season categorising lines on bank-statement PDFs by hand. The work needs doing — it doesn't need a person on every line.

The reason this exists
Eight banks. Twelve cycles. A client roster that grows every year.
The annual rhythm at most small SA practices: a sole trader brings in twelve months of PDFs from two or three bank accounts. A junior spends a day sorting lines into buckets. The accountant double-checks. Multiply by every client. The Saturday-eating chore is the same shape whether it's 10 clients or 100.
Generic accounting software assumes you want a full-fat general ledger your client maintains. Most firms don't need that — they need the bank-statement-to-income-statement loop to take minutes instead of hours, with the categorisation handled by saved rules, a South African merchant list and an OpenAI model, against a SARS-aligned chart built for South African tax returns.
So that's the product. Drop a year of statements. Rules and the AI call the lines they can; you review the handful they couldn't call confidently. The income statement falls out the other end, with every row tied back to the source transaction.
Who this is built for
- SAIT-registered accounting firms
- Solo practitioners and small-firm partners
- Firms whose clients are individuals, sole traders, and owner-managed companies
If your work is mostly VAT, payroll, or multi-entity consolidations, TaxUp is the books-side of the workflow only. The lines we draw are on pricing.
How we run things
Cape Town. Small. Quiet on purpose.
A short engineering bench. POPIA-aware data handling baked in from day one. A release cadence slow enough that we can support what we ship — and stubborn enough to fix every misfire the AI surfaces.

What we lock in
Four lines we don't cross — on every plan.
No bank-login scraping.
We never ask for client bank passwords or proxy a banking app. The only input is the PDF the bank already sends.
Statements aren't kept.
Statements we read successfully aren't stored; we keep the transactions, with amounts, descriptions and counterparties encrypted. When our own readers can't read a statement confidently, the whole PDF is sent to OpenAI to be read, including the account holder's name and account number. The one exception is a file we could not read: it is kept encrypted for 30 days so the failure can be fixed, then deleted.
Column-level encryption.
AES-256-GCM at the column for ID numbers, tax numbers, transaction amounts, descriptions and counterparties. Names and contact details, finalised return snapshots and uploaded supporting documents are not encrypted this way.
Firm-wide audit log.
Changes your staff make, such as uploads, categorisations, overrides and returns, are recorded in an append-only log scoped to your firm, with the time and who made them. Viewing records and signing in are not logged. Open the log any time.
Made in Cape Town. Built for SA accounting firms.
Open a firm account and put your client bank-statement workflow on rails.