Rightshold™ Sign up

Answers · bookkeeping

A vendor emailed new bank details and asked us to pay the next invoice there. How do I check it's real before paying?

Last updated

TL;DR: Treat every bank-detail change as unverified until you've confirmed it by phone with someone you already know at the vendor, using a number from your own records, not one in the request. This is the most common setup for business email compromise: a real or spoofed vendor email says the bank account changed, and the next payment goes to the fraudster. The FBI's IC3 recorded 24,768 business email compromise complaints in 2025 with reported losses of $3,046,598,558, and wire transfer or ACH was the payment type in 86% of them. The FBI's advice is to verify all payment changes in person or via a known telephone number. Make the change a two-person job: one person takes the request and calls back, a different person (or the owner) approves the change, and the first payment to the new account is small, checked or confirmed with the vendor. Watch the edit itself too. Xero users report its bank-detail change email goes only to the person who made the change, so the owner needs another way to see every change. If money already went out, call your bank right away to ask for a recall, and file at ic3.gov. Not legal or banking advice.

What should I check, step by step?

1. Don't change anything from the email, PDF or call that asked for it. Treat urgency, a new country or bank, a slightly different sender domain, or a refusal to talk by phone as warning signs, as the FBI's field offices list them.

  1. Call the vendor on a number you already had before the request: an old invoice, the contract, or your vendor file. Ask for someone you've dealt with and have them read the new details to you rather than confirming yours.
  2. Write down who asked, how, the number you called and where it came from, who confirmed, and when.
  3. Have a different person approve the change than the one who took the request. In a small business that's the owner. Restrict who can edit vendor bank details: Xero has a separate permission for it, and in QuickBooks Online every vendor edit shows in the audit log.
  4. Hold the first payment to a changed account, or send a small one first and confirm with the vendor that it arrived before releasing the full amount.
  5. Before every payment run, list vendors whose bank details changed since the last run and check each change has a recorded callback and approval.
  6. If an AI agent reads the accounts payable inbox, don't let it change vendor bank details or release payments to new details. It can flag the request; a person makes the call.
  7. If a payment already went to a fraudulent account, the IC3 says time is of the essence: contact your bank immediately to request a recall, and file a complaint at ic3.gov with the full transaction details.

How common is vendor bank account change fraud (business email compromise)?

The IC3 describes business email compromise as a scam targeting businesses working with suppliers and those that regularly make wire transfers, carried out by compromising email accounts and other channels such as phone numbers and virtual meetings. In 2025 it took 24,768 complaints and $3,046,598,558 in reported losses, second only to investment fraud, and wire transfer or ACH was the reported payment type in 86% of BEC complaints. The IC3 also says businesses reported over $30 million in losses to BEC scams involving AI in 2025.

Do QuickBooks or Xero alert you when a vendor's bank details change?

QuickBooks Online's audit log records edits to vendors, can't be turned off and keeps events for two years. Changes made by a connected third-party app show as System Administration, not a person, so an app or agent editing vendors is easy to miss unless you look for it.

How do I record a vendor bank change callback and approval?

Keep the evidence somewhere the person who made the change can't edit. Rightshold's request_human_approval hashes the exact change (your vendor reference, a hash of the new bank details, and a hash of your callback notes) and only the owner's account key can decide it. The signed, timestamped decision goes on Rightshold's ledger.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before this payment goes out, check the approval for vendor V-0142's bank change and confirm the bank details in the payment batch match what I approved.”

One-click setup

{
  "tool": "verify_human_approval",
  "arguments": {
    "receipt": "<decision receipt exactly as returned by decide_human_approval>",
    "signature": "<its signature>",
    "action": {
      "type": "vendor_bank_change",
      "vendor_ref": "V-0142",
      "new_bank_details_sha256": "<sha256 of routing and account number in the payment batch>",
      "callback_notes_sha256": "<sha256 of your callback record>"
    }
  }
}

Rightshold doesn't connect to your bank, email or accounting software, and it doesn't verify vendors, detect business email compromise or stop payments. It records the approvals you send and lets anyone check them later. It only protects you if your payment process refuses to pay changed bank details without a matching approval. Not legal, banking or accounting advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'