* * * BANK STATEMENT OCR API * * *
Bank Statement OCR API.
Bank statements are long, dense and mostly tables: date, narration, cheque number, debit, credit, balance — for 30 pages. POST the PDF or scan and every page comes back as a markdown transaction table, billed per page. A 12-month, 40-page statement costs three cents to read.
START FREE — 100 PAGES
$0.75 / 1,000 PAGES
1,333 PAGES PER DOLLAR · NO CREDIT CARD
AT A GLANCE
UPDATED
- PRICE
- $0.75 per 1,000 pages ($0.00075 per page), prepaid
- FREE TIER
- First 100 pages free per account, no credit card
- FORMATS
- PDF, PNG, JPEG, WebP, TIFF
- LIMITS
- 50 MB and 500 pages per request
- OUTPUT
- JSON with markdown (tables preserved) or plain text, per page and joined
- INTERFACES
- REST API, OpenAI-compatible chat completions, MCP server
- CREDITS
- Never expire; requests stop with a 402 when the balance runs out
01 / TRY IT
ONE ENDPOINT.
POST a file, get JSON back — the extracted text, per page and joined. PDF, PNG, JPEG, WebP or TIFF.
curl https://api.pennyocr.com/v1/ocr \
-H "Authorization: Bearer $PENNYOCR_API_KEY" \
-F "file=@statement.pdf"
# $0.75 per 1,000 pages, first 100 free02 / USE CASES
WHAT PEOPLE BUILD.
LENDING & UNDERWRITING
Read applicant statements into rows, then compute income, average balance and bounces with your own rules.
BOOKKEEPING
Turn scanned statements into transactions for reconciliation when there's no bank feed or export.
AUDIT & TAX PREP
Batch years of archived statements into searchable text before review.
PERSONAL FINANCE APPS
Accept statement uploads from any bank without writing a parser per bank.
03 / PRICE CHECK
HALF THE PRICE OF THE BIG CLOUDS.
Per 1,000 pages, public list prices, first tier.
PENNYOCR$0.75
AWS TEXTRACT$1.50
GOOGLE CLOUD VISION$1.50
AZURE DOC INTELLIGENCE$1.50
YOU KEEP50%
DOES IT KEEP THE COLUMNS STRAIGHT?
Transactions come back as markdown tables, row per transaction, so debit, credit and balance stay in their own columns. Running balances let you verify every row arithmetically; the Python guide (pennyocr.com/guides/bank-statement-to-csv-python/) shows how, from PDF to checked CSV.
WHAT ABOUT PASSWORD-PROTECTED PDFS?
Unlock the statement first (qpdf --decrypt --password=... in.pdf out.pdf), then send the unlocked file.
DO YOU STORE MY STATEMENTS?
Not by default: API documents and results are not stored unless you turn on result storage. Hosted fallback processing and provider retention are disclosed in our privacy policy.
ALSO ON THE MENU