Unstructured.io Alternative for Bank Statements: Unstructured API Pricing and Excel Output
Aug 30, 2026
Convert your bank statement to Excel now
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Uploading...
Last updated August 2026.
Unstructured is one of the best known open-source document ETL projects, and if you are evaluating it to get bank statements into a spreadsheet, the short answer is that it will read the statement but it will not hand you a ledger. Its CSV output is one row per document element, not one row per transaction, and there is no XLSX, QBO, OFX or QFX writer anywhere in the project. Everything between those two things is code you own.
What Unstructured.io actually is
There are two products under the same name and it matters which one you are pricing.
The first is the open-source Python library, unstructured, released under Apache 2.0. It is very actively maintained: at the time of writing it carries 15,364 GitHub stars and 1,312 forks, and version 0.27.5 shipped on 28 August 2026. It partitions a document into typed elements such as Title, NarrativeText, ListItem and Table, attaches metadata like page number and coordinates, and hands the result back as Python objects you can serialize.
The second is the commercial Platform, a hosted service with a UI, connectors, workflow orchestration, chunking and embedding. That is the one with the pricing page, and it is aimed at teams building retrieval pipelines for language models.
Both are built for the same destination: getting messy documents into a shape a model can consume. Neither is built to produce an accountant deliverable, which is a different target entirely.
Unstructured API pricing
The published Platform pricing is short.
| Plan | Price | What you get |
|---|---|---|
| Open source library | Free, Apache 2.0 | Run it yourself, no metering, you supply the compute |
| Free | $0 | 10,000 pages to start, no card required, all features included |
| Pay-as-you-go | $0.015 per page | Charged after the first 10,000 pages, all features included |
| Business | Custom, via sales | Dedicated instance or VPC, multi-user access, full data isolation, dedicated support |
One thing to check at signup: the rates above are what the pricing page displays today, but the structured data embedded in that same page still advertises an older arrangement of 15,000 free pages a month at $0.03 per page with the bill capping at $3,000 a month. The two do not agree, so confirm the rate that applies to your account rather than budgeting from a number you read anywhere, including here.
On compliance the Platform is solid: SOC 2 Type 2, ISO 27001, HIPAA compliant, GDPR ready, and in-VPC deployment for teams that cannot let documents leave their own tenant.
Can Unstructured convert a bank statement to Excel?
Not into an Excel file. There is no XLSX writer in the project. It does ship a CSV export, and that is where most evaluations go wrong, because the CSV is not the shape people picture.
convert_to_csv serializes the element list. Every row is one document element, and the columns are type, text, element_id and a long tail of flattened metadata fields such as page number, filename and coordinates. When it hits your statement register, the entire transaction table arrives as a single row whose type is Table and whose text holds the table content. You do not get a row per transaction with date, description, amount and balance in their own columns.
There is also convert_to_dataframe, which gives you the same element-per-row structure as a pandas DataFrame. Useful, and still not a ledger.
| What you want | What Unstructured gives you |
|---|---|
| A row per transaction | A row per document element |
| Date, description, amount, balance columns | type, text, element_id plus document metadata |
| An .xlsx workbook | A CSV or JSON string, or a DataFrame, in Python |
| QBO, OFX, QFX or QIF for QuickBooks | Not offered |
| A balance that foots | Out of scope, nothing checks arithmetic |
Verified 30 August 2026 against the Unstructured GitHub repository and the published pricing page. Open-source projects move quickly, so check the current source before committing to an approach.
What you still have to build on top of it
This list is roughly the same whichever general parser you start from, and it is where the schedule actually goes.
- Table text into rows. The register arrives as one element. Splitting it into transactions, dropping repeated column headers and stitching pages into one continuous ledger is your code.
- Sign normalization. Some banks print separate debit and credit columns, some a single signed column, some a trailing CR marker. Each institution needs its own rule.
- Dates with no year. Registers print 12/28 then 01/03. The year comes from the statement period, and a period crossing December means incrementing partway down the column.
- Wrapped descriptions. A long ACH memo spilling onto a second line arrives as a row with no amount. Merge it wrongly and you have invented a transaction.
- Summary blocks that look like transactions. Fee summaries, interest tables and daily balance grids are tables too, and a general parser has no reason to treat them differently from the register.
- Footing the balance. Opening balance plus credits minus debits has to equal the printed closing balance. Without that check, an extraction that quietly drops one row in four hundred looks perfect and is wrong in a way that surfaces during an audit.
Where Unstructured is genuinely the better choice
Plenty of cases, and they are real.
Your corpus is wide. Contracts, emails, slide decks, HTML, research papers and spreadsheets all go through one pipeline. A statement converter handles one document type on purpose. If your pipeline also has to pull line items off supplier bills, you would still reach for something that can extract invoice data into a spreadsheet rather than write that layer twice.
You are feeding a RAG system. Element typing, chunking and embedding are built in, and that is the job the project was designed for. Statement conversion is not.
It has to run in your tenant. The open-source library runs entirely on your hardware with no metering, and the Business plan offers VPC deployment.
No per-page fee at volume. Apache 2.0 means the library is free forever. At very large scale your only cost is compute you already pay for.
If an engineering team owns the pipeline and bank statements are one document type among many, Unstructured is a reasonable foundation and you should evaluate it properly.
Is Unstructured.io free?
The library is genuinely free under Apache 2.0, with no per-page charge, and you can run it commercially. The hosted Platform gives you 10,000 pages free with no credit card and then charges per page. The costs that do not appear on either bill are developer time to build and maintain the statement logic and the compute to run the layout and OCR models.
Unstructured.io vs a bank statement converter
Ask who operates it and what the deliverable is. If an engineer owns it, it lives inside software your team maintains, and the output feeds a model, use Unstructured. If the deliverable is a spreadsheet that has to reconcile and the person doing the work is a bookkeeper, the parsing library is the wrong altitude and you will spend the project building the half that is missing.
Among the other API-first parsers worth comparing, Reducto is the closest commercial equivalent with per-page pricing published, Docling is the other major open-source option, and LlamaParse sits in the same lane. For a per-page cost comparison across vendors, see OCR API pricing for bank statements.
If the spreadsheet is the deliverable rather than the input to a model, the bank statement converter is free to try on a real file and returns Excel, CSV, QBO, OFX, QFX or QIF with the running balance already in its own column.
Ready to convert your bank statement?
Upload a PDF and get clean Excel or CSV in seconds. Works with statements from any bank.
Convert to Excel nowFree to try, no credit card required