xlsRowvert
Bank statement verification

Fake bank statement detector: score any PDF statement in seconds

Upload a bank statement and Rowvert runs 9 families of checks — the arithmetic a bank can never get wrong, the statistical fingerprints of invented numbers, and the traces that editing software leaves inside a PDF — and returns a score from 0 to 100 with every finding explained. Built for landlords, lenders, employers and immigration advisers who receive statements they didn't download themselves.

Free for 1 page a day without an account · 5 pages a day with a free account · No card needed · PDF discarded after analysis

What the check looks at

Opening + credits − debits = closing

Every genuine statement satisfies this identity. A gap means a row was added, deleted or changed — or a line the extraction missed, which is why the flagged rows are shown next to the PDF.

Running balance

Each row's balance must equal the previous balance plus or minus the amount. An edited figure breaks the chain at exactly one row, and that row is highlighted.

Date order and period

Banks post transactions strictly in date order and only inside the statement period. Inserted lines are usually out of sequence, and future-dated rows are an outright fail.

Round-number share and Benford's law

Real spending is untidy: few amounts are multiples of 50, and leading digits follow Benford's distribution. Invented numbers tend to be round and to start with 5–9 too often.

Producer and creator metadata

Banks generate statements with report engines (iText, PDFlib, Crystal Reports, OpenText…). A producer of Photoshop, Word, Canva, Sejda, pdfFiller or another editor is the strongest single indicator of a fabricated or altered file.

Modification history

Creation vs. modification timestamps, incremental saves appended to the file, and the XMP editing history reveal whether the PDF was touched after the bank produced it.

Fonts and annotations

Statements use one or two font families and no annotation layer. Extra fonts often come from retyped text; text boxes and white-out rectangles show up as annotations sitting over the page.

Scanned documents

If the file is an image, the file-level checks say nothing about the original, and the report says so — the numeric checks still run on the OCR output.

Generated content (AI and templates)

Statements written by ChatGPT or a template generator carry no AI signature in the file, but their content does: prose descriptions instead of merchant codes, amounts without cents, placeholder account numbers, and none of the vocabulary the named bank actually prints. Four dedicated checks target exactly that.

How the score works

80–100Low risk

No indicator fired. The numbers reconcile and the file looks like it came straight from a bank system.

55–79Review

One or two soft indicators: a print-to-PDF producer, a modification timestamp, an unusual share of round amounts. Often innocent; worth a question.

0–54High risk

A strong indicator: an editing application in the metadata, totals that don't add up, future-dated or out-of-order rows, annotations over the page.

Every finding is shown with its reason, so you can disagree with the score. The same report is written into the Summary sheet of the Excel download and returned as JSON by the API.

Can it detect a bank statement made with AI?

Yes, in the way that works. There is no hidden “AI watermark” in a PDF, and image-based AI detectors are unreliable on scans and re-compressed files, so Rowvert does not pretend to have one. What a language model cannot do is behave like a bank: it writes “Grocery purchase at Walmart” where Chase prints “WM SUPERCENTER #1234 POS 08/02”, it rounds amounts to whole dollars, it reuses placeholder account numbers, and it never uses the transaction codes (ACH, FPO, DD, EFTPOS, INTERAC…) that the named bank prints on every line. Those four checks sit alongside the arithmetic, distribution and file-forensics tests, and a generated statement typically fails three of them at once. A generated statement laid out in Word, Canva or an online PDF editor also announces itself in the producer metadata.

Read more: Can AI make a fake bank statement? What still gives it away.

What it is not

It is not a bank verification service — it never contacts the bank, and it cannot see whether the account exists or the balance is real. It is a forensic reading of the document you were given, the same checks a fraud analyst would do by hand in twenty minutes, done in a few seconds. Treat a low score as a reason to ask for an original, not as a verdict; treat a high score as the absence of red flags, not as proof.

Read more: How to spot a fake bank statement — 9 checks anyone can do.

Questions about statement verification

Can this prove a bank statement is genuine?

No tool can. A careful forger can keep the arithmetic straight and strip the metadata, and an honest applicant can re-save a real statement in Preview and trip the modification checks. The report gives you indicators and a score to prioritise what to verify; for a decision that matters, confirm with the issuing bank or watch the applicant download the statement from online banking.

What score should I worry about?

80–100 means no indicator fired. 55–79 means something is worth a look, most often a modified-after-creation timestamp or a print-to-PDF producer. Below 55 means at least one strong indicator, such as an editing application in the metadata, future-dated rows or totals that don't add up.

Does it work on scanned or photographed statements?

Partly. OCR extracts the rows and the arithmetic, running-balance, date and distribution checks run normally. The document-forensics checks are skipped, because a scan of an edited printout looks exactly like a scan of a genuine one. Ask for the bank's PDF when authenticity is the question.

Which editing tools does it detect?

Anything that leaves its name in the PDF producer, creator or XMP history: Adobe Photoshop, Illustrator, InDesign and Acrobat, Microsoft Word and Excel, Google Docs, LibreOffice, Apple Pages, Canva, and online PDF editors such as Sejda, pdfFiller, PDFescape, Smallpdf, iLovePDF, Foxit, Nitro, PDF-XChange, PDFelement and PDF24.

Is the statement stored?

No. The PDF is analysed in memory and discarded; only the extracted rows and the report are kept, for 7 days on a free account and 365 days on paid plans, and you can delete them at any time. See the privacy policy for the full list of sub-processors.

How much does it cost?

The check runs on every conversion. Without an account you get the score and the strongest findings for 1 page a day; a free account shows the full check list and document forensics for 5 pages a day; paid plans start at $15/month for 400 pages. Business plan users also get the report as JSON from the API.

Can it detect statements generated with ChatGPT or another AI?

It detects what generated statements get wrong rather than the AI itself: prose-style descriptions instead of merchant codes, amounts without cents, placeholder account numbers, and missing bank vocabulary — plus the Word/Canva/PDF-editor producer that such files usually carry. Image-based AI detection is not offered because it is unreliable on scans; the report says so rather than guessing.

Who uses this?

Landlords and letting agents screening tenants, mortgage brokers and lenders checking affordability evidence, employers and HR verifying salary claims, immigration advisers preparing visa applications, and accountants who receive statements from clients rather than from a bank feed.