Catching duplicate postings that overstate income and expenses in QBO
When income and expenses are quietly doubled
You open a new QuickBooks Online file and the owner beams: "My sales are up 30% this year!" You glance at A/R and see a wall of open invoices. Then you check the bank register and notice deposits coded straight to Sales for the exact same amounts.
Same story on the expense side: rent bill sitting open in A/P, plus a check coded directly to Rent Expense for the same dollar amount and date. On paper, the P&L looks fine. Under the hood, income and expenses are both overstated.
This is one of those messes that doesn’t scream at you right away. Bank is reconciled. A/R and A/P balances look "about right" at a glance. But income is inflated, expenses are inflated, and the balance sheet is carrying phantom receivables and payables.
The pattern is simple:
- An invoice or bill is entered.
- When the money moves, someone skips Receive Payment/Bill Payment and just books a deposit or check straight to an income or expense account.
- The original invoice/bill stays open, so you’ve effectively recorded the transaction twice.
On a busy file, this can add up to tens of thousands of dollars of fake revenue and expenses before anyone notices.
Where this problem hides inside QuickBooks Online
You won’t usually see this from a top-level P&L. You have to look at how open A/R and A/P line up with bank and credit card activity.
On the income side, the pattern is:
- Open invoices in A/R.
- Matching deposits or sales receipts in bank/credit card accounts.
- Those deposits are coded directly to income instead of being applied as payments.
On the expense side, it’s:
- Open vendor bills in A/P.
- Matching checks or expenses in bank/credit card accounts.
- Those checks/expenses are coded directly to expense instead of being recorded as Bill Payments.
A very typical example:
- 3/5: Invoice #1043 to Customer A for $1,200, coded to Sales Income. Still open in A/R.
- 3/6: Bank deposit for $1,200 coded directly to Sales Income.
- 3/1: Vendor bill #567 to Landlord for $900, coded to Rent Expense. Still open in A/P.
- 3/2: Check #2101 for $900 coded directly to Rent Expense.
In March, the P&L shows $1,200 extra sales and $900 extra rent, while A/R and A/P are both overstated by those same amounts.
Reports and filters that expose it
You can surface this pattern with a combination of:
- Customer Balance Detail (or Open Invoices report)
- Filter: Transaction Type = Invoice, Status = Open, Date = cleanup period.
- Vendor Balance Detail (or Open Bills report)
- Filter: Transaction Type = Bill, Status = Open, Date = cleanup period.
- Transaction Detail by Account for Bank and Credit Card accounts
- Filter: Transaction Type in (Deposit, Sales Receipt, Check, Expense).
- Add columns for Name, Memo/Description, Split.
Key red flags to scan for:
- Open invoices with the same amount and near-identical date as a deposit or sales receipt.
- Deposits coded directly to income where you’d expect a Receive Payment.
- Open bills with the same amount and near-identical date as a check or expense.
- Checks/expenses coded directly to expense where you’d expect a Bill Payment.
- Customers or vendors with both open items and lots of bank activity for the same recurring amounts (rent, subscriptions, retainers).
If you’re short on time, sort open invoices by Amount, then scan the bank register for those exact amounts within a week of the invoice date. You’ll spot the worst duplicates in minutes.
What happens if you just live with it
Most clients never notice this. The bank reconciles, cash is right, and they’re used to A/R and A/P being a little messy. But from a professional standpoint, this is not a small problem.
The damage inside your numbers
When invoices and bills stay open while deposits and checks hit the P&L directly, you get:
- Overstated income – Revenue is booked once on the invoice and again on the deposit/sales receipt.
- Overstated expenses – Bills hit expense once, and the check/expense hits it again.
- Inflated A/R and A/P – The open invoices and bills never clear, so the balance sheet carries amounts that have actually been paid.
That leads to:
- Wrong tax projections and planning.
- Misleading margins (both revenue and expenses are high, so gross and net margins can look "normal" while the dollar amounts are wrong).
- Bad KPI trends, especially if duplicates are clustered in certain months.
If you’re signing off on compiled or reviewed financials, this is exactly the kind of distortion that undermines your workpapers.
The damage in client conversations
This also creates awkward conversations:
- The owner thinks sales are up because the P&L says so.
- You later discover $50k of duplicate income and have to walk back prior advice.
- Lenders or investors question why A/R and A/P are high when the client insists "everyone pays on time" and "we don’t owe anyone that much".
Once you explain that income and expenses were both double-booked, confidence in the numbers takes a hit. It’s much easier to prevent this than to explain it after the fact.
A practical way to clean this up
You don’t need anything fancy to fix this, but you do need a systematic approach. The goal is to identify likely pairs (invoice + deposit, bill + check), confirm what really happened, and then unwind the duplicate without breaking cash or reconciliations.
Here’s a straightforward workflow:
-
Pull open A/R and A/P for the cleanup period
Use Customer Balance Detail and Vendor Balance Detail, filtered to open items in the fiscal year (or your chosen lookback window). -
Match open invoices to bank deposits and sales receipts
For each open invoice, look for deposits or sales receipts:- Same amount (or within a tight tolerance).
- Within ~7 days of the invoice date.
- Coded directly to income.
-
Match open bills to checks and expenses
For each open bill, look for checks or expenses:- Same amount.
- Within ~7 days of the bill date.
- Coded directly to expense.
-
Confirm reality with the client when needed
If it’s not obvious from the memo or payee, ask: "Was this payment meant for this invoice/bill?" Screenshots from the bank feed can help. -
Reclassify and link properly
Once you confirm a duplicate:- Change the deposit/check/expense so it hits Accounts Receivable or Accounts Payable (with the correct customer/vendor), or convert it to a Receive Payment/Bill Payment as appropriate.
- Apply the payment to the open invoice or bill.
- Remove or reclass the duplicate income/expense coding.
-
Reconcile impact and re-run reports
Make sure bank recs still tie out after edits. Then re-run the P&L and A/R/A/P aging to confirm income, expenses, and balances now make sense.
Be deliberate about your lookback window. For current-year cleanups, focusing on this fiscal year (or the last 12–18 months) usually gives the best cost/benefit. For older closed years, weigh materiality and whether tax returns or lender packages would need to be amended before you unwind duplicates.
Building this into your standard review
The firms that stay out of trouble don’t rely on "eyeballing" this. They bake it into their diagnostic checklist.
A simple pattern:
- During intake, run a diagnostic that compares open invoices/bills to bank and credit card activity for matching amounts and dates.
- Review the summary by account and month so you can see, for example, that March Rent Expense is overstated by $900 and Sales Income by $1,200.
- Decide up front what you’ll fix, what you’ll document as immaterial, and what might require client or tax-preparer signoff.
This is where a tool like CleanupOwl earns its keep. Instead of manually cross-referencing every open invoice and bill against bank activity, CleanupOwl can hand you a list of suspected duplicates, grouped by income and expense account and by period. You still make the judgment calls, but you’re not burning an hour just building the list.
If you prefer to keep it manual, at least standardize the steps and thresholds in your firm’s SOP so every file gets the same level of scrutiny.
The patterns you’ll keep seeing in client files
Once you’ve seen this a few times, you’ll recognize the same situations over and over.
| Situation | What you see in QBO | Risk if you shrug it off |
|---|---|---|
| Single invoice and deposit match | Open invoice for $1,200 on 3/5; deposit for $1,200 on 3/6 coded to Sales Income | One month’s income overstated, A/R overstated; usually easy to fix but misleading for that period |
| Recurring rent bill and check | Monthly $900 rent bill open in A/P; matching $900 check coded to Rent Expense each month | Rent expense and A/P both overstated across multiple months; distorts operating margin and liabilities |
| Subscription vendor with autopay | Bills entered for $299; bank card charges for $299 coded directly to Software Expense | Expense double-counted, A/P inflated; can add up quickly over a year |
| Mixed correct and incorrect payments | Some invoices closed properly; others left open while deposits hit income directly | Harder to spot; A/R aging unreliable, revenue overstated in specific months |
| Historical cleanups with partial fixes | Prior bookkeeper reclassified some deposits to A/R but left others as income with open invoices | Inconsistent treatment; trend analysis and year-over-year comparisons become unreliable |
Your response should scale with the pattern:
- When it’s a one-off, you can usually fix it quickly and move on.
- When it’s a recurring pattern (rent, subscriptions, key customers), you may need to rebuild several months and tighten the client’s workflow going forward.
- When it’s baked into multiple years, you’ll have to decide how far back to go, what’s material, and whether prior reports or returns need to be revisited.
Before making large-scale changes in prior periods, confirm whether tax returns or lender packages were based on the existing numbers. Document your decisions, especially when you intentionally leave small duplicates in closed years for immateriality or cost/benefit reasons.
Making this part of your cleanup playbook
This issue deserves its own line on your cleanup checklist. It’s not enough to confirm that the bank is reconciled and A/R/A/P tie to the balance sheet. You also need to know whether income and expenses are inflated by duplicate postings.
The good news is that once you’ve built a repeatable process, it’s not that painful. A targeted diagnostic pass, a clear list of suspected pairs, and a short conversation with the client will usually get you to the right answer quickly.
Tools like CleanupOwl can run this kind of check before you even quote the job, so you know whether you’re dealing with a handful of duplicates or a systemic pattern across the year. If you’re a business owner reading this, this is exactly the kind of question to ask your accountant: "Are you checking for invoices and bills that were also recorded directly to income or expense?"
And if you’re the accountant, make sure the answer is yes—whether you’re doing it manually or leaning on automation to surface the issues.
Ready to run deeper QuickBooks diagnostics?
Use CleanupOwl to automatically flag issues like this before you quote or start your next cleanup project.
Start Free Trial