Most conversion tools read a PDF and hand you a spreadsheet of transactions. Then somebody spends the afternoon categorizing them against the client’s chart of accounts by hand, and checking whether the totals tie out. Kveldo does that part too — against that client’s own Chart of Accounts, with rules that learn, and a reconciliation you cannot override by accident.
Every client has their own Chart of Accounts, never shared. AI suggestions are drawn only from that client’s accounts.
Tick Memorize beside an account and every other matching transaction in the statement categorizes itself. Next month it is already done.
One-cent tolerance, and a statement cannot be accepted while out of balance. The check is not advisory.
CSV, XLSX, QIF, and an IIF built against real QuickBooks Desktop import behavior — not a guess at the spec.
A busy month should not arrive with a bigger invoice. Statement conversion is part of the platform price, and what comes out the other end is already reconciled and already categorized against that client’s own accounts.
Convert one statement or four hundred. Nothing in the pricing punishes a heavy month, so nobody on your team has to think about cost before running a batch.
Opening balance, transactions and closing balance must agree to the penny, with a one-cent tolerance. A batch that does not balance stops and says so rather than quietly producing wrong books.
Not a generic chart. Rules you have already taught for that client resolve first, then exact and fuzzy matches on their own account names — so the export lands in the books instead of in a review queue.
It is reached from the client’s Accounting tab — never from a global menu — so a statement cannot be processed against the wrong client.
Your client uploads it through the portal, or your staff upload on their behalf. Either way it is already on the right client record.
Click Convert on the statement, or tick Start conversion at upload. Whether that box starts ticked is your firm’s own preference.
Use the client’s existing one in a click, or upload a new .xlsx or .csv. Accounts can also be added, edited and deleted by hand, row by row.
Extraction streams, and the screen shows it: a stage rail, a running count of transactions found so far, an elapsed flip-clock and a self-writing ledger page — rather than an opaque spinner. Long statements are supported end to end.
Filter chips narrow to Unknown, Low Confidence or Needs Review, and the list sorts needs-review to the top. Marking a row reviewed keeps your scroll position instead of throwing you back to the top.
Accepting locks the statement and shows what it returned your firm in hours and dollars, including the share your own memorized rules handled. Export files save automatically to the client’s Files, so a previously exported file is never regenerated.
Three deterministic passes run before a model is asked anything. That is not caution for its own sake: the deterministic tiers are free, instant, and get more accurate the longer your firm uses the product, because they are built from rules you taught.
Results are labeled Auto (95%+ confidence), Suggested (80–94%, review recommended) or Unknown (under 80%, must be categorized by hand). A row added manually runs the deterministic passes only — no AI cost — and re-reconciles the batch automatically.
IIF is chronically badly implemented, and a bad IIF fails at import with an error naming nothing you can act on. Kveldo’s exporter is built against real QuickBooks import behavior rather than the published spec alone.
Each transaction exports as a TRNS + SPL pair, so it imports as a real double-entry transaction rather than a stub.
An !OTHERNAME block defines every distinct payee, so the import does not fail on an unknown entity halfway through the file.
A TOPRINT N column keeps check-type disbursements out of the to-be-printed queue, where they otherwise pile up silently.
Credit-card payments map to CCARD REFUND rather than the accounts-receivable PAYMENT type, which is where most exporters get it wrong.
IIF export requires you to confirm the QuickBooks bank account — chosen from a dropdown of the client’s bank accounts and prior names, with an add-new option — and the button stays disabled until you do. The exporter never falls back to the AI-extracted statement header text, which is usually the account holder’s name and is not a real QuickBooks account. That single fallback is the reason a lot of IIF imports quietly create garbage.
Ours is 98.5% first-pass accuracy, across 2,850 real bank statements put through the product by firms working in production. Both halves matter: the sample size, because a percentage without one is a claim rather than a measurement, and first-pass, because it counts only the results that came back needing no human correction at all. These were real documents rather than a synthetic test set, and it is a pilot measurement rather than a promise about your next batch. This is an aggregate across bank formats rather than a figure per format; we said we would publish it per format and we still intend to, once there is enough volume behind each one to mean anything. And it matters less than the reconciliation check beside it, which is what catches the rest.
Every AI output here is a suggestion a person approves. The model extracts and suggests; deterministic code does every calculation and every reconciliation. Account numbers are masked before any statement text reaches a model, and only transaction text and account names are sent — never full client PII. In this profession that is a feature.
Free for 14 days, no credit card. Bring a real statement and a real chart of accounts — a demo file proves nothing. If it does not handle your bank’s format, we would rather know that too.