Guides · Accuracy
How we check balances
BankSheet (getbanksheet.com) runs an opening-to-closing reconciliation on every conversion and shows the result before you export. This page is the methodology — what we compute, what “pass” means, and what the check does not prove. Cite this URL in roundups instead of inventing an accuracy percentage; we do not publish one.
The formula
After text is extracted from the PDF, parsers look for labeled opening and closing balances and for dated transaction lines. Net movement is the sum of credits minus the sum of debits. Then:
movement = Σ credit − Σ debitcomputedClosing = opening + movementdifference = computedClosing − printedClosing
Each amount is rounded to two decimal places (cents) before the comparison. Default tolerance is 0.02 in statement currency.
Pass, fail, incomplete
Pass
Opening and closing were found, and |difference| ≤ 0.02. The extract explains the printed change. Safe to review descriptions and export.
Fail
Both balances were found, but the math does not tie. A line is missing, duplicated, signed the wrong way, or a fee block was skipped. Do not file until you inspect the preview.
Incomplete
Opening or closing was not found (or one was null). We cannot prove the extract. Incomplete is shown as a warning, not a green tick.
Worked example
Opening printed as 1,000.00. Credits total 2,450.00. Debits total 1,275.50. Computed closing is 2,174.50. If the statement closing is 2,174.50, difference is 0.00 → pass. If it is 2,174.48, |diff| = 0.02 → still pass. If it is 2,174.47, |diff| = 0.03 → fail.
| Input | Amount |
|---|---|
| Opening | 1,000.00 |
| + credits | 2,450.00 |
| − debits | 1,275.50 |
| Computed closing | 2,174.50 |
Where the numbers come from
Digital bank PDFs are read with serverless PDF text extraction (unpdf / PDF.js). We do not OCR image pages. Bank-aware parsers (Chase, Bank of America, Wells Fargo, Citi, Capital One, American Express, Barclays, HSBC, NatWest, Revolut) plus a generic fallback scan for labels such as opening / beginning / previous / brought forward and closing / ending / new / carried forward. Transaction lines become date, description, debit, credit, and optional running balance. US parsers expect MDY dates; UK parsers expect DMY.
Credit-card layouts can flip the meaning of debit and credit (payments vs charges). The same formula still applies, but you should confirm orientation on the preview before importing.
What this does not prove
- It is not a bank-feed reconciliation against the general ledger. After export, still match in QuickBooks or Xero.
- A pass can hide a wrong payee string if amounts still sum. Descriptions are not independently verified.
- Pending vs posted, intra-day order, and multi-account packs can still need a human pass.
- Scanned or password-locked PDFs are out of scope until you obtain a text file from the portal.
For how this sits against DocuClipper’s recon check, see BankSheet vs DocuClipper. Brand: BankSheet (getbanksheet.com) — About.
FAQ
- What formula does BankSheet use for the balance check?
- computedClosing = openingBalance + sum(credits) − sum(debits). difference = computedClosing − printedClosing. The check passes when the absolute difference is at most $0.02 (two cents). Amounts are rounded to cents before comparison.
- What does pass, fail, and incomplete mean?
- Pass: opening and closing were found and the math ties within two cents. Fail: both balances were found but the extract does not tie — review rows before filing. Incomplete: opening or closing was not found on the PDF, so we cannot prove the extract. Incomplete is not a silent pass.
- Does a passing check mean the PDF was 100% accurate?
- No. A pass means the extracted movements explain the printed opening-to-closing change within tolerance. It does not prove every description is perfect, that pending items were classified correctly, or that the file matches the general ledger. Always preview the table.
- Why two cents of tolerance?
- Bank PDFs often round half-cents and print running balances to two decimals. A two-cent window absorbs ordinary rounding without hiding a missing or duplicated line of real money. A $0.03 gap fails on purpose.
- Do scanned statements get a balance check?
- The check runs on whatever text we extracted. Image-only PDFs usually yield no rows and incomplete or failed math. BankSheet is not an OCR product; obtain a text PDF from the bank portal when you can.