Bank Statement PDF to CSV and JSON, Balance-Checked avatar

Bank Statement PDF to CSV and JSON, Balance-Checked

Pricing

from $30.00 / 1,000 statement pages

Go to Apify Store
Bank Statement PDF to CSV and JSON, Balance-Checked

Bank Statement PDF to CSV and JSON, Balance-Checked

Convert US bank and credit card statement PDFs to transaction rows, including scanned statements. Every statement is checked against its own opening and closing balances. No AI, and billed only for statements that produce transactions.

Pricing

from $30.00 / 1,000 statement pages

Rating

0.0

(0)

Developer

Akshay Nair

Akshay Nair

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

Turn US bank and credit card statement PDFs into clean transaction rows: date, description, signed amount and running balance. Scanned statements work too.

Every statement is checked against its own printed balances: opening balance + every row = closing balance. You get told whether it adds up, so you know which conversions to trust without reading them line by line.

Why use it

  • Checked, not guessed. Each statement comes back balanced, off (with the exact difference) or unchecked. There's no LLM involved, so it can't invent a transaction.
  • Reads scans. Image-only PDFs go through built-in OCR at no extra charge.
  • Handles real statement layouts. Separate debit and credit columns, tables grouped by type with unsigned amounts, checks listed several to a line, descriptions that wrap, statements with no year printed, and several accounts in one PDF.
  • Credit cards too. Charges come out as money out, and the check runs against the balance owed.
  • You only pay for results. Files that are unreadable, password-protected or contain no transactions aren't billed.

How to use it

  1. Point the actor at your PDFs, either way:
    • Links to statement PDFs: paste direct links (signed S3, Drive or Dropbox links work).
    • Stores with PDFs: choose key-value stores in your Apify account that hold the PDFs. Every PDF in a chosen store is read, and the actor gets read access to those stores only.
  2. Click Start.
  3. Get all transactions from the Output tab, as CSV, JSON, Excel or through the API.

Common uses: bookkeeping catch-up, loan and mortgage document processing, tax preparation, and feeding statements into accounting tools or AI agents. Banks usually export CSV for only recent activity, so older history often exists only as PDFs.

Input

FieldWhat it does
statementsDirect links to the PDFs.
statementStoresKey-value stores in your account holding PDFs (records ending in .pdf).
statementYearYear to use for statements that print no year anywhere. Optional; defaults to the current year. Statements that print a year ignore it.

Give at least one link or store.

{
"statements": ["https://statementtospreadsheet.com/sample-statement.pdf"]
}

Output

One dataset row per transaction, across all statements. Money out is negative.

{
"statement": "sample-statement.pdf",
"date": "2025-12-28",
"description": "COFFEE CORNER #12",
"amount": -45.1,
"balance": 954.9,
"statementStatus": "balanced"
}

A SUMMARY record in the run's key-value store, with one report per statement:

{
"statement": "sample-statement.pdf",
"status": "balanced",
"pages": 1,
"transactions": 4,
"scanned": false,
"yearAssumed": false,
"card": false,
"accounts": 1,
"openingBalance": 1000,
"closingBalance": 1764.75,
"computedBalance": 1764.75,
"difference": 0,
"csvKey": "1-sample-statement.csv",
"note": "Opening balance plus every row equals the closing balance."
}

A CSV for each statement, in the same store under its csvKey, ready for Excel or Google Sheets.

What each status means

StatusMeaningBilled?
balancedOpening balance plus every row equals the closing balance.Yes
offThe rows don't add up, usually because OCR misread a figure on a scan. difference says by how much. Check before relying on it.Yes
uncheckedRows were found, but not the opening and closing balances.Yes
no-transactionsNothing recognizable as transactions.No
password-protectedRemove the password and try again.No
unreadableNot a readable PDF.No
download-failedThe file couldn't be fetched. note says why.No
over-budgetYour run's spending limit doesn't cover this statement, so it was skipped.No

Pricing

Pay per page, for statements that produce transactions, including their legal and marketing pages. There's no subscription. Set a maximum cost per run in Apify and the actor stops before going over it.

What it works with

US checking, savings and credit card statements in US dollars. It has been tested on statements in the layouts of Chase, Bank of America, Wells Fargo, Capital One, U.S. Bank, PNC, Navy Federal, USAA, Ally, Huntington, KeyBank, Chime and SoFi.

Limits to know about:

  • Non-US statements aren't supported yet: day-first dates, other currencies and European number formats won't read correctly.
  • OCR can misread figures on faint or fax-quality scans. The balance check catches this, and the statement comes back as off instead of looking fine.
  • Banks change their layouts. If yours comes back as no-transactions, please open an issue on the Issues tab.

Privacy

Your files are processed on Apify's servers during the run. The actor reads only the links and stores you give it and sends your data nowhere else: no AI services and no third-party APIs. It doesn't write statement contents or file names to the run log. Results are saved in your own Apify storage, under your storage retention settings.

Want nothing uploaded at all? statementtospreadsheet.com does the same conversion entirely in your browser.

Disclaimer

Output is provided as-is. It isn't accounting, tax or financial advice, so check important figures against the original statement. This actor isn't affiliated with any bank named above.