Bank Statement PDF to Categorized Transactions
Pricing
$15.00 / 1,000 statement pages
Bank Statement PDF to Categorized Transactions
Bank statement PDF to categorized transactions and CSV, reconciled to the cent against the printed balances. Any bank, digital or scanned. Pay per page.
Pricing
$15.00 / 1,000 statement pages
Rating
0.0
(0)
Developer
Stan Lookoff
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Bank Statement PDF to Categorized Transactions (with Balance Reconciliation)
Turn a bank statement PDF — digital or scanned, any bank — into a clean, categorized transaction list, with proof that no row was missed: every row is checked against the printed running balance, and opening balance + credits − debits is checked against the closing balance, to the cent.
Built for accountants, bookkeepers, lending analysts and FP&A teams who need statement data in a spreadsheet or ledger.
What you can do
- Extract every transaction: date, description, counterparty, signed amount, debit/credit and running balance — one dataset row each.
- Categorize automatically: use the default list (salary, groceries, rent, utilities, software, fees, transfers and more) or pass your own chart of accounts (up to 60 names).
- Reconcile to the cent: each row gets a balance check (
ok,mismatchorunchecked), each page a status, and the statementreconciled: true/false. When a row is missing or misread, the summary says where — for example "expected 6,236.92, printed 6,230.17". A gap at a page break shows up as a brought-forward balance that does not match the previous page. - Get a summary: bank, last 4 digits of the account, currency, statement period, opening/closing balance, total credits and debits, issues found and totals per category.
- Import anywhere:
transactions.csvis ready for Excel, Google Sheets, QuickBooks or Xero. - Newest-first statements are detected and returned oldest-first.
How to use
- Paste a public link to one statement PDF into Statement PDF URL (max 50 MB). A
data:application/pdf;base64,...URL also works. The form is prefilled with a 2-page fictional sample statement ("Maple Ridge Savings Bank — fictional sample data") so you can try it right away. - Optionally set Max pages (caps the price), your own Categories, and the Date format if your statement uses ambiguous dates like 03/04.
- Start the run. Transactions and the summary row appear in the Output tab; the CSV is linked there and in the summary as
csvUrl.
| Field | Required | Description |
|---|---|---|
pdfUrl | yes | Public link to one statement PDF (max 50 MB), or a data:application/pdf;base64,... URL. |
maxPages | no | Process at most this many pages, starting from page 1. Default 20, max 100. |
categories | no | Your own category list or chart of accounts (up to 60 names). Other is always added. |
dateOrder | no | auto (default), day-first or month-first. |
Pricing
You pay per statement page processed. Pages that could not be read are free, and a run that fails is free.
| Event | Price |
|---|---|
| Statement page | $0.015 |
| Example | Cost |
|---|---|
| 2-page sample statement | $0.03 |
| Typical 6-page monthly statement | $0.09 |
| 12 monthly statements × 6 pages (one year) | $1.08 |
| 100-page statement (maximum per run) | $1.50 |
Before reading anything, the Actor works out the price from the page count (capped by maxPages). If the run's maximum cost is lower than that, it stops without charging and tells you the amount to set.
Available on paid Apify plans.
Input example
{"pdfUrl": "https://example.com/statements/2026-09.pdf","maxPages": 20,"categories": ["Revenue", "Payroll", "Rent", "Software", "Travel", "Bank Fees", "Owner Draw"]}
Output example
From the fictional sample statement. One row per transaction:
{"type": "transaction","page": 1,"index": 3,"date": "2026-09-03","description": "POS FRESHMART GROCERY #112","counterparty": "FreshMart Grocery","amount": -87.43,"direction": "debit","balance": 6333.12,"category": "Groceries","balanceCheck": "ok","expectedBalance": null}
And one summary row at the end:
{"type": "summary","bank": "Maple Ridge Savings Bank (fictional sample)","accountLast4": "4821","currency": "USD","periodStart": "2026-09-01","periodEnd": "2026-09-30","pagesProcessed": 2,"transactionCount": 25,"openingBalance": 4250,"totalCredits": 8172.46,"totalDebits": 3549.94,"computedClosingBalance": 8872.52,"closingBalance": 8872.52,"reconciled": true,"pages": [{ "page": 1, "status": "ok", "transactions": 13 }, { "page": 2, "status": "ok", "transactions": 12 }],"categoryTotals": { "Groceries": { "count": 2, "debits": -199.51, "credits": 0 } },"csvUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/transactions.csv?signature=...","priceUsd": 0.03}
Limits
- One PDF per run, up to 50 MB and 100 pages (
maxPages, default 20). Longer statements: raisemaxPagesor split the file. - Up to about 14,000 characters of text per page — well over 100 transaction rows. A page above that is cut, and the summary flags it.
- Up to 60 categories, 60 characters each.
- Balance checks need a running-balance column or printed opening/closing balances. Without them, rows come back
uncheckedandreconciledisnull. - Password-protected PDFs are not supported.
Good to know
- Amounts are read as printed and never "fixed": a misread shows up as a balance
mismatch, so check pages that are notok. - Categories are assigned by an AI model from the description and counterparty; review them before filing taxes or books.
- The CSV and dataset stay available while your run's storage is kept. Download them to keep a copy.
- Questions or a missing feature? Open an issue on the Actor page.