Manav.id
Compliance · 5 min read

The vendor invoice scam: deconstructing account details substitution

The vendor invoice scam: deconstructing account details substitution

This fraud does not require a forged invoice, a fake domain or a spoofed sender. It requires access to a real vendor's mailbox and the knowledge that account numbers are displayed truncated on the screen where they are approved.

Why is vendor bank change fraud so hard to stop?

Because nothing about it is anomalous. The invoice is genuine, the letterhead is genuine, the vendor's email account is genuine — it is simply controlled by someone else. The changed field arrives inside a legitimate document, through a legitimate channel, from a legitimate sender.

Key takeaways
  • The attacker sends from the vendor's real mailbox, so every email authentication check passes. There is no signal to detect.
  • Approval screens truncate account numbers and bury change flags in sub-tabs, which is where the substituted digits live.
  • Total rendering — showing every material field in full at the moment of approval — is the cheapest half of the fix and requires no cryptography.

The sequence, with the detection opportunities marked

Vendor mailbox compromisedweeks of quiet readingGenuine letterhead, genuine invoicenothing to detectOne field changedthe account numberAP updates the vendor masterroutine changeEvery future payment redirecteduntil reconciliation
There is no forgery to detect. The attacker sends real documents from a real mailbox.
  1. Vendor mailbox compromised. Typically through credential phishing at the vendor, not at you. No detection opportunity on your side.
  2. Attacker observes. They read months of correspondence, learn invoice cadence, amounts, contacts and tone. None.
  3. Change request sent. From the genuine mailbox, on genuine letterhead, referencing a real invoice. SPF, DKIM and DMARC all pass because the mail is genuine. None from email authentication.
  4. AP updates the vendor record. Sometimes after a callback to a number in the email. This is the control point, and it usually fails.
  5. Invoice approved. The approver sees vendor name, amount and reference. The account number is truncated. This is the second control point, and the interface defeats it.
  6. Payment released. Recovery window measured in hours for a wire.

Why every email control passes

Organisations invest heavily in email authentication, and it works against spoofing — a message claiming to be from a domain it did not originate from.

This attack does not spoof. The message originates from the vendor's genuine infrastructure, signed by their genuine keys, from their genuine mailbox. Domain-based authentication confirms it is authentic, which it is. The compromise is upstream of everything your gateway can evaluate.

The account masking problem

Truncating account numbers in user interfaces is a habit imported from consumer banking, where it prevents shoulder-surfing of a customer's own account. In an approval screen it is actively harmful.

Consider a genuine account number and a substituted one, displayed as most AP systems display them:

Genuine      GB29 NWBK 6016 1331 9268 19    displayed as  ****9268 19
Substituted  GB29 NWBK 6016 1331 4471 02    displayed as  ****4471 02

Genuine      021000021 / 5847392016         displayed as  ****2016
Substituted  121000248 / 9932847016         displayed as  ****7016

In the second pair, the routing number changed entirely — a different bank, a different state — and the display shows only trailing digits of the account. An approver comparing against memory or against a prior payment sees a different suffix, which is exactly what a legitimate account change would also show.

Total rendering, which costs nothing

The first half of the fix requires no cryptography, no vendor enrolment and no new system. Change the approval screen to render every material field in full:

The last item is the highest-value single change available, and most AP systems either do not surface it or bury it in a sub-tab an approver never opens.

The second half: verifying the change itself

Rendering helps the approver notice. It does not establish that the vendor requested the change, which is the underlying question.

That requires a signal from the vendor that an attacker in their mailbox cannot produce: a signed change statement from the vendor's authorised officer, rendering the full old and new details, verifiable by you without calling anyone.

The callback disappears from the critical path, which matters because the callback is the step that most often fails — the number came from the compromised mailbox.

What to do this week

  1. Pull every vendor bank detail change from the last twelve months. Count them.
  2. For each, determine whether it was verified by any means beyond reading the request, and whether the contact used came from the request itself.
  3. Screenshot your own approval screen. Count how many of the five material fields are rendered in full.
  4. Compute your exposure: average payment value to a vendor over the interval between a details change and the next reconciliation.

That fourth number is your loss per undetected substitution, and it is usually larger than people expect because it spans multiple invoices rather than one.

Why the usual controls miss it

Control by control
ControlWhy it misses
Email authenticationThe mail is genuine — the account is compromised, not spoofed
Invoice matchingThe invoice is real and matches a real purchase order
Callback verificationThe number often comes from the fraudulent message
Anomaly detectionA vendor changing banks is a normal, frequent event
Dual approvalTwo people compare the same masked field on the same screen

The single highest-value change is to gate the amendment rather than the payment, and to render the delta: what the details were, what they are becoming, when they last changed and through which path. A change plus a recent prior change is the strongest signal available.

Objections and honest limits

“We verify every change by phone.” Then the control is only as good as where the number came from. Use a number from the vendor record as it stood before the change request, and record which number was used.

“The vendor should secure their email.” They should. You cannot make them, and your loss does not depend on their improving. The control has to work while their mailbox is compromised.

Gating the amendment

  1. Treat a banking change as its own approval event. Separate from invoice approval, with its own evidence.
  2. Render the delta in full. Old and new account, old and new bank, last change date and path.
  3. Call a number from the pre-change record. And record which number was used, not just that a call occurred.
  4. Ask the vendor to countersign. For your top twenty payees by value, which is most of the exposure.
  5. Hold the first payment after a change. A short delay costs little and removes the attacker's timeline.

Terms used here

Vendor master
The stored supplier record including banking details. Amending it redirects every future payment.
Business email compromise
Fraud conducted from a genuine, compromised mailbox rather than a spoofed one, which is why authentication controls do not detect it.
Delta approval
Approving a change by reviewing what it changes from and to, rather than reviewing the resulting record.

Frequently asked questions

Would better email security stop this? No. The message is genuine, sent from the vendor's real mailbox. Every authentication check passes correctly because there is nothing inauthentic about the message.

Is the callback useless? It is useful when the number comes from your own vendor record rather than from the request, and it still fails when the vendor's own systems and phone are compromised. Treat it as one signal, not as verification.

Why is masking harmful here? It hides the characters an attacker alters. Masking protects a customer viewing their own account; it degrades an approver verifying someone else's.

What is the cheapest improvement? Render all material fields in full and flag changes since the last payment with the old values shown. No new system, no vendor cooperation, immediate effect.

Why doesn't email authentication help? Because the mail is genuine. The vendor's own account is sending it; nothing is spoofed.

Why gate the change rather than the payment? The change redirects every future payment. A perfectly controlled payment to an altered record is still a loss.

What is the strongest available signal? A banking change, combined with how recently the details last changed and through which path.

Where this fits in Manav

Manav renders the full beneficiary details and the delta from what was on file, binds the approver's signature to that exact payload, and has the payment service recompute the digest before it releases funds.

See payment gating →

Sources and further reading