Skip to main content

Upload a PDF bank statement

Only have a PDF bank statement? Upload it and Walker Street Data extracts every transaction. This path needs an API key with the transactions:extract scope - see Upload banking data for the shared prerequisites.

You'll need:

  • Machine-readable PDF - the file your bank produces when you download or export a statement, not a scan or photo of a printed page
  • Under 20MB file size
  • One file per request - the filename must end in .pdf. To process several statements, submit one request per file; each returns its own jobId
  • Supported statement types:
    • Official bank statements from Airwallex, ANZ Bank, Bank of Melbourne (BOM), Bank of Queensland (BOQ), BankSA, Bendigo Bank, Commonwealth Bank (CBA), Macquarie Bank, National Australia Bank (NAB), St George, Suncorp, Tyro and Westpac
    • Transaction history reports from ANZ Bank, Commbiz, Commonwealth Bank (CBA), National Australia Bank (NAB), NAB Connect and Westpac
    • Illion Bank Statements
Which PDF to use

For the supported banks above, the standard statement or transaction-history export you download from internet or mobile banking is sufficient - no special format, print settings, or preparation needed. Those exports are already machine-readable, so Walker Street Data reads the transactions directly from the file. What doesn't work is a scan or photo of a printed statement: the text has been flattened into an image, so there's nothing to extract.

How PDF failures surface

Only basic checks happen at upload time - a request is rejected immediately with 400 if the file is missing, empty, over 20MB, or doesn't have a .pdf filename. Everything else is discovered asynchronously:

  • Unsupported bank or statement layout, scanned/image-only PDFs, password-protected PDFs - the upload returns 200 with a jobId, and the job later finishes as Failed. Don't treat a 200 on upload as confirmation that the statement can be processed; always follow the job to a terminal status.
  • Partially readable statements - the job finishes as Completed or CompletedWithErrors with warnings describing what didn't reconcile: a broken running-balance chain, unparseable rows, or account details that couldn't be read. Always check warnings on the job status before relying on the data. See Jobs → Extraction warnings.

A 403 on upload means your key lacks the transactions:extract scope.

Next steps

  • Check status - Track the jobId you got back until processing completes
  • Enriched transactions - See how your submitted transactions are classified and how to retrieve the enriched response