Automating bank statement collection in South Africa

Every month, accountants across South Africa send the same message:

"Hi, please log into your FNB and download the statement for May — the last 3 months if possible — and send it through as a PDF. Or a CSV if you can find it."

The client logs in, navigates three menus, downloads a file, attaches it to an email, and sends it. The accountant opens the PDF, finds it's the wrong date range, and asks again. Two days later the work actually starts.

This is still the dominant workflow for bank statement collection in South Africa in 2026. It is slow, it is manual, and it is entirely avoidable.

Why statement collection is still manual in South Africa

South African banks do not offer official open banking APIs that third parties can use to pull account data with client consent. In Europe, banks have been legally required to do this since 2019. The South African Reserve Bank is developing its regulatory framework — draft rules were out for consultation in 2025, with formal licences expected later in 2026 — but the infrastructure is not live yet.

In the absence of open banking rails, the options have historically been:

  1. Email the PDF — client downloads, you import manually.
  2. Accounting software bank feeds — works only for Sage users banking with FNB. Not general-purpose.
  3. Screen scrapers — brittle, breach bank terms, and break whenever the internet banking portal updates.
  4. Nothing — just live with the delay.

None of these scale. A firm managing fifty clients cannot spend an hour per client per month just collecting data that already exists in digital form.

What automated statement collection looks like

Modern bank data intermediaries like BankLink solve this by linking a bank account once and then syncing automatically on a schedule.

The setup process is done once per client account:

  1. The client visits a secure link and provides their internet banking credentials.
  2. The credentials are encrypted and stored in an isolated vault — they never touch your systems.
  3. You configure a Pulse: how often to sync, and where to send the data.

From that point, statements are no longer collected. They arrive.

A Zenovah case study found that automated bank data reduced reconciliation time per client from 45–60 minutes to under 10 minutes — a 75–85% reduction. The manual download step is only one part of that, but eliminating it removes the rate-limiting step that holds up everything else.

What you get instead of a PDF

Instead of a PDF that requires manual parsing, automated collection delivers structured transaction data:

{
  "account_number": "4055123456",
  "bank": "fnb",
  "period": {
    "from": "2026-05-01",
    "to": "2026-05-31"
  },
  "summary": {
    "opening_balance": 18420.00,
    "closing_balance": 22180.50,
    "total_credits": 62500.00,
    "total_debits": 58739.50
  },
  "transactions": [
    {
      "date": "2026-05-02",
      "description": "SALARY ACME CORP PTY LTD",
      "amount": 45000.00,
      "type": "credit",
      "running_balance": 63420.00
    },
    {
      "date": "2026-05-03",
      "description": "VODACOM DEBIT ORDER",
      "amount": -899.00,
      "type": "debit",
      "running_balance": 62521.00
    }
  ]
}

This goes directly into your reconciliation system, your accounting software, or your dashboard — no conversion step.

Eliminating the four manual steps

The typical statement collection workflow has four steps that can all be removed:

Step 1 — Chasing the client for the statement This step disappears entirely once an account is linked. BankLink syncs on its own schedule. You do not need to ask.

Step 2 — Downloading the correct format Banks offer PDF, CSV, and sometimes OFX/MT940. Accountants and clients get the format wrong regularly. With automated collection, format is irrelevant — you receive structured JSON regardless of the source bank's export capabilities.

Step 3 — Converting the file PDF-to-CSV conversion is a cottage industry in South Africa. Multiple tools exist specifically to parse FNB, Standard Bank, and ABSA statement PDFs into usable spreadsheet data. With automated collection, this step is eliminated.

Step 4 — Importing into your system A CSV import still requires mapping column headers and validating totals. A structured API payload has a consistent schema. You map it once at integration time.

Who benefits most

Accounting firms managing multiple clients — the per-client monthly effort compounds fast. Automated collection means you can scale clients without scaling admin headcount.

Lenders and credit providers — affordability assessments require 3–6 months of transaction history. Collecting this manually creates a 3–5 day delay before an assessment can begin. Automated collection means the data is available before the client even completes their application.

Bookkeepers using Xero or Sage — even with accounting software bank feeds, not all SA banks are supported and not all clients bank with FNB. BankLink fills the gaps.

Business owners with multiple accounts — monitoring cash flow across a cheque account, a savings account, and a business credit card manually means logging into three separate portals. A Pulse delivers all of them to one destination.

Payroll providers — verifying that a salary credit landed in the right amount on the right date is a manual check that can be automated entirely.

Setting up a collection Pulse

A Pulse in BankLink is a scheduled job that syncs a linked account and delivers the result somewhere. You configure:

  • Source: which linked bank account to pull from.
  • Schedule: how often to sync (hourly, daily, weekly, monthly).
  • Destination: where data goes — your webhook endpoint, an email address, or the BankLink dashboard.

For statement collection use cases, a daily Pulse with a dashboard destination gives you a continuously updated transaction history with no gaps. For month-end reporting, a monthly Pulse to an email address replicates the statement delivery flow — except the data is structured, not a PDF.

Account linked once
      ↓
Pulse runs on schedule (e.g. daily at 6am)
      ↓
BankLink syncs latest transactions
      ↓
Webhook fires → your system receives JSON
      ↓
Reconciliation runs automatically

What to do with the data once it arrives

Receiving structured transaction data is the beginning, not the end. Once it's in your system:

  • Match credits to invoices — compare incoming transactions against your invoice ledger. Flag matches automatically.
  • Categorise spending — tag transactions by description pattern to produce expense category reports.
  • Detect anomalies — alert on unusually large debits, duplicate reference numbers, or transactions outside business hours.
  • Feed your accounting software — post matched transactions directly to Xero, Sage, or QuickBooks via their APIs.

None of these are possible when your "data" is a PDF sitting in an email thread.

Getting started

BankLink supports FNB accounts today. Linking takes under ten minutes, and the first Pulse can be running the same day.

Set up automated statement collection → app.banklink.co.za