Process

A perfect forgery
extracts perfectly.

A retouched document looks fine and reads fine. Holofin checks what the eye can't: the issuer's signature, the totals redone from scratch, and whether the documents in a case agree.

✓ Five independent checks✓ Every signal explained✓ You keep the decision
CASE-2026-0914Lending
1 DOCUMENT AT RISK
Tax assessmentsealed
signature valid
Identity documentMRZ
check digits agree
Payslips3 months
net recomputed
Bank statement · March
3 signals
Recomputed closing balance ≠ printed balancestrong
Different font subset on the balance linemedium
PDF producer: consumer editorweak

One weak signal decides nothing. Three converging on one document, while the rest checks out, is worth a look.

The problem

"Fake document"
means five different things.

Each is caught a different way. A reviewer's eye catches one or two; the rest leave nothing to see on the page.

Fabricated

Made from scratch, often by an online generator. Its IBAN or VAT number does not compute.

Caught by recomputed identifiers

Retouched

A genuine document with one value changed, like a balance going from 1,485.51 to 11,485.51.

Caught by seal, totals, file

Someone else's

Genuine and untouched, but it belongs to a sibling or a parent. Only the person is wrong.

Caught by cross-document check

Expired or superseded

True on the day it was issued, not today: last year's extract, a reissued certificate.

Caught by dates and freshness

Fake or inactive issuer

A well-formed payslip from an employer that stopped trading eighteen months ago.

Caught by official registries

Only one of the five leaves a trace in the file.

That is why file forensics alone is never enough.

See the five checks

How it works

From a pile of documents
to signals you can check.

  1. 01

    Intake

    API, portal, SFTP or email. Bundles are split and each document is classified.

    bank_statement
  2. 02

    Extraction

    Every field, with the spot on the page it came from.

    closing_balance · p.1
  3. 03

    Controls

    Five independent checks on each document and on the whole case.

    5 levels run
  4. 04

    Signals

    Each failure explained: both values, the page, and how strong it is.

    1 document at risk
  5. 05

    Your decision

    You set what passes, what goes to review and what stops.

    Send to review

Why five

No single check
catches everything.

So we run five.

Each one is blind to what the others see. A clean file can carry a forged seal; a genuine, untouched document can belong to someone else. Stacked together, very little gets through.

Documents inPasses cleanno signal01Structuraltext overlaid02Issuerseal unsigned03Contentbalance mismatch04Businessissuer inactive05Case fileholder differs

Controls

Five checks.
Strongest proof first.

We never blend them into one score, so every alert tells you which check fired: an invalid signature, or a harmless re-export.

Level 02Proof

Verification at the source

Where the issuer sealed the document, we verify the seal, then check that the printed values still match it.

Signed PDFsSigned barcodesPassport MRZIssuer fingerprint
Level 04Proof

Official registries

Does the company exist, is it still trading, and are the signatories its officers? In France we check Origami, our own registry; elsewhere, the official register through our partners.

Status on the dateOfficers and ownersAddressVAT number
Level 03Strong

Recomputed totals

Change one figure and everything that follows from it must change too. We redo the maths.

BalancesGross to netIBAN mod-97VATDates
Level 05Strong

Across the case

The only check that catches a genuine document belonging to someone else. Names, employers and addresses must agree.

Holder = IDEmployer = contractSame household
Level 01

The file itself

Reads how the file was built, not what it says. Runs on every document, and points where to look: it never refuses a case on its own.

Overlaid textFont changesRevisionsImage edits

Documents

Each document
carries its own proof.

DocumentWhat we checkWhat gives a fake away
Bank statement →Opening + credits − debits = closing, line by lineA closing balance its own lines don't add up to
PayslipGross − deductions = net; employer matches the caseA net that doesn't follow from the gross
Tax assessmentIssuer seal verified, sealed values vs printed valuesA printed amount the seal doesn't vouch for
Identity documentMRZ check digits vs the names, dates and number aboveA machine-readable zone that disagrees with the page
Company extractRegistration check digits, identifiers, age of the extractA generated number that fails its check digit
InvoiceVAT arithmetic, IBAN mod-97, issuer in the registryAn IBAN that fails mod-97, a supplier that closed

Worked example

A lending case
where one figure moved.

Four documents, one retouched: a "1" added in front of the March closing balance. The page looks flawless.

The document vs its own figures

Opening balance1,240.18 EUR
Total credits+ 3,186.40 EUR
Total debits− 2,941.07 EUR
Closing balance, recomputed1,485.51 EUR
Closing balance, as printed11,485.51 EUR

The gap is exactly 10,000.00: the signature of an inserted digit.

The signals, graded

Stronginternal consistency

The accounting equation does not hold

Stronginternal consistency

The running balance is broken

Mediumtypography

Different font subset on the balance line

Weakmetadata

PDF producer: consumer editor

Means nothing alone: honest people re-export statements too.

Contextrest of the case

The other three documents check out

Seal valid, MRZ consistent, payslips recompute. The suspect document stands alone.

Your reviewer gets a named document, a sum to check and a page to open. Not a score to interpret.

Decision

Holofin reports and explains.
The decision stays with your teams.

A signal is not an accusation. You set the thresholds: what passes, what goes to review, what stops.

Nothing is refused automatically

The verdict prepares the decision, it doesn't take it, as GDPR article 22 requires.

Evidence, not a verdict

A failed sum, a broken signature, two values that disagree. Calling it a forgery is for a court.

Ambiguous cases go to review

A married name, a renamed company, a re-export: escalated with the reason attached.

Every signal can be challenged

Because it is explicit. Never "the algorithm said so".

What is kept behind every signal

Level that fired
issuer, registry, internal consistency, case or file
Values compared
both of them, with the document and page of origin
Seal verification result
issuing certificate and signature validity
Control engine version
hololang 4.2
Date the controls were frozen
2026-10-02
Decisions and reclassifications
kept append-only

A case challenged a year later is re-read with the controls that applied at the time.

Integration

The signal arrives
before the case moves on.

An alert is useless once the money is gone. The checks plug in where documents already arrive.

REST API

Post a document or a case, get fields and signals back.

Webhooks

Notified the moment a signal fires.

SFTP

Overnight batches, or re-check a back catalogue.

Document management

Documents filed back with their type and results.

Upload portal

Checked at upload, so a bad document is re-requested before the case opens.

Frequently asked

On document fraud detection

Analysis of the file itself needs no content at all: it works on properties of construction — metadata, font tables, revision history, internal structure, image statistics. The consistency controls do need content, because comparing the account holder on a statement to the name on an identity document means knowing both names; those run on the fields already extracted from the case. Both families of signal arrive in the same verdict.
Those that carry a proof placed on them by their issuer. Where a document is cryptographically sealed — a digitally signed PDF, or a signed barcode printed on the page — the signature is verified against the issuing certificate, the file is checked for any change made after signing, and the sealed values are then compared to the printed ones. Identity documents, passports and residence permits expose a machine-readable zone whose internal consistency is validated. Several countries also run national schemes that add a signed barcode to tax, utility or payroll documents, and where one applies the same two steps run on it. The detail is on the authenticity verification page.
Yes, but by other means. With no proof from the issuer, verification rests on what the document owes to itself and to the rest of the case: the accounting equation of a bank statement, the net that has to follow from the gross, the mod-97 check digits of an IBAN, the account holder who has to be the person on the identity document. A fraudster who changes one amount then has to make everything else agree, and that is rarely the case.
It counts, but it does not decide on its own. A re-scan, a print-to-PDF or a legitimate re-export rewrites the metadata and erases the revision history, and plenty of people scan their paperwork in complete good faith. That is exactly why there are five levels: analysis of the file opens the line of enquiry, and the issuer's signature, the recomputed totals and the rest of the case are what confirm it.
No. Holofin raises signals, explains them and ranks them; the thresholds and the decision belong to your teams. The GDPR regulates decisions based solely on automated processing that produce legal effects concerning a person (article 22). Calling a document a forgery is a matter for a court, not for an engine.
This is the case that no analysis of the file can catch: the document is true, it has not been retouched, and its signature verifies. What reveals it is the comparison with the rest of the case — the account holder on the bank statement is not the person on the identity document, the tax assessment covers another household, the employer on the payslip is not the employer on the contract. The discrepancy is reported with both values compared and the document each one came from. The case completeness control checks the same thing, on the same case.

Run Holofin on your own cases

Send us real cases, including frauds you already caught. We return the signals document by document, and tell you what we missed.

GDPR compliant European hosting French software vendor
Holofin