Fake P45 Detection — Catch Edited Leaver PDFs
A P45 sets the new starter’s tax code and pay-to-date — and an edited one cascades into payroll. New-employer HR teams trust the P45 the starter brings. Payroll uses it to set the tax code and the pay-and-tax-to-date for the year. When that P45 is fabricated or tampered, the error compounds across every payslip until HMRC eventually corrects it — and the discrepancy lands on someone’s desk.
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 altered or fabricated P45, we’re the most specific tool for it.
When htpbe? returns INCONCLUSIVE on a P45, that’s itself a fraud signal in this context — real P45 exports always come from a UK payroll engine, 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 P45 PDFs actually look
Three real fraud mechanics we catch at the structural PDF layer.
Pay and tax to date edited up
Authentic P45 comes from the leaver’s previous employer payroll system. The new starter opens it in any PDF editor or spreadsheet, edits the Total pay to date or Total tax to date, exports as PDF. Producer field changes from the payroll engine to whichever editor was used. Visual layout preserved; file fingerprint flipped.
P45 fabricated to skip a gap of unemployment
There is a six-month gap between the real last working day and the new start date — the candidate was either out of work or working under the table. They build a P45 in Word using a template, type in plausible figures, export to PDF. Producer field shows Microsoft Word; structured payroll metadata is missing.
Tax code rewritten to favour the starter
A BR or D0 emergency code on the original P45 means more tax. The starter edits the code to their preferred letter (1257L, etc.) before submitting. Even when the visual layout is clean, incremental update markers in the xref chain expose the post-issuance edit.
The scale
Why your existing checks miss this
Payroll trusts the P45 figures. Trust them too readily and the error cascades.
HMRC eventually flags the discrepancy. By then payroll has been paying the wrong figures for months.
New-employer payroll systems take the P45 figures at face value when adding a starter — that is the design intent. HMRC catches the discrepancy through Real Time Information once the new employer files an FPS, but the lag can run weeks or months. Tampered P45s used in fraudulent loan or housing applications meanwhile pass through HR and payroll undetected. htpbe? inspects the P45 PDF at the moment of intake, before payroll trusts the numbers — standalone, no HMRC API, no payroll-bureau lookup.
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.
P45 and adjacent UK leaver / starter 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 P45
Authentic P45s come from a UK payroll engine — Sage, IRIS, Brightpay, Moneysoft, Xero, QuickBooks Payroll, Moorepay, ADP UK. When the producer is Microsoft Excel, LibreOffice, Word, Chrome Headless, or a generic PDF library, the P45 was edited or fabricated on a desktop.
Incremental update trail
Edits to pay-to-date, tax-to-date, or tax code leave incremental updates in the xref chain. Authentic single-session payroll exports have one xref; tampered files have two or more.
Tax code and figures arithmetic
The relationship between gross pay, tax code, NI, and tax-to-date is verified. Edited figures break the chain in ways that spreadsheets routinely miss.
Modification timestamp gap
A real P45 issued on the leaving date has CreationDate ≈ ModDate. A months-later modification on a "freshly issued" P45 is a high-confidence flag for post-export editing.
Font subset divergence across pages
Multi-session edits or multi-source assembly leave font subset prefix shifts. Single-session legitimate exports have consistent subsets across all parts of the P45.
Text layer vs. raster layer mismatch
Replaced text in a rendered image leaves the underlying text layer untouched. The two layers stop agreeing — an immediate flag.
Two HTTP calls to verify any P45
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/new-starter-p45.pdf"}'Step 2 — read the verdict
{
"id": "p2q3r4s5-6t7u-8v9w-0x1y-z2a3b4c5d6e7",
"status": "modified",
"modification_confidence": "high",
"modification_markers": [
"LibreOffice Calc producer detected",
"Two cross-reference tables — incremental update",
"Modification date 4 months after creation date"
],
"producer": "LibreOffice Calc 7.6",
"creator": "Brightpay (original)",
"creation_date": 1696464000,
"modification_date": 1707350400,
"has_digital_signature": false,
"xref_count": 2,
"has_incremental_updates": true
}Original came from Brightpay in October. Then four months later it was opened in LibreOffice Calc and re-saved — adding a second xref table. Verdict: modified at high confidence. The starter edited the P45 figures before bringing it to onboarding.
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
inconclusive with a producer-mismatch flag, prompting manual employer verification.modified with the incremental-update flag.Related solutions and guides
HR & Hiring
Pre-employment and starter document fraud detection for UK HR and onboarding teams.
Fake P60 Detection
Sister page — same forensics for the annual P60 PDF.
Sponsor Licence Document Fraud Detection
P45 and adjacent records that sponsor-licence holders must keep on file for Home Office audit.
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.