A practice we worked with found a $25,000 gap between what their EHR said they had collected and what QuickBooks said had landed in the bank.
Twenty five thousand dollars. Nobody could explain it. The owner spent two weeks convinced she had been stolen from, or that a payer had quietly clawed something back, or that her billing team had missed a month of deposits.
None of that was true. A prior bookkeeper had been hand-keying deposits and had entered a stretch of them twice. It was a recording problem on the QuickBooks side, and once we found it the number made sense again.
That one had a clean answer. Plenty of them don't, and the reason is that most of the distance between those two screens was never an error in the first place.
If you have ever opened SimplePractice or Valant next to QuickBooks and watched the numbers refuse to agree, here is why your EHR and QuickBooks don't match, and more importantly, how to tell which part of the gap is worth anyone's time.
Start here: they were never supposed to match exactly
This is the part that saves the most time, so it goes first.
Your EHR and QuickBooks are not two copies of the same ledger. They are two different instruments pointed at two different moments.
Your EHR tracks the clinical and billing event. A session happened. A claim went out. A payment was posted to a client's account. It lives in the world of services rendered and balances owed.
QuickBooks tracks the money. A deposit cleared the bank on a Tuesday. A processing fee came out. A refund went back.
Those two events are related, but they are almost never the same day, and frequently not the same amount. A session you held on the 28th might post as a payment on the 3rd and hit your bank as part of a lumped deposit on the 6th, minus a fee, bundled with eleven other clients.
So "these two numbers are identical" was never the goal. It is not achievable, and chasing it is how owners lose a month.
The line that actually matters
Here is the distinction almost nobody draws, and it is the one that tells you who to call.
Bookkeeping answers one question: did the money that arrived get recorded correctly?
Billing answers a different one: did the right amount of money arrive?
Those are two different specialties. Your bookkeeper works from the bank statement backward. Your billing person works from the claim forward. Neither one sees the other end well, and an owner who does not know the split tends to get frustrated with whichever vendor they happen to call first.
Once you can sort a discrepancy into one of those two lanes, the panic mostly goes away. You are no longer looking at "$25,000 is missing." You are looking at a recording question or a collection question, and those have very different answers.
The six usual causes, sorted into their lanes
In our experience across 100+ practices, unexplained gaps come from the same short list. Notice how few of them are anybody's mistake.
Structural. Nobody did anything wrong, and this is most of it.
- Timing. Insurance pays 15 to 45 days after the claim. Your EHR credited the revenue in March, your bank saw it in April. Compare the same calendar month in both systems and you will always find a difference. That is a lag, not an error.
- Merchant processing fees netted out. Stripe, Square, or your EHR's built-in processor takes its cut before depositing. Your EHR says the client paid $150. Your bank shows $145.63. Across a few hundred sessions a month, that is thousands of dollars of "missing" revenue that is really an expense.
- Contractual adjustments. You billed $180. The contracted rate was $112. That $68 is a write-off you agreed to when you signed the payer contract. If your EHR reports gross charges and QuickBooks records net collections, the two will never come close.
A billing question. Your bookkeeper cannot answer these.
- Underpayments and denials. A payer reimbursed less than your contracted rate, or denied a claim that never got reworked. Real money, and it lives entirely on the claims side.
- Recoupments. A payer takes back an overpayment by reducing a future deposit. Your bank shows a smaller number with no explanation attached, and the explanation is in the remittance, not the ledger.
A bookkeeping question. This one is ours.
- Duplicate or missed entries. A deposit entered twice, a month of payments never imported, or someone recording by hand who drifted. This is what the $25,000 practice above turned out to have, and it is exactly the kind of thing a monthly close catches while it is still small.
Three structural, two billing, one bookkeeping. That ratio is worth remembering the next time you are staring at a scary number at 11pm.
What good actually looks like
You do not need the two systems to agree to answer why your EHR and QuickBooks don't match. You need three things to be true, and then a gap between them is expected rather than alarming.
1. Your books close every month. This is the one that does the most work. A monthly close ties your QuickBooks file to the bank and catches recording errors while they are a $400 question instead of a $25,000 one a year later. It is the whole argument for running private practice bookkeeping on a monthly rhythm rather than catching up in the spring. If your bank feed has never been properly reconciled in QuickBooks, start there.
2. Your merchant fees are booked as an expense. Every month, on purpose, rather than letting them silently shrink your revenue. Most practices we meet have never done this, and it does two bad things at once: it understates your gross revenue and it hides a real cost of doing business. One recurring entry fixes it, and your revenue number gets honest immediately.
3. Somebody outside your practice reviews your billing once or twice a year. This is the piece owners skip, and it is the only way to answer whether the right amount of money is arriving. Your bookkeeper cannot tell you that. Your billing person, understandably, is grading their own work. An outside set of eyes on a defined cadence is the fix.
What to ask for in a billing review
If you have never commissioned one, "audit my billing" is too vague to shop for. Ask for these four things specifically.
- Contracted rates versus actual reimbursement, payer by payer. This is the big one. It catches payers reimbursing below the rate you signed, which happens more often than most owners expect.
- Denial and rework patterns. Not just the denial rate, but which denials never got resubmitted and why. Unworked denials are money you already earned.
- Unposted and misposted payments. Payments that hit the bank but never got applied to a client's account in the EHR. This is one of the main reasons the two systems drift apart in the first place.
- AR aging by payer and by age. Anything past 90 days, with a plain answer about what is being done with it.
Ask for the findings in writing, with dollar amounts attached. A review that produces a conversation and no document is hard to act on and impossible to compare against next year's.
When to schedule one
Once or twice a year is a reasonable baseline. Cadence matters less than timing it around the moments when gaps actually appear.
- After a payer contract change or renegotiation. New rates are exactly when reimbursement quietly stops matching what you think you agreed to.
- After an EHR migration. Data moves, mappings break, and historical balances rarely come across cleanly.
- After a billing staff change, whether that is a new hire, a departure, or a switch to or from an outside billing company.
- Before a decision that leans on the numbers, like adding clinicians, signing a lease, or taking on debt.
One more thing worth saying plainly. If you do find a real gap, do not book an adjusting entry just to make the totals agree and move on. That buries the problem inside a number your CPA will rely on later, and it makes next year's version of this conversation worse. Fix the cause, or leave it visible until you can.
Keep the paperwork either way. Your deposit detail, processor statements, and payer remittances are what prove your revenue is what you say it is, and deposit information sits on the IRS list of supporting records for gross receipts.
Why your EHR and QuickBooks don't match: the short version
Why your EHR and QuickBooks don't match usually comes down to structure, not theft. The two systems measure different moments, so payer timing, processing fees netted out of deposits, and contractual adjustments account for most of the distance between them before anyone makes a single mistake.
The useful move is not reconciling the two. It is sorting the gap. Bookkeeping answers whether the money that arrived was recorded correctly, and a monthly close plus properly booked merchant fees covers that. Billing answers whether the right amount arrived, and that takes an outside review once or twice a year, timed around contract changes, EHR migrations, and staffing shifts.
Get both of those running and the gap stops being a mystery you carry around. It becomes a number you can explain, which is a very different thing to live with.
If this is useful, we write about this kind of thing regularly over in our resource library.
Nate
Related reading: What's a bank reconciliation and how do you do it? · Private practice bookkeeping · Diagnose a high cost of services · 5 questions to ask a bookkeeper
Straight from the source: the IRS list of what kind of records to keep, which names deposit information as a supporting document for gross receipts.
