* * * 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 free
02 / 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%
04 / FAIR QUESTIONS
GET YOUR API KEY →
QUESTIONS? HELLO@PENNYOCR.COM
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.