A claim was paid and the money arrived. Later, an outside review finds the payer had been paying below your contracted rate on that code all along — and the shortfall was never flagged. Nobody caught it because the underpayment didn’t look like a problem. It was inside a “paid” claim, buried by how the payment was posted.
Payment posting is the step where money meets the claim: every remittance advice is recorded against the specific claim and service line it pays, with the allowed amount, the adjustment, the patient responsibility, and the reason codes that explain each. Posted carefully, it surfaces underpayments the moment they arrive. Posted without checks, it quietly hides them for months.
This guide covers the seven payment posting errors that most often hide underpayments, how to tell a posting problem from a payer pattern, and a short spot-check you can run on your own remittances.
Why underpayments survive inside “paid” claims
Denials announce themselves: they arrive with a zero payment and a reason code, and someone has to work them. Underpayments come with money attached, so they clear review without a second look. If posting confirms only that something arrived — instead of checking it against what your contract says you were owed — the claim closes as “paid in full” while the shortfall disappears.
1. Posting short payments as contractual adjustments without checking the contract
The most expensive posting error. A payer pays less than the contracted allowed amount, and the difference gets posted as a CO-45 contractual adjustment. But CO-45 is expected only when the adjustment equals billed charge minus contracted allowed amount. When the remit’s adjustment is bigger than that difference, the excess isn’t contractual — it’s an underpayment, and posting it as a write-off closes the claim instead of flagging it.
2. Misapplied payments
A payment lands on the wrong patient, date of service, or line — usually because someone matched by dollar amount instead of claim or trace number. The shortfall on the real claim stays open as an unexplained balance rather than being worked as an underpayment, and the phantom credit on the other account can trigger a refund on money the practice was actually owed.
3. Unposted or batch-delayed ERAs
Electronic remittances sometimes never reach the posting queue: a clearinghouse mapping issue, a rejected file nobody reviewed, or a payer format change. The money is in the bank, but the claims still show open balances — and underpayment patterns can’t be seen in remittances that were never posted, while staff chase claims that were actually paid.
4. Denials posted as adjustments
When a zero-pay or reduced line is posted as a contractual write-off instead of a denial, the revenue disappears without ever entering follow-up. The reason code said the line was denied; the ledger says it was adjusted. Denial reports never see it, appeal deadlines pass, and the “write-off” was never contractual in the first place.
5. Missing the secondary crossover
After the primary payer pays, the remaining balance has to go somewhere: to the secondary payer when there is additional coverage, or to the patient. When the balance moves to the patient before the secondary payer has paid — or the secondary claim is never generated — the unpaid balance never gets worked. It becomes a confusing patient statement instead, and often a refund later.
6. Recoupments and takebacks not matched to the original claim
Payers frequently offset payments against previous overpayments on unrelated claims. A claim shows as paid on the payer portal, but the net deposit is smaller because the payer applied a negative adjustment from a prior audit. When posting records only the net amount without tying the recoupment to its original claim, the remittance looks like a short payment with no explanation — and the affected balance can age out unworked. Every recoupment needs a matching entry on the original claim, with the reason code visible.
7. Trusting auto-posting without exception review
Auto-posting is fast for clean, fully paid lines — but it posts whatever the payer sent, including denials as zero payments and short payments as contractual adjustments. Without a human reviewing the exceptions, that’s Error 1 at scale: every underpayment on the remit gets posted as a contractual write-off, automatically, hundreds of times a month. The lines that need a person are the ones that don’t match the expected pattern: denials, zero-pays, unfamiliar codes, and payments below the contracted rate.
One labeled example of the math that catches them
Illustrative example — sample figures only, demonstrating the comparison method. Not real client data.
| CPT | Contracted allowed | Amount paid | Remit adjustment | What it really is |
|---|---|---|---|---|
| 99213 | $92.00 | $92.00 | Correct | Paid in full |
| 99214 | $128.00 | $112.00 | $54.00 CO-45 (on $166 charge) | Underpaid $16 — contract allows only a $38 adjustment on this charge |
| 97110 | $31.00/unit | $27.50/unit | Excess CO-45 | Underpaid $3.50/unit — absorbed as contractual unless compared to the fee schedule |
When the remit’s adjustment is bigger than billed charge minus contracted allowed, the excess is either an underpayment or a fee-schedule mismatch on your side — worth a look before the claim closes.
A 15-minute posting spot-check
Pull ten paid lines from this month’s remittances and run these five checks:
1. Compare paid amounts to the contracted rate
Put the contracted allowed amount next to each paid amount. If fee schedules aren’t visible to the posters, that’s itself a finding.
2. Rebuild the adjustment math
Billed charge minus contracted allowed should equal the contractual adjustment shown. Flag any line where the remit’s adjustment is larger.
3. Check for unapplied cash
Look for payments received but not matched to a claim or patient. A growing unapplied balance signals a reconciliation problem.
4. Reconcile one deposit to one remit
Take a single EFT or check and tie it to its remittance by trace number: deposit to remittance, remittance to posting, posting to deposit. Investigate any gap before the batch closes.
5. Scan the write-off report for denial codes
Pull this month’s contractual adjustments and look for denial CARC group codes. A denial posted as a write-off is revenue that never got a chance to be appealed.
Posting problem or payer pattern?
The distinction decides the fix. If the errors are scattered — different payers, codes, and amounts — the posting workflow is the likely cause. Tighten the process and most of it goes away.
If the shortfalls are systematic — the same payer, the same code, short by the same amount, month after month — that’s a payer pattern, and it usually needs to be worked as a dispute with your contract in hand. That’s where a dedicated underpayment recovery process picks up what posting flagged.
Frequently asked questions
What is payment posting in medical billing?
The step where each payer’s decision is recorded against the claim: what was paid, what was adjusted, what the patient owes, and why. Every remittance advice — electronic 835 files and paper EOBs alike — is posted to the specific claim and service line it pays, and posted totals are reconciled to bank deposits so the ledger reflects real cash.
How can I tell an underpayment from a legitimate contractual adjustment?
A legitimate contractual adjustment equals your billed charge minus the contracted allowed amount — the discount your payer contract actually requires. An underpayment hides when the remit’s adjustment is larger than that difference: the excess was absorbed as if contractual, but your contract never agreed to it. Always compare the allowed amount to your fee schedule before the adjustment is posted.
What is an unapplied payment, and why does it matter?
Money that reached your bank but was never matched to a claim or patient — often a bulk check posted to balance the deposit while line-item matching was deferred. Unapplied cash inflates open AR, masks real underpayments, and can trigger refunds on money the practice was actually owed.
Should we auto-post all our ERAs?
Auto-post the clean lines, review the exceptions. Remittances post accurately when every line matches the expected pattern — full payment, expected contractual adjustment, known reason codes. Denials, zero-pay lines, unfamiliar adjustment codes, and payments below the contracted rate should land in a work queue with an owner. Auto-posting without exception review buries underpayments at scale.
How often should we reconcile posted payments to bank deposits?
Every batch, before it closes. Each remittance total should tie to its deposit by trace number, and every posted total should tie back to the remit. Reconciling monthly — or not at all — lets the ledger drift from the bank for weeks, and by the time the gap is found, appeal windows may have closed on the underpayments hidden inside it.
Posting is where underpayments get found — or buried
Payment posting is the first moment anyone sees what a payer actually did, which makes it the cheapest place to catch an underpayment. The fix for every error above is the same: read the remittance line by line, compare what was paid to what your contract says you were owed, reconcile to the bank, and route every exception to someone who owns it.
If your team is posting carefully and the same shortfalls keep showing up from the same payer, that’s a dispute to work, not a process to fix. Either way, it starts with seeing the variance. Start with a free billing assessment — we’ll review a sample of your recent remittances and show you exactly where underpayments are hiding. If the diagnosis is that posting itself needs dedicated hands, our payment posting services post every remittance line by line, reconcile to your deposits, and flag underpayments while the claim is still fresh. Persistent shortfalls that keep denying after posting belong in a denial management workflow so the patterns get worked, not absorbed.

1 comment