Fake Utility Bill Detection — Catch Forged Proof of Address
A utility bill is the cheapest forgery in fintech onboarding — and the one your KYC stack waves through. KYC ops at neobanks, brokers, crypto exchanges, and lenders all accept utility bills as proof of address. Fraud rings know it. They author bills in Microsoft Word using a real provider’s template, paste the applicant’s name and target address, export to PDF, upload. The visual layout passes; the file structure does not.
htpbe? analyzes the structural layer of the PDF file — the layer that records every edit, even invisible ones. We don’t inspect holograms, phone photos, or ID biometrics. If your fraud problem is a digitally fabricated or tampered utility bill, we’re the most specific tool for it.
When htpbe? returns INCONCLUSIVE on a utility bill, that’s itself a fraud signal in this context — real bills always come from utility-provider billing systems (SAP, Oracle Utilities, in-house print engines), never from a desktop tool.
One REST call, one deterministic verdict
Upload the PDF. The API returns INTACT, MODIFIED, or INCONCLUSIVE with named markers — in about three seconds.
How fake and tampered utility bills actually look
Three real fraud mechanics we catch at the structural PDF layer.
Bill fabricated in Microsoft Word from scratch
No provider involved. The applicant downloads a real utility-provider template image, drops it into Word, types the name and target address, exports to PDF. The producer field shows Microsoft Word — not the billing system real bills carry.
Real bill with edited address or name
Applicant takes a real bill from another tenant or family member, opens it in any PDF editor, replaces the name or street, re-exports. The xref chain shows an incremental update — visible structural evidence of post-issuance editing.
Old bill with edited statement date
A genuine bill from two years ago becomes a "current" bill by editing the statement period and due date. Modification timestamp gap (years between CreationDate and ModDate) exposes the freshening.
The scale
Why your existing checks miss this
KYC platforms verify the address. They do not verify the file.
Address-validation services confirm the address exists. Not that this PDF is real.
KYC platforms (Onfido, Persona, Jumio, Sumsub) extract the address with OCR and check it against postal databases — they cannot tell whether the underlying PDF was issued by the utility provider or fabricated on someone’s desktop. Address-validation APIs confirm the address exists and is reachable; they don’t confirm this specific bill came from the provider. htpbe? inspects the file structure (producer, xref, metadata, image streams) and surfaces structural fraud markers before account opening.
Five forensic layers, one deterministic verdict
Every PDF we receive passes through the same structural pipeline — no model training, no thresholds to tune.
Metadata analysis
Creation and modification timestamps, producer and creator fields, XMP metadata — the first layer exposes basic tampering.
File structure
Xref tables, trailer chain, incremental updates. Any edit after export leaves a structural fingerprint here.
Digital signatures
Signature chain integrity and post-signature modifications produce deterministic markers. Certainty-level signal.
Content integrity
Fonts, objects, embedded content, page assembly. Multi-session edits and inserted objects are visible at this layer.
Verdict with markers
Deterministic output: INTACT / MODIFIED / INCONCLUSIVE, with named markers for every finding — suitable for audit trail.
Utility bill and adjacent proof-of-address PDFs we check
Every type listed below is analyzed at the structural file layer — not the rendered image.
Detection capabilities
Deterministic structural signals. No probabilistic scores, no model training.
Producer signature on the bill
Authentic utility bills come from provider billing systems (SAP IS-U, Oracle Utilities, CIS+, in-house print engines that route through enterprise PDF libraries). When the producer field shows Microsoft Word, LibreOffice, Google Docs, Chrome Headless, or any consumer PDF tool, the bill was authored on a desktop — it didn’t come from the provider.
Incremental update trail
A clean export from a billing system has one cross-reference table. Re-saves through any PDF editor append a second xref — visible structural evidence of post-issuance editing on a name, address, or amount.
Statement-date vs metadata gap
A bill claiming "Statement period: March 2026" but with a CreationDate or ModDate from a year earlier (or vice versa) is a high-confidence flag. Real bills are issued the day they’re generated.
Image-stream artefacts in pasted logos and headers
Fabricated bills paste the provider’s logo lifted from the public site. The pasted image stream carries different compression characteristics and object structure than authentic embedded headers — a structural fingerprint of fabrication.
Font subset divergence
Real billing-system bills use a single font subset across the full document. Fabricated bills assembled by hand often show subset prefix shifts where text was retyped or pasted, exposing the multi-source authoring.
Single-session vs multi-session creation pattern
Provider billing systems produce bills in one shot — single xref, no incremental updates, CreationDate equals ModDate. Edits and hand-fabrications break this pattern in different but consistent ways.
Two HTTP calls to verify any utility bill
Buyers can skip this section — developers, the integration is two HTTP calls.
Step 1 — submit the PDF
curl -X POST https://api.htpbe.tech/v1/analyze \
-H "Authorization: Bearer $HTPBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://your-storage/applicant-utility-bill.pdf"}'Step 2 — read the verdict
{
"id": "u1t2i3l4-5b6i-7l8l-9z0z-a1b2c3d4e5f6",
"status": "inconclusive",
"modification_confidence": "none",
"modification_markers": [
"Desktop-tool producer (Microsoft Word) — no billing-system signature",
"Single-session creation — no provider metadata",
"No digital signature chain"
],
"producer": "Microsoft Word",
"creator": "Microsoft Word",
"creation_date": 1707091200,
"modification_date": 1707091200,
"has_digital_signature": false,
"xref_count": 1,
"has_incremental_updates": false
}htpbe? returns inconclusive — there’s no edit trail, but the file lacks the billing-system metadata real bills carry. For a utility bill, inconclusive with a desktop producer is itself a high-confidence fraud signal: a genuine bill from any major utility provider would carry a producer string from their billing engine — not Microsoft Word. Treat inconclusive on a POA bill as fraud-positive and route to manual review before account opening.
Customer Stories
Teams that stopped document fraud
Compliance, finance, and risk teams use htpbe? to catch manipulated PDFs before they become costly mistakes.
Caught an invoice where the total had been changed by less than a thousand dollars. Without this I would have approved it without a second look.
Sarah M.
AP Manager
United States
We had three applicants in the same week with bank statements that looked completely fine. Two of them were flagged as modified. You simply cannot see this by reading the document — it is in the file structure.
Lars V.
Risk Analyst, Online Lending
Netherlands
Salary slips were coming with altered figures. We identified two problematic files before the placement was finalised.
Priya K.
HR Operations Lead
India
Since we started checking documents this way, we stopped two applications early in the process that would have been very difficult to reverse later.
Julien R.
Fraud Analyst, Fintech
France
Some applicants were sending PDFs that looked authentic but had been edited in ways not visible to the eye. We now ask for verified originals when something is flagged. Already saved us from a few bad decisions.
Marta S.
Compliance Coordinator
Spain
One invoice was caught because there was a mismatch between the document dates and structure. That particular case would have cost us significantly.
Tariq A.
Finance Manager
United Arab Emirates
Frequently asked questions
modified with the incremental-update marker — even when the visual layout looks pixel-perfect.Related solutions and guides
Fintech & Lending
KYC, account opening, and lending document fraud detection for fintech ops teams.
Fake Bank Statement Detection
Sister page — same forensics for bank statements submitted in KYC and lending flows.
Fake Pay Stub Detection
Same forensics for pay stubs submitted as proof of income alongside POA.
Fake Receipt Detection
Same claims and expense cluster — forensics for fabricated and edited receipt PDFs.
Secure your workflow
Create your account — API key on signup, free test environment on every plan.
From $15/mo. No sales call. Cancel any time.