PennyTie › Guides › How it checks
How PennyTie checks your numbers
After reading a statement, PennyTie does arithmetic on what it found and tells you whether the numbers agree. This page explains each check, and is just as clear about what a passing result does not prove.
The short answer
- The core check: opening balance + credits − debits must equal the closing balance printed on the statement, to the cent.
- Three outcomes: verified, requires review, or unsupported. PennyTie never guesses to force a pass.
- A pass means internal consistency only. It does not prove the statement is genuine or that transactions are labeled correctly.
See a check on the sample Free up to 5 pages. Nothing is uploaded.
The core formula
Every statement obeys one rule: what you started with, plus money in, minus money out, is what you ended with. PennyTie reads the opening balance, the closing balance and every transaction, then computes the left side and compares it with the closing balance printed on the page.
When the difference is not zero, this guide shows how to find the cause from the size of the gap.
Cent-exact math with BigInt
Amounts are converted to whole numbers of cents and added as BigInt integers. Ordinary decimal numbers in JavaScript are floating point, which can produce errors like 0.1 + 0.2 = 0.30000000000000004. Integer cents avoid that, so a difference of 0.00 really is zero, not "zero within rounding".
What the three results mean
| Result | What it means | What to do |
|---|---|---|
| verified | The balance formula ties to 0.00, the other checks that apply pass, and no row is flagged | Still skim the rows; see the limits below |
| requires review | A check failed, a balance is missing, or a row is flagged | Look at the flagged rows and the difference, fix or confirm, then export |
| unsupported | The statement could not be read in a way PennyTie trusts | Convert another way; for example, scanned images are not supported |
If you add or edit rows yourself, the report says so.
The other checks
Running balance chain
Where the statement prints a balance on each row, PennyTie checks that each row follows from the one before it: previous balance plus this row's amount equals this row's balance. The result reports how many rows are consistent, such as 41 of 41. This catches a dropped or misread row even when the totals happen to cancel.
Matching the statement's own totals
Many statements print summary lines such as total deposits and total withdrawals. When they are stated unambiguously, PennyTie compares them with the sums of the rows it read. A mismatch is reported.
Chaining several statements
When you merge multiple statements, PennyTie checks that each closing balance equals the next statement's opening balance, and that periods do not overlap. If it cannot confirm the link, it says so rather than passing silently.
Credit card sign rules
On a card statement the balance is an amount you owe, so the signs flip compared with a bank account: purchases increase the balance owed, and payments and credits reduce it. Some card statements mark credits with CR and leave purchases unmarked; others group everything under headings like Payments and Credits and Purchases, with every amount printed positive. PennyTie tries the bank convention and the card convention and keeps the one that ties to the closing balance. When it uses the card convention, it shows a note that amounts are changes to the balance owed (purchases positive, payments and credits negative). If neither ties, the result is requires review. See credit card statement PDF to CSV.
What a passing check does not mean
The check is internal consistency. It does not prove the statement is genuine, came from your bank, or is unaltered. It does not prove each transaction is categorized or described correctly. Do not use PennyTie to authenticate a document.
- Offsetting errors: two mistakes that cancel each other can still tie. The running balance check catches many of these, but only where the statement prints row balances.
- Your judgment still matters: skim descriptions, dates and signs before importing into your books.
How well tested is it?
PennyTie has an automatic test run (tests/run.mjs) over 29 fictional statement files. That shows the logic behaves as designed on those layouts. Verification on real banks' PDFs is still limited, and layouts vary a lot between banks. When a statement cannot be read confidently, PennyTie does not force an answer: it marks the result requires review or unsupported so you can see the problem. Found a statement that fails? Email pennytie.support@gmail.com (please remove personal details first).
Watch the checks run
Drop a text-based PDF and read the check list under the result.
Questions
What does verified mean in PennyTie?
Opening balance plus credits minus debits equals the printed closing balance, and the other checks that apply also pass. It means the numbers are internally consistent.
Does verified mean the statement is genuine?
No. It cannot tell whether a statement is authentic or unaltered, and it does not confirm transactions are categorized correctly.
Why BigInt cents?
Whole-number cents make sums exact. Floating-point decimals can introduce tiny rounding errors.
What if a statement cannot be read?
PennyTie does not guess. It marks the result requires review or unsupported.
How well tested is it?
Automatic tests run on 29 fictional statement files. Verification against real banks' PDFs is still limited.