Rightshold™ Sign up

Answers · bookkeeping

How can I tell if someone is paying a fake or former employee through my small business's payroll?

Last updated

TL;DR: Compare the people being paid with the people who actually work for you, and look at where the money lands. A ghost employee is someone on the payroll who doesn't work for you: a made-up person, a departed employee who was never removed, or a friend or relative of the person running payroll. The ACFE's 2024 Report to the Nations found payroll schemes in 10% of 1,921 occupational fraud cases, with a $50,000 median loss, a typical 18 months before detection, and a higher rate at organizations with fewer than 100 employees (14%) than at larger ones (9%). The common tells are two or more employees paid into the same bank account, someone with no tax withholding or benefits deductions, a terminated employee still being paid or whose bank account or address changed after they left, missing personnel files, and payroll running above budget. The control that matters most is that the person who adds people to payroll or changes bank details isn't the person who runs payroll, and that you approve each of those changes yourself and keep a record of what you approved.

What should I check, step by step?

1. Get the payroll register for the last few pay periods yourself, straight from the payroll provider, and check every name against people you know are working for you now.

  1. Sort the register by direct-deposit account and look for one account receiving pay under two or more names. Ask about anyone with several accounts too.
  2. List anyone with no federal tax withholding, Social Security or Medicare, or benefits deductions. Fictitious employees often have none, so check that each of them really exists.
  3. Compare the termination list with the last few payrolls: anyone paid after their last day, or whose bank account or mailing address changed after they gave notice, needs an explanation.
  4. Check that each employee has a personnel file kept apart from payroll, with a signed Form W-4 and Form I-9 on record.
  5. If you have access, verify names and Social Security numbers with the SSA's free Social Security Number Verification Service. The SSA says it's only for wage reporting (Form W-2) of current or former employees.
  6. Watch total payroll against your budget and headcount. Labor costs that run above budget, or an employee number far outside the usual range, are worth a look.
  7. Separate the duties: whoever adds employees, changes pay rates or changes bank details shouldn't also run and approve payroll. In a small business the usual answer is that the owner approves every new hire, rate change and bank change before the next run.
  8. Keep a record of each approval outside the payroll system (who, what, when, and a hash of the bank details you approved), so a later change that wasn't approved stands out.

How common is payroll fraud in small businesses?

The ACFE defines a payroll scheme as a fraudulent disbursement in which an employee causes their employer to issue a payment by making false claims for compensation, for example claiming overtime for hours not worked or adding ghost employees to the payroll. In its Occupational Fraud 2024 report, payroll schemes made up 190 of 1,921 cases (10%), with a median loss of $50,000, a median duration of 18 months and a median loss of about $2,800 per month. Payroll schemes appeared in 14% of cases at organizations with fewer than 100 employees, against 9% at organizations with 100 or more.

What are the red flags of a ghost employee on payroll?

In the case Wells describes, a payroll specialist added fake master records using a co-worker's password he had watched her type, and had the ghosts' pay direct-deposited into his own account. The clues afterwards included ghost records using dead people's Social Security numbers, employee numbers in a gap well above the real ones, no personnel files and no tax or Social Security withholding, multiple direct deposits to one account under different names, and a payroll summary for the supervisor printed in a different typeface from the real ones.

How can a small business without HR keep ghost employees off payroll?

Most small businesses can't split payroll across three departments. The practical version is that the owner keeps the approvals: every new employee, rate change, bonus and bank-detail change is approved by the owner before the pay run, and the person running payroll can't make those changes alone.

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 the next payroll run, ask me to approve this new direct-deposit account for employee W-031: our employee reference, a hash of the new bank details and who requested the change. Wait for my yes or no.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "action": {
      "type": "payroll_bank_change",
      "worker_ref": "W-031",
      "new_bank_details_sha256": "<sha256 of routing and account number as entered in payroll>",
      "requested_by_ref": "<user reference>",
      "effective_pay_date": "2026-11-20"
    },
    "summary": "Approve new direct-deposit account for W-031 before the Nov 20 payroll",
    "expires_in_minutes": 1440
  }
}

Rightshold doesn't connect to your payroll provider, HR system or bank, and it doesn't detect fraud or check that an employee exists. It records the approvals you send and lets anyone check them later. It only protects you if your payroll process refuses changes without a matching approval. If you suspect payroll fraud, talk to your accountant, a fraud examiner or a lawyer before confronting anyone, and keep the records as they are. Not legal, tax, audit or employment 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}}'