Zoes
← Blog

Vendor email compromise: when the invoice really comes from your supplier

Attackers who break into a supplier's mailbox reply inside your real invoice threads. The sender passes every check. Here is what still gives it away.
By · October 14, 2026 · 6 min read
A person signing paperwork at a desk
Photo: Scott Graham on Unsplash

What it is

Most advice about invoice fraud assumes the attacker is outside, writing from a lookalike domain. Vendor email compromise is the version where they are inside: they have taken over a mailbox at one of your real suppliers, read months of correspondence, and reply in an existing thread about a real invoice - asking you to pay it to a different account.

It is the most convincing form of business email compromise, because almost every detail is genuine: the person, the address, the thread, the invoice number, the amount. Only the bank details are not.

Why every authentication check passes

SPF, DKIM and DMARC answer one question: did this message really come from the domain it claims? Here the answer is yes. The message was sent from the supplier's real mailbox, through their real mail provider, signed with their real key.

Lookalike-domain fraud
Hijacked supplier mailbox
Sender address
Close imitation
The real one
SPF / DKIM / DMARC
Pass for the fake domain
Pass for the real domain
Thread history
Usually a new conversation
Replies inside a real thread
Invoice details
Approximate
Exact - copied from the thread
What is fake
Almost everything
The bank account

Attackers usually get in the same way they get into anyone's mailbox: a phished password on an account without multi-factor authentication. Once in, they often add an inbox rule that moves replies from you into a hidden folder, so the real supplier never sees the conversation.

A hijacked thread

A composite example. Names and domains are fictional.

Maria Okafor <[email protected]>Sep 30, 10:12

Hi Dan, attached is invoice #4471 for the September order, $18,420 net 30 as usual. Thanks!

Dan Whitley <[email protected]>Sep 30, 11:05

Thanks Maria, it's in the run for the 25th.

Maria Okafor <[email protected]>Oct 21, 23:47

Hi Dan, quick heads-up before the run: we've moved banks after an audit and the old account is being closed this week. Please use the updated details in the attached letter for #4471. Could you confirm once scheduled? Our finance team is tracking it.

The third message is from the real address, in the real thread, about the real invoice. The tells are all in the behaviour: a bank change, an explanation nobody asked for, a request to confirm in writing, and a send time far outside the supplier's normal hours.

What still gives it away

  • Any change of bank details, at any point, by email. This alone is enough to stop and verify.
  • A reason for the change that sounds official - an audit, a new bank, a closed account, a tax issue.
  • A request to reply by email rather than the usual process, or to keep it quiet "until it's sorted".
  • Sent at an odd hour for that person, or from a new time zone.
  • A Reply-To that differs from the From address, or a new person copied in from an unfamiliar domain.
  • An attached "letter" on letterhead with new account details, when invoices normally carry them.
  • Urgency attached to an invoice that was previously relaxed ("net 30 as usual").
Detection that only checks whether a sender is authentic will pass this message. What flags it is the request: a payment-detail change inside an invoice thread. Zoes weighs what a message asks for as well as who sent it, and labels change-of-bank-details requests as invoice fraud with the reason shown.

Controls for accounts payable

None of these depend on spotting the email. They make a successful one fail anyway.

  1. 1Bank details are changed only through a written process, never from an email alone.
  2. 2Every change is confirmed by phone on a number from your own records, or from a contract - never from the message, its signature, or the attached letter.
  3. 3New details are held for a short period (for example 48 hours) before first use, with the supplier contact told about the change on a known channel.
  4. 4A second person approves the first payment to any new account.
  5. 5Where your bank offers it, use payee verification or confirmation-of-payee checks that match the account name to the supplier.

What to keep on file for every supplier

Record
Why it matters
A verified phone number
Taken from the contract or the first meeting, never from an email signature
Named contacts
So you know who normally sends invoices and who to call
Current bank details
With the date and the name of who confirmed them
Last verification date
A change request soon after a recent verification is worth an extra check

Who should know this rule

Everyone who can pay an invoice or edit supplier records - including the owner, who is the person most likely to bypass the process “just this once”.

Agree it with suppliers

Verification works best when both sides expect it. A short note to your regular suppliers - sent once, and repeated in onboarding for new ones - turns an awkward phone call into a routine step:

We never change payment details based on email alone. If your bank details change, we will call the contact we have on file to confirm before paying. If you ever receive a request that appears to come from us asking you to pay a new account, please call us on the number in your records before acting.

The second half matters as much as the first. Attackers inside your own mailbox can send fake bank-change requests to your customers, and a customer who knows you always call is far less likely to pay.

Signs a supplier has been compromised

  • Several of their customers receive bank-change requests in the same week.
  • Replies to their address bounce or go unanswered while "they" keep pushing a payment.
  • Their real contact, reached by phone, has not seen your emails.

If you are the compromised supplier

  1. 1Reset the affected account's password and sign out every session.
  2. 2Turn on multi-factor authentication for that account and every other mailbox in the company.
  3. 3Look for inbox rules that forward mail outside or move messages to rarely opened folders, and delete them.
  4. 4Check for external forwarding addresses and connected third-party apps the person did not add.
  5. 5Tell your customers on a known channel - phone, not email - that any bank-change request in the past weeks was not from you.

Reporting quickly matters for everyone involved. In the US, victims who paid should file at ic3.gov and call their bank's fraud line the same day.

Questions

Who pays if we sent the money to the attacker?

That depends on contracts, insurance and local law, and it is often disputed. Clear written verification procedures on both sides make the outcome much more predictable.

Would DMARC have stopped this?

No. DMARC confirms the message came from the real domain - which it did. It protects against impersonation, not against a compromised account.

How do we tell a real bank change from a fake one?

You do not, from the email. You call the supplier on a number you already had and ask.

Keep reading

See what is reaching your inboxes

Connects to Google Workspace or Microsoft 365 in minutes. Try it free for 14 days.