Rightshold™ Sign up

Answers · bookkeeping

How can a small business owner or their accountant stop and catch an employee who takes a customer's payment and then clears the unpaid invoice with a bad-debt write-off, credit memo, credit note or discount so nobody chases it?

Last updated

TL;DR: Treat every write-off, credit memo and discount as a payment you have to approve, because to the business it is one: it reduces what a customer owes without any cash coming in. The classic pattern is that a customer pays, the payment is taken before it's recorded, and the invoice the customer has already paid is then cleared with a bad-debt write-off or a credit so no one sends a reminder. The ACFE's fraud tree lists write-off schemes as a form of skimming receivables, next to lapping. The controls are simple: the person who receives or posts customer payments shouldn't be able to issue or approve credits and write-offs; each one needs a reason and a second person's approval before it's posted; and someone independent should review the month's credits by user and confirm a sample of written-off balances directly with the customers. In QuickBooks Online, a bad-debt write-off is just a credit memo applied through Receive payment, and the audit log, which can't be turned off, shows who made each one.

What should I check, step by step?

1. Take credit and write-off rights away from anyone who receives, opens or posts customer payments. In a very small business, the owner approves every credit and every write-off.

  1. Require a reason code and supporting document for every credit memo, credit note, discount and write-off: a return, a pricing dispute, a service problem, or written evidence of failed collection.
  2. Each month, run a report of credits, discounts and write-offs by user and by customer. Look for one person issuing most of them, round amounts, amounts just under an approval limit, credits that exactly clear an invoice, write-offs of recent invoices or good customers, and credits soon after a payment should have arrived.
  3. Confirm a sample of written-off and credited balances with the customers yourself, by a contact you already have. A customer who says they paid in full an invoice you wrote off as bad debt has found the scheme for you.
  4. Watch the ratio of returns, allowances and credits to sales. It should move roughly with sales; a jump without a known product or service problem needs explaining.
  5. Track what happens when money comes in on an account that was already written off. Recoveries should be visible to someone other than the person who wrote it off.
  6. In QuickBooks Online, check the audit log filtered by user and by transaction type, and open the audit history on individual credit memos. You need admin access for the log, and events are kept for two years.
  7. Keep a dated record of each approved credit and write-off outside the accounting software, so a credit that appears later without a matching approval stands out.

How do employees use write-offs or credit memos to hide stolen customer payments?

When a customer payment is stolen before it's recorded, the customer's balance in your books stays too high: they owe less than the books say. A 2014 Journal of Accountancy fraud quiz explains that a fraudster skimming customer payments may try to hide it by adjusting the receivable with credits or write-offs, and that confirming balances directly with customers and analysing adjusting entries to receivables can find credits recorded without authorization or justification.

Who can write off an invoice or issue a credit memo in QuickBooks Online?

Intuit's QuickBooks Online steps for writing off bad debt are: review the A/R aging, set up a Bad debts expense account and item, create a credit memo for the customer using that item, then apply it to the open invoice through Receive payment. Anyone who can create credit memos and receive payments can therefore clear an invoice this way, so who holds those rights matters.

How do occupational fraudsters conceal theft in the accounting system?

Occupational Fraud 2026: A Report to the Nations (2,402 cases) lists the ways fraudsters concealed their schemes: 19% created fraudulent transactions in the accounting system, 14% altered transactions in it, 12% deleted or omitted transactions, and 6% forced or altered account balances. Only 11% of frauds involved no concealment at all.

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: “Open a human approval request before my bookkeeper posts a write-off. The action is writing off the open balance on one customer invoice as bad debt; I want my approval recorded against the exact invoice and amount before it goes into QuickBooks.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "action": {
      "type": "receivable_write_off",
      "invoice_ref": "INV-1042",
      "customer_ref": "CUST-0193",
      "amount_cents": 48500,
      "reason_code": "uncollectible_after_3_reminders"
    },
    "summary": "Write off the open balance on invoice INV-1042 as bad debt (bookkeeper request; owner to confirm with the customer first).",
    "expires_in_minutes": 1440
  }
}

Rightshold doesn't connect to QuickBooks, Xero, your bank or your customers, and it can't stop anyone posting a credit or write-off in your accounting software or detect one. It records the approvals and credits you send and lets anyone check them later, so it only helps if someone compares the credits in the books against them. QuickBooks behavior is from Intuit's help pages as checked on November 11, 2026; ACFE figures are from Occupational Fraud 2026. Not legal, tax, audit 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}}'