Of all the ways a statement conversion can go wrong, a flipped sign is the most expensive. A missing row is obvious the moment your totals don't match. A wrong sign is not: the row is there, the amount is right, and only the direction is inverted. In a profit and loss report that turns a $900 expense into $900 of income, an $1,800 swing from one character.
Statements express "money out" in at least five different ways, and only some of them are visible in the number itself:
-142.50. Explicit, easy(142.50). Accounting convention142.50-. Trailing minus, common on older systems142.50 DR. A marker, not a sign142.50 in a column headed "Withdrawals". The number carries no clue at allThat last case is the dangerous one. The sign lives entirely in which column the number sits in, so a converter that misreads column boundaries by a few points produces a perfectly formatted file with every debit inverted.
Two situations account for most of it. First, a column of numbers that isn't money at all: check numbers, reference numbers, sequence IDs. Pair one of those with the real amount column and a tool will read them as a debit/credit pair. The tell is decimals. Money on a statement is written with cents, check numbers are not.
Second, statements that pad with spaces rather than aligning columns. The amounts look aligned to you because the text is monospaced in the original, but the underlying coordinates drift by tens of points from row to row. Any tool clustering by horizontal position gets confused.
If the statement has a running balance, you don't have to infer the sign at all. The balance already encodes it: each transaction amount must equal the difference between consecutive balances. That's arithmetic the bank performed, printed on the page.
Given a running balance, a converter that guesses the sign is choosing to guess when the answer is printed right there.
The same check catches misread rows generally. If a row's amount doesn't fit the balance delta, something is wrong with that row. Wrong sign, wrong digits, or a row that isn't a transaction at all.
Transaction exports and many credit card statements omit the running balance, so this check isn't available. Two fallbacks: check the totals if the statement prints them, and scan for anything obviously inverted. A payroll deposit showing negative, or a card purchase showing positive. Those are the errors that cause the most downstream damage, and they're the easiest to spot by eye.
Our converter checks every row against the running balance, corrects signs the balance proves wrong, and flags anything that still doesn't add up.
Try Statement → CSV