Built into every response
Fraud Detection
Every document gets a verdict.
Veryfi checks the pixels, the math, and whether the same file has been seen before. A color, a score, and the reasons come back under meta.fraud, with no second API call.
AI that reads documents and knows when they're lying.
Start Free Trial See It Work FirstBuilt into every response
Every document gets a verdict.
Veryfi checks the pixels, the math, and whether the same file has been seen before. A color, a score, and the reasons come back under meta.fraud, with no second API call.
A PDF bank statement looks like one page, but it is built from layers: the rendered page, annotations, text objects, extracted text, fonts, images, a page thumbnail, metadata, a digital signature, and the file structure. In this example the ending balance was edited. The page looks normal, but eight layers show the edit: a white annotation box over the old number, a new text object drawn on top, two balances in the extracted text, a font the bank never used, a thumbnail that still shows the original value, metadata from an online PDF editor, bytes added after the digital signature, and an incremental update that leaves the original content stream in the file. Veryfi Fraud Detection reads every layer, not just the pixels.
PDF forensics
One page. Ten layers.
Layer 1 of 10 · What you see
What a person sees on screen or on paper. The rows line up, the logo is right, and the ending balance reads $8,240.18.
Looks normal. A reviewer would approve it. The other nine layers tell a different story.
Layer 2 of 10 · /Annots
Comments, links, form fields, and stamps sit on top of the page content. Viewers draw them last.
White box. A FreeText annotation with a white fill covers the old balance. Easy to add in any editor, and invisible on screen.
12 0 obj << /Type /Annot /Subtype /FreeText /Rect [404 184 468 196] /C [1 1 1] % white /Contents () >>
Layer 3 of 10 · Content stream
Every word is drawn by an operator in the content stream, with its own font, size, and x,y position on the page.
Text overlay. The original $1,240.18 is still drawn. A new text object puts $8,240.18 on top of it, over the white box, in another font.
BT /F1 9 Tf 412 188 Td ($1,240.18) Tj ET BT /F2 9 Tf 412 188 Td ($8,240.18) Tj ET
Layer 4 of 10 · /ToUnicode
What software reads, not what it shows. Each font's ToUnicode map turns glyphs back into characters for search, copy, and data extraction.
Two balances. Copy the ending balance and you get both: the hidden $1,240.18 under the box and the visible $8,240.18.
Ending balance $1,240.18 % hidden, font F1 $8,240.18 % visible, font F2
Layer 5 of 10 · Resources
The bank's statement software embeds one font subset and uses it for every line on the page.
Font mismatch. One run, the new balance, uses ArialMT. The original file never used that font.
/F1 << /BaseFont /ABCDEF+Helvetica
/FontFile2 13 0 R
/ToUnicode 14 0 R >>
/F2 << /BaseFont /ArialMT >>
Layer 6 of 10 · Resources
Image objects placed on the page: the bank logo, a JPEG, and the background security pattern.
No edits. Both images were written when the file was created.
/Im1 << /Subtype /Image
/Filter /DCTDecode
/Width 640 /Height 480 >>
stream
FF D8 FF E0 00 10 4A 46 49 46 …
endstream
Layer 7 of 10 · /Thumb
Some PDFs carry a small preview image of each page, made when the file was written.
Old balance. The thumbnail still shows $1,240.18. The editor changed the page but never redrew its preview.
3 0 obj << /Type /Page … /Thumb 9 0 R >> 9 0 obj << /Width 106 /Height 137 /ColorSpace /DeviceRGB … >>
Layer 8 of 10 · Info + XMP
The Info dictionary and the XMP packet record which software made the file, and when.
Fraudulent creator. The bank's software created the file. An online PDF editor saved it again a week later.
/Creator (Northwind eStatements 4.2) /Producer (Online PDF Editor 2.1) /CreationDate (D:20261101061200Z) /ModDate (D:20261108221547Z)
Layer 9 of 10 · /Sig
The bank signed the statement. A signature covers an exact range of bytes, and anything outside that range is not vouched for.
Edited after signing. The signature covers only the first revision. 2,346 bytes were added after it, including the new balance.
/Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached /ByteRange [0 … 58984] % signed % file is 61,330 bytes
Layer 10 of 10 · File bytes
A header, numbered objects, a cross-reference table of byte offsets, and a trailer. Readers start at the end of the file.
Saved twice. An update after the first %%EOF adds new content, the ArialMT font, and the white box. The old content stream is still in the file, $1,240.18 and all.
4 0 obj … ($1,240.18) … % rev 1 %%EOF % first end 4 0 obj … endobj % rev 2 11 0 obj … endobj % font F2 12 0 obj … endobj % white box trailer << /Prev 58640 >> %%EOF
Every flagged layer points to the same spot: the ending balance was edited.
Mobile capture SDK
Scan anything. Even offline.
The camera for your iOS or Android app. It finds the document, corrects perspective and glare, and reads it with on-device OCR, even with no signal.
New
Parse any document. LLM-ready.
One parsing call turns scans, photos, spreadsheets, emails, and multi-document PDFs into clean Markdown, with tables, checkboxes, and handwriting intact.
Paper in. JSON out.
Receipts, invoices, checks, KYC & KYB documents, and more, read field by field and returned as structured JSON your code can use right away.
Skip the boilerplate. Grab a free SDK, hit the API, and return structured data from any document in any format. Samples, tests, and Postman collections are on GitHub. Private Slack channel for the brave also available. Time to Ship!
SOC 2 Type II · Live
Certified seal
Certified. GDPR, CCPA, and ITAR compliant.
We sign BAAs. PHI handled under HIPAA safeguards.
Dedicated NVIDIA DGX — not shared cloud GPUs.
Cloud API, hybrid, or on-premise when required.
EU data protection. Lawful processing and subject rights.
Every API call logged and timestamped for regulators.
Built for the banks that can’t afford “good enough.”