Skip to content

How it works

Bank statements in. Income statement out.

Three movements. Rules and the AI call every transaction they can, hand you the rest, and produce the income statement your firm needs at year-end. Statements we read successfully aren't stored; we keep the transactions, with amounts, descriptions and counterparties encrypted.

taxup.app/lines
Year2027AccountAnyStateAnyBucketAny
  • Pinetree Studio · Invoice 3041

    +R 12 950,00

    12 MayConfirmed
  • Cell C

    −R 219,00

    10 MayAuto
  • Bolt Food · Greenpoint

    −R 348,20

    08 MayNeeds review
    Confirm
  • Momentum Health · monthly

    −R 2 640,00

    06 MayPossible deduction
4 of 52 lines

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 in the PDFs your client emails you each month. We have dedicated readers for FNB, Standard Bank, Nedbank, Absa and Capitec; statements from other South African banks, such as Investec, TymeBank and Discovery, are read by a general reader.

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. A statement we read successfully isn't stored. 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. When our own readers can't read a statement confidently, the whole PDF is sent to OpenAI (gpt-4o) to be read, including the account holder's name and account number.

taxup.app/drops

Manual drop

Hand-load this cycle's PDFs.

Pick files

Drag a digital PDF onto this card.

Dedicated readers: FNB · Standard Bank · Nedbank · Absa · Capitec. General reader: Investec, TymeBank, Discovery and other SA banks.

Lined up · 3 PDFs

  • absa-cheque-apr-2026.pdf

    312 KB

    Read · 52 lines
  • fnb-business-mar-2026.pdf

    428 KB

    Read · 52 lines
  • tymebank-apr-2026.pdf

    204 KB

    Reading · 71%

Two · Categorise

Rules and the AI call the lines. You audit the edges.

Every transaction lands in a SARS-aligned bucket, marked 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 and choose to remember it, 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.

Saved rules and a South African merchant list settle what they can. An OpenAI model (gpt-4o-mini by default) categorises the rest from each transaction's description, amount and date, with the client's business profile, and anything it isn't confident about goes to review. OpenAI's API terms exclude API data from model training. Every verdict lands with reasoning visible on the row.

taxup.app/lines

Lines · Apr 2026 statement

52 lines

48 sorted4 over to you
  • Invoice 3041 · Pinetree

    +R 12 950,00

    13 MayServices Rendered
  • Yuppiechef

    −R 295,00

    11 MayGeneral Expenses
  • Cell C

    −R 219,00

    11 MayUtilities & Internet
  • Momentum Health

    −R 2 640,00

    09 MayMedical Aid
  • Invoice 3038 · Northwood

    +R 8 420,00

    06 MayServices Rendered
Engine sorted 48 · 4 left for you

Three · Report

The income statement, on demand.

Open the Income statement tab on any client. Sales, cost of sales, gross profit, other income, expenses and net profit, with every line tied back to the source transactions. Recalculates 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. Pre-submission validation raises hard stops and review flags, and your firm's owner or an admin signs the return off.

Filing itself happens on your side. TaxUp lays the return out field by field with click-to-copy values; you submit it on SARS eFiling under your firm's own practitioner number, the way your firm already does, and record the SARS reference in TaxUp. TaxUp generates the books; the accountant remains in the chair.

Bolt Food · Greenpoint

−R 348,20

08 May

64%
Meals · client

Why this category

Weekday lunch order. Could be a client meeting or just dinner — confidence under 70%, so we hand it to you.

ConfirmEditExclude

Pick n Pay · Tamboerskloof

−R 542,10

03 May

54%
Personal

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

The AI makes its best call; if it isn't confident, the row lands in the hand-back queue. Save your verdict and we apply it to every future row from that merchant.

A PDF won't read

Scanned statements uploaded to a client's workspace are read with OCR; quick onboarding can't read scans yet and points you to the workspace instead. If a statement still can't be read, the upload shows as failed and you can upload another 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 the row and choose to remember it, and the rule saves for that client. Firm-wide rules you write apply across every client. 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.

No card needed to start. By default the trial runs 3 days with one client; pick a band to unlock the return, P&L, optimisation and exports, and to add more clients.