Check for a direct export
Check online banking first for a direct Xero export covering the required account and period. If it is not available, use the statement.
Standard Bank of South Africa provides statements for personal and business accounts in South African rand. The reviewed statements include printed business current account statements, an online banking transaction history and a branch-printed copy, each with its own layout and number format.
Countries: South Africa
Supported statement formats: PDF
Supported destinations: QuickBooks Online, Xero, Sage Pastel, CSV/Excel
Check online banking first for a direct Xero export covering the required account and period. If it is not available, use the statement.
For a short statement, type the date, memo, and amount into the destination. Reconcile the result to the closing balance.
Open the PDF statement, review the extracted transactions, choose Xero, and save the converted file on your computer.
Choose the posted transaction date, supply a missing year from the statement period, and check statements that cross January.
Remove currency symbols from numeric cells, preserve the decimal separator, and verify debit and credit signs against the running balance.
Keep the payee or customer reference that helps identify the transaction, while avoiding repeated headers and unrelated reference numbers.
The following details were checked against Standard Bank of South Africa statements from 2019 to 2026: printed business current account statements, a transaction history exported from online banking, and a branch-printed "Computer Generated Copy" that arrived as a photo. Standard Bank uses three different layouts with three different number formats, so identify the layout first and always reconcile the converted transactions to the running balance.
2.741,39-. Credits have no sign. Dates are month and day only, 02 22, with the year in the "Statement from 22 February 2019 to 20 March 2019" line.-47 899,03, +4 645,00. Dates are full, 11 Mar 2026. Rows run newest first.-18,000.00. Dates are 20260401, year, month and day with no separators. Every amount column is printed on every row, so a debit row also shows 0.00 under Credit and Service Fee.A converter that assumes one number format reads the other two as garbage. The safe rule is to detect the decimal mark from the balance column of the same statement, because the balance always has exactly two decimals.
MM DD, month first, even though South Africa writes dates day first everywhere else. Take the year from the statement period line. Online history shows full dates. Branch copies show YYYYMMDD. A statement period such as 15 October to 14 November crosses a month boundary on every statement and crosses the year in December.5.062,15-. Treat it as a sign, not as a formatting mark.28 072 181 1. Online history shows it with leading zeros, 0000010155497063. Strip the spaces and keep the zeros, or a file for the same account will not match a previous import.Month-end Balance R54.041,96.Printed statements carry a Service Fee column next to each transaction: 7,95 beside an internet banking payment, 4,20 beside a card purchase. That fee is not deducted on that row. The balance moves by the debit alone, and the fees are charged later as one line, for example "BUSINESS ELECT BANK CHARGES". A converter that adds the fee to the debit, or writes it as a second transaction, breaks the running balance on every row and doubles the fees at month end.
The same column also shows ## on rows that are themselves fees ("DEBIT CARD PURCHASE FEE", "FEE-UNPAID ITEM"). ## is a footnote marker meaning "These fees include VAT", printed at the bottom of the page. It is not an amount.
The first line holds the bank's transaction type and a reference number, CHEQUE CARD PURCHASE 9111, and carries the amounts, the date and the balance. The second line holds the part a bookkeeper actually wants, WIMPY BEACON B4278193441714771 or KTM BAILEY RENT, and carries nothing else. A converter must attach the second line to the row above it, and should prefer it as the payee, because the first line is the same text for hundreds of rows.
The second line often has a card number or terminal reference glued to the merchant name, PNP CRP SAVANN4278193342568656, and a time stamp glued to it as well, ENGEN BEACON H13H52, NANDOS CAVENDI20H05. Those need to be split off before the payee is usable for matching.
On the online banking layout the reference wraps differently: one part is printed above the row that holds the date and amount, one part on that row, and the rest below it. Grouping strictly by vertical position assigns the top part to the previous transaction. The row with the date and amount is the anchor, and the reference lines above and below it belong to it.
Descriptions carry amounts that are not transactions. A declined card row reads 032310749 22/10 11H51 695,00, where 695,00 is the amount that was declined. An immediate payment fee reads 032310749 17H34 R 25039.80#122, with the paid amount in yet another format. A foreign transaction reads INTGBP2.05at21.7339, the currency amount and the exchange rate. None of these are in the amount columns, and a converter that scans text for numbers picks them up as transactions.
Printed and branch statements run oldest first. The online history runs newest first, so the balance column reads backwards down the page and a converter must reverse the rows before writing a file that other software expects in date order.
The running balance is on every row in all three layouts. Check that each debit or credit moves the previous balance to the printed one. That check catches a missed trailing minus, a fee wrongly added to a debit, and every OCR error on a scanned or photographed copy.
Branch copies and older statements often arrive as photos. OCR splits a balance such as 571,999.44 into two elements, 571 and ,999.44, reads the Debit header as noise, and shifts columns on a skewed page. The explicit 0.00 in unused amount columns on branch copies helps here: a row with three amount cells is complete, a row with two has lost one. Reconcile every row against the balance before trusting a scan.
Compare the converted transaction count and totals with the statement, then confirm that the calculated final balance equals the printed closing balance.
Yes. If the PDF statement is readable, its age does not prevent conversion. Confirm the year when transaction rows omit it.
No. Convert posted transactions that contribute to the statement balance. Pending or future-dated items should not be mixed into that reconciliation.
Use the destination-specific settings below, then review the file before import. The destination may require particular columns, dates, account identifiers, or sign rules.
A bank PDF can contain searchable text, scanned page images, or a mixture of both. Searchable text still needs layout analysis because transaction descriptions wrap, columns move, and headers or balances repeat at page breaks. A scanned statement adds OCR uncertainty.
A transaction may begin at the bottom of one page and continue on the next. Continuation pages can omit column headings, repeat an opening balance, or insert footer text and legal pages between transaction pages. A conversion should join split rows and exclude repeated page furniture before it writes the output.
On scanned pages, OCR can turn 0 into O, 1 into l, or 5 into S. It can also lose a minus sign or decimal mark, read two columns in the wrong order, or struggle with skewed and faint pages. The running balance is the best check: a damaged amount or missing row breaks the balance sequence.
Yes. Review the OCR result and reconcile every balance movement. Scans with faint printing, rotation, or handwritten marks need more checking than searchable PDFs.
PDF text stores page positions rather than a spreadsheet table. Wrapped descriptions, repeated headers, and visually aligned columns can paste in the wrong order or into the wrong cells.
Try selecting a transaction description in a PDF reader. If individual words can be selected, the page probably contains text. If the whole page behaves like one picture, it requires OCR.
Xero imports bank transactions through Accounting, Bank accounts, Import a Statement (also reached as Manage Account, Import a Statement). The file goes into the bank account's reconcile list, where Xero matches each line to invoices, bills and bank rules, or creates a spend or receive money transaction.
.ofx. If a QBO, QFX or OFX file downloaded from a bank is rejected, the file usually has a header, encoding or date format Xero does not accept; converting it to a plain OFX fixes that.Settings that matter:
OFX. It carries the payee, description, reference and check number in separate fields and gives Xero a transaction ID for duplicate checks. CSV is fine when the file was written for Xero with the right column names; a bank's own CSV usually needs mapping and cleanup.
Most often the file has a header Xero does not read, non-UTF-8 text, dates in a format it does not accept, or a missing transaction ID. Convert the file to plain OFX and import that. Renaming QBO or QFX to .ofx helps only when the content is already clean.
Xero skips lines whose transaction ID it already has, and for CSV it skips lines it reads as duplicates by date, amount and description. Two genuine identical lines on the same day can be dropped from a CSV. Use OFX with unique IDs for those.
The date order was misread. A file with 03/04/2026 can be read as 3 April or 4 March. Set the order on the import screen, or export dates as YYYY-MM-DD, which Xero reads without asking.
Open the bank account, go to the statement lines or Bank Statements tab, select the imported statement and delete it. The lines disappear from reconcile and the file can be imported again.
Yes. There is no date limit on file imports. Import periods in order and do not overlap them, so the balance in Xero follows the statements.
No. The statement balance in Xero is computed from the imported lines. Compare it to the printed closing balance after each import. If they differ, a line is missing, doubled, or has the wrong sign.