Skip to main content
BankFlow logoBankFlow

Bank statement to Sage

One account per file, the way Sage wants it.

Convert statement PDFs into OFX for Sage Accounting's bank statement import: scoped to a single account, because Sage reads the first account in an OFX file and ignores the rest.

50 free page credits · No card · Cancel anytime

  • OFX, not a mapped CSV
  • Scoped per bank account
  • Balance-checked first

Export transactions

1,284 rows

Format

CSVExcelJSONOFXQuickBooks
DateDescriptionAmount
2025-10-24STRIPE PAYOUT 4af2c9+4,820.00
2025-10-23AWS EMEA SARL−1,204.00
2025-10-22WHOLE FOODS MKT−112.88
1,284 rows · 3 columnsExport OFX

PDF statement you upload

scanned_statement_047.pdfUnstructured

24/10 STRIPE PAYOUT 4af2c9........4,820.00

23-10 AWS EMEA SARL us-east-1 1,204.00-

22 OCT WHOLE FOODS MKT #214 112.88

21/10 UBER *TRIP..............24.40

20-OCT-2025 GUSTO PAY 9931 18,440.00

[illegible: scan quality]

OFX file Sage imports

current_account_oct.ofxOFX / QBO

<STMTTRN>

<TRNTYPE>CREDIT

<DTPOSTED>20251024

<TRNAMT>4820.00

<NAME>Stripe

<MEMO>STRIPE PAYOUT 4af2c9

</STMTTRN>

<STMTTRN>

<TRNTYPE>DEBIT

<DTPOSTED>20251023

<TRNAMT>-1204.00

<NAME>Amazon Web Services

<MEMO>AWS EMEA SARL us-east-1

</STMTTRN>

… 3 more transactions

Upload under the bank account's Import Statement
A statement PDF in, an OFX ledger out: one <STMTTRN> block per transaction, typed and signed. Illustrative data.

Sage takes six file formats. Your bank sends a seventh.

Sage Accounting will read OFX, QIF, CSV, and XLS, plus BAI2 and CAMT053 for the banks that speak them. What it will not read is the PDF sitting in your downloads folder, which is the only thing many banks hand a small business for an account that has no feed. So the choice becomes typing it in or building a CSV whose headers have to be right every single time.

How it works

From statement PDF to Sage, screen by screen

  1. 01

    Upload the statement

    Scanned, multi-page, and password-protected PDFs all work, up to 50 MB each.

    BankFlow dashboard with the empty state offering a statement upload or an email import address.
    Drop the file in, forward the bank's email to a private import address, or post it to the API.
  2. 02

    Confirm the import

    Review what is queued and decide whether statements carrying warnings still count in your analytics. Nothing is read until you confirm.

    Import dialog with chase.pdf selected, the warning policy listed, and an Import button.
    The warning types that will still count toward analytics are named before anything is extracted.
  3. 03

    Let it parse and reconcile

    Rows are extracted and checked against the statement's own opening and closing balances, so a short statement is caught here rather than during a Sage reconciliation.

    Activity panel showing a Chase statement processing, with the current stage and elapsed time.
    The activity panel names the stage and the seconds elapsed as the statement moves through the queue.
  4. 04

    Filter to one bank account

    This is the step that matters for Sage. An OFX file holding two accounts imports as one, so scope the export to a single account before it leaves.

    Three transactions selected, with the Actions menu open on the category picker.
    Filter down to one account and one period, then act on exactly that selection.
  5. 05

    Export OFX

    Choose OFX rather than QuickBooks. Sage wants the plain file, not the Intuit-headed .qbo variant of it.

    Export dialog with OFX selected, the field list on the right, and a live preview of the rows.
    OFX and QuickBooks sit side by side in the format list. Sage takes the left one.

Once you have the file

Importing the statement into Sage

Sage's import is per bank account, and it is fussier about OFX than it looks.

  1. 1

    Open Banking, then the bank account

    The import belongs to an account rather than to the company, so pick the account this statement covers first.

  2. 2

    Choose Import Statement and select the file

    Sage accepts OFX, QIF, CSV, and XLS here. Files up to 250 MB are allowed, which no statement will trouble.

  3. 3

    Check it read the right account

    Sage imports transactions from the first bank account inside an OFX file and ignores any others, which is why the export was scoped to one.

  4. 4

    Review and confirm

    Sage lists what it read before committing. Once confirmed, the transactions are there to match and reconcile.

Sage also accepts BAI2 and CAMT053 for banks that provide them. If yours does, those come straight from the bank and need no conversion.

What makes a Sage import behave

Scoped to one account

Sage reads the first bank account in an OFX file and ignores the rest, so an export filtered to a single account is the difference between a clean import and a silently partial one.

OFX instead of a mapped CSV

Sage's CSV import needs the right headers for the shape of your file. In OFX the date, amount, and identifier are typed fields, so there is nothing to map and nothing to get wrong twice.

Balance-checked before it leaves

Opening and closing balances are reconciled against the parsed rows, so a missing page surfaces before it becomes a reconciliation that will not close.

FITIDs for overlap

Every transaction carries the identifier OFX defines for de-duplication, so importing a period that overlaps one already in Sage adds only what is new.

Scanned statements handled

A statement that came back as a scan or a photograph goes through OCR before parsing, so a client's emailed copy still converts.

One period at a time

Filter to a month, a quarter, or a year and export exactly those rows, rather than everything the ledger holds.

What Sage accepts, and where each one lands

Six formats reach Sage's bank import. They are not equally convenient.

FormatWhere it stands
OFXIndustry standard, uploaded without editing. One caveat: Sage imports the first bank account in the file and ignores the others.
CSV / XLSAccepted, but the headers must match the shape of your file, which is a mapping you own forever.
QIFAccepted, and awkward: Sage's own guidance has you open the file in a text editor to check transaction order.
BAI2 / CAMT053Bank-issued formats. If your bank offers them, take them straight and skip converting.
PDFNot accepted, which is where this comes in.

FAQ

Common questions

How do I import a bank statement into Sage Accounting?

Sage cannot read a PDF, so convert the statement to OFX first. Then open Banking, pick the bank account, choose Import Statement, and upload the file. Sage lists what it read before you confirm.

Why does my OFX import miss transactions?

Usually because the file contains more than one bank account. Sage imports transactions from the first account in an OFX file and ignores the rest, so export one account at a time.

OFX or CSV for Sage?

OFX, where you have the choice. Sage's CSV import depends on the headers matching the shape of your file, while an OFX file carries typed dates, signed amounts, and transaction identifiers with no mapping step at all.

Will re-importing a period duplicate transactions?

Each transaction carries a FITID, the field OFX defines for de-duplication, so an overlapping import is matched on that identifier rather than on the description and amount.

Does this work with Sage 50 as well as Sage Accounting?

The conversion is the same either way: the output is a standards-compliant OFX file. What differs is where the import lives in each product, so check your version's own bank import screen for the exact path.

Can I convert a whole year at once?

Yes. Upload every statement, let each one reconcile against its own printed balances, then export per account. Sage's own limit is 250 MB per file, which no statement export will approach.

Converting a statement from a specific bank?

Written up for the format each of these banks prints.

Give Sage a file it can read.

Convert the statement, scope it to one account, and import OFX instead of maintaining a CSV mapping.