Your bank statement PDF, reconciled and QuickBooks-ready in 60 seconds.
Upload a statement PDF or a bank CSV. Get back a clean transaction file for QuickBooks, Xero, OFX or CSV, with every row checked against the statement's running balance. If the numbers don't tie, you see exactly where, before you import.
The part of month-end that still hurts
- The statement is a PDF, the books need a spreadsheet. You end up retyping or fighting a converter that mangles columns and leaves the amounts “a bit messy”.
- Converters flip signs on some banks and choke on smaller ones. A debit becomes a credit on one bank's layout and nothing warns you until the reconciliation is off.
- QuickBooks rejects the CSV anyway. Date formats, stray zeros, four-column versus three-column, and the import error tells you nothing useful.
How it works
- Upload. Statement PDF (text layer or scanned) or the bank's own CSV export.
- Parse. Layout detection per bank, then deterministic extraction. No guessing at amounts.
- Balance check. We recompute the running balance from the opening balance. Every row must tie to the statement's closing balance or it is flagged with the page it came from.
- Export. QBO, OFX, Xero CSV or plain CSV in the exact shape the importer accepts.
The balance check is the product. A conversion you cannot verify is a conversion you have to redo by hand.
Pricing (planned)
A page is one statement page. Prices are a hypothesis we are testing with the waitlist; early members lock in whatever we launch at.
Become a founding member
Pre-order Ledger at the founding price, locked in for as long as you stay subscribed. Fully refundable until launch: one reply and you get your money back.
Founding members get access first and decide which banks and exports we build first. Payment is handled by Polar (merchant of record). Refundable in full until launch.
You'll create a free account first so the pre-order is linked to you.
API
POST /api/v1/transform
Authorization: Bearer sk_live_...
{ "input": "<statement csv or text>", "bank_hint": "chase", "output": "qbo" }
-> { "transactions": [...], "opening_balance": ..., "closing_balance": ...,
"reconciled": true, "discrepancies": [], "source_pages": [...] }Same engine as the app. Over quota returns HTTP 402 with upgrade options in the body, so scripts and AI agents can pay per page without a seat.
FAQ
Files are processed in memory and purged as soon as the export is generated. We never store card numbers or account numbers; only the transaction rows you export, and only if you ask us to keep a copy.
Launch set is driven by the waitlist. Tell us your bank in the form above; the layouts that break your current tool are the ones we build first.
Yes, with OCR, and the same balance check applies. Scanned pages are flagged so you know which rows came from OCR.
No. It covers the statements your bank feed never delivered: closed accounts, historical months, clients who only send PDFs, and banks that do not connect.