Bank Statement to CSV/Excel Converter avatar

Bank Statement to CSV/Excel Converter

Pricing

from $34.00 / 1,000 statement processed (per document)s

Go to Apify Store
Bank Statement to CSV/Excel Converter

Bank Statement to CSV/Excel Converter

Convert bank and credit-card statement PDFs to clean CSV and Excel (XLSX). Upload privately: nothing is ever made public. Handles US, UK and EU formats, multi-page tables, debit/credit columns. Signed amounts, ISO dates, running balance.

Pricing

from $34.00 / 1,000 statement processed (per document)s

Rating

0.0

(0)

Developer

DTK Foundry

DTK Foundry

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Features

Limited permissions

Share

Turn bank and credit-card statement PDFs into a clean, normalized transaction table — download it as CSV or Excel, or read it straight from the dataset via API. Built for bookkeepers, accountants, and anyone reconciling accounts whose bank only offers PDF exports.

Features

  • Private by design: upload your statement straight into the input form. It goes to your own private Apify storage; nothing is ever shared or made public.
  • Batch conversion: upload a ZIP of statements, or pick a key-value store of them, and convert them all in one run.
  • Normalized output: ISO dates, signed amounts (negative = money out), running balance, detected currency and account number — the same columns for every bank.
  • Deterministic parsing first: fast, free, and exact for table-style statements.
  • AI fallback for messy layouts (optional): when a layout defeats the parser, an LLM retries the extraction — with a hard cost cap per document, and only if you enable it.
  • CSV + XLSX downloads in the run's key-value store, plus the full dataset for API users.
  • No copies: the actor processes your statements in memory and never keeps a copy (details below).

How it works

  1. Give it your statements, privately:

    • One statement: upload the PDF in the Statement PDF field. It is saved in your own private Apify storage, which only you can see.
    • Several statements: zip them and upload the one ZIP file in the same field. Every PDF in the ZIP (in folders too) is converted; other files are skipped.
    • Or a key-value store: create one (Storage → Key-value stores → Create new), upload the PDFs to it, and pick it in the input. PDFs in that store are deleted as soon as the actor has read them.
    • Scripts and integrations: pass short-lived signed links (for example Amazon S3 presigned URLs) in the advanced Secure links field.

    No input? The actor converts a bundled synthetic sample so you can see the output format.

  2. Each PDF is parsed deterministically (text and table extraction). A confidence check — do the running balances reconcile with the amounts? — decides whether the optional AI fallback is needed.

  3. Transactions land in the dataset; transactions.csv and transactions.xlsx land in the run's key-value store, ready to download.

Input

FieldTypeDefaultDescription
statementPdffile uploadnoneOne statement PDF, or a ZIP of several, uploaded in the input form to your private Apify storage. Up to 25 MB.
statementStorekey-value storenoneOne of your key-value stores holding statement PDFs. The actor converts every PDF in it and deletes each one once read; other records are left alone.
dateFormatenumautomonth-first (US), day-first (EU/UK), or auto to infer per document.
llmFallbackbooleantrueRetry unparseable layouts with an LLM. Needs an ANTHROPIC_API_KEY env var on the actor; skipped silently without one.
llmCostCapCentsinteger2Hard AI spend ceiling per document, in US cents (max 3). The AI fallback runs on paid Apify plans only; free-plan runs keep the deterministic result.
pdfUrlsarray[]Secure links: short-lived signed links to statement PDFs, for scripts and integrations.

All three inputs can be combined in one run. With none of them, the actor converts the bundled sample.

Calling it from a script, with your PDFs in a key-value store:

{
"statementStore": "my-statements",
"dateFormat": "auto"
}

Or with signed links from your own cloud storage:

{
"pdfUrls": [
"https://my-bucket.s3.amazonaws.com/2026-09.pdf?X-Amz-Expires=900&X-Amz-Signature=..."
]
}

If a document can't be read, the run's status message says why and what to do, and that document is not charged.

Output

One dataset record per transaction:

{
"date": "2026-09-02",
"description": "ACME PAYROLL DIRECT DEPOSIT",
"amount": 3120.45,
"balance": 5570.55,
"currency": "USD",
"account": "XXXX-4821",
"source_document": "2026-09.pdf"
}
  • amount is signed: negative for money out (purchases, fees, withdrawals), positive for money in.
  • balance is the running balance when the statement prints one, otherwise null.
  • Downloads: transactions.csv and transactions.xlsx in the run's key-value store (Storage → Key-value store tab of the run).

Pricing

Prices below are for Apify's Free plan. Paid Apify plans pay less per event: Bronze 5% off, Silver 10% off, Gold and above 15% off.

Pay per event: one charge per processed document (each PDF in a ZIP counts as one) — no subscription, no minimum, and failed documents are never charged.

Statements/monthWhat you pay (at $0.04/document)
12 (one account, monthly)~$0.48
100~$4
1,000~$40

Compare: manual retyping of one statement takes 15–30 minutes; dedicated statement-conversion SaaS starts around $15/month.

Limitations (please read)

  • Scanned/image PDFs are not supported. The PDF must contain selectable text. OCR is on the roadmap; a scanned statement currently fails with a clear log message and is not charged.
  • Statements with no per-line dates, or layouts where multiple transactions share one line, may parse incompletely. The AI fallback usually catches these; when it also fails, the document is reported as failed and not charged.
  • Ambiguous dates (e.g. 04/05/2026) are inferred per document; set dateFormat explicitly if you know your bank's convention.
  • Password-protected PDFs, and password-protected ZIPs, must be unlocked before upload.
  • An upload is limited to 25 MB, the ZIP as a whole included: plenty for text statements, which are usually 100-500 KB each.
  • Multi-currency statements report the dominant currency for all rows.

Data privacy (GDPR)

  • Nothing is ever made public. You never need to share a statement or create a public link.
  • An uploaded statement stays in your private storage. A PDF or ZIP you upload in Statement PDF is saved in your own Apify storage, visible only to you. The actor may read it, but Apify does not let it change or delete it, so delete it yourself in Storage → Key-value stores when you no longer need it.
  • Statements in your key-value store are deleted. A PDF in the store you pick stays there only until the actor reads it, then the actor deletes it. If the delete ever fails, the run log says so and names the file. Secure links are only read, never changed.
  • Statements are downloaded and processed in memory for the duration of the run only. The actor never writes your documents anywhere, never logs their contents, and keeps no copy after the run ends.
  • Extracted transactions are stored only in your own run's dataset and key-value store, under your Apify account's standard data-retention settings — delete them any time.
  • With llmFallback enabled and an unparseable layout, the statement's text is sent to the Anthropic API solely for extraction. Anthropic's API does not train on this data. Set llmFallback: false for strictly local, deterministic processing.
  • No third party other than (optionally) Anthropic ever receives your data.

Permissions

The actor runs with Apify's limited permissions. It can read only the file you upload in Statement PDF, the one key-value store you pick (to read your PDFs and delete each one after reading), and its own run storage. It cannot list, read, or change anything else in your account. Secure links are only downloaded.

Screenshots

Get a clean, normalized transaction table:

Output dataset with normalized transactions

Download the XLSX and open it straight in Excel:

Converted XLSX opened in Excel

Support & roadmap

Found a statement this actor cannot parse? Open an issue on the Issues tab — layout reports directly drive the parser's test suite. Typical response: 1 business day.

Roadmap: OCR for scanned statements, QIF/OFX export, per-account split files.