Audits & Appeals

How to Read an ERA/EOB as a Dietitian

A plain-English remittance guide for RDs: CO vs PR vs OA, $0-paid ERAs vs real denials, adjustment codes, underpayment checks and payment posting.

Getting a remittance is supposed to be the good part — the money arrived! But if you've ever stared at an EOB full of codes like CO-45, PR-1, and OA-23 wondering whether you were just underpaid, you know it's where insurance billing saves its final trick.

Here's the RD-specific decoder: what each line actually means, who owes each dollar, how to tell a $0 payment that's fine from one that isn't, the checks that catch underpayment, and how posting works — manually or automatically.

EOB vs. ERA in one paragraph

They carry the same information. The EOB is the human-readable PDF; the ERA (the X12 "835" file) is the electronic version your clearinghouse or software receives. If you're reading PDFs and typing numbers into a spreadsheet, you're doing by hand what the ERA exists to automate. Enroll for ERAs (and EFT for the money itself) with every payer you're contracted with — it's free and usually a one-page form.

Anatomy of a remittance line

For each claim line (say, 97803 × 4 units), the remittance shows:

Field Meaning Example
Billed amount Your charge $180.00
Allowed amount The payer's contracted price — the number that matters $124.00
Adjustments Coded differences, each with a group + reason code CO-45: $56.00
Patient responsibility Copay/coinsurance/deductible — you bill the patient PR-3: $20.00
Paid amount What the payer sends you $104.00

The equation to keep in your head: Billed = Paid + Patient responsibility + Write-offs. If those don't reconcile, something on the line deserves a second look. (All amounts on this page are invented examples, not any payer's rates.)

Group codes: who owes each dollar

Every adjustment on a remittance is a pair: a group code that says who is responsible for the amount, and a reason code (CARC) that says why. X12 defines four group codes. Read the group first, because it answers the question you actually care about: can I bill the patient for this, or not?

Group X12 name Who absorbs it In plain terms
CO Contractual Obligation You The contract (or a regulation) says this amount isn't collectible. Write it off; in network you can't bill the patient for it.
PR Patient Responsibility The patient Deductible, coinsurance, copay, or a service the plan doesn't cover that the patient is liable for. Bill the patient per your financial policy.
OA Other Adjustment Neither, by default Used when CO and PR don't apply: prior-payer amounts on a secondary claim (OA-23), exact duplicates (OA-18). Usually informational, but read it.
PI Payer Initiated Reduction Not the patient The payer reduced the amount on its own policy without a contract that covers it. You can't shift it to the patient; if you think it's wrong, dispute it with the payer.

The same reason number can appear under different groups, and the group changes everything. CO-119 and PR-119 both mean a benefit maximum was reached; with CO you absorb it, with PR the patient owes it. Never read the number alone.

The adjustment codes dietitians actually see

The frequent flyers on nutrition claims, with the X12 meaning in plain words:

Code What it means What to do
CO-45 Charge exceeds the fee schedule or contracted amount Normal write-off — but verify allowed amount matches your fee schedule
PR-1 / PR-2 / PR-3 Deductible / coinsurance / copay Bill the patient promptly; see PR-1, PR-2, PR-3
CO-97 Included in the payment for another service already adjudicated (bundling) Check what it was bundled with; often appealable if wrongly applied
CO-16 Claim lacks information or has a billing error Effectively a denial — read the remark code, fix the field; see CO-16
OA-18 Exact duplicate claim/service Confirm you didn't double-submit; if not, the payer mis-matched
CO-29 Timely filing expired The unforgivable one — see CO-29
CO-151 / CO-119 Information doesn't support this many services / benefit maximum reached Compare against the plan's visit and unit caps; see CO-119
OA-23 Impact of a prior payer's adjudication Normal on a secondary claim; the primary's payment is accounted for
CO-253 Sequestration, a reduction in federal payment Normal on Medicare remits; not a denial and not billable to the patient

For anything not in this table, the denial code lookup covers the codes nutrition claims get most, each with a cause and a fix.

"$0 paid" is not always a denial

This is the remittance that scares people most, and half the time it's fine. A line can pay $0 for two very different reasons.

Case 1: the claim processed, and the patient owes the allowed amount. The payer accepted your claim, priced it at your contracted rate, and applied the whole allowed amount to the patient's deductible. An invented example:

Billed Allowed Adjustments Paid
$150.00 $110.00 CO-45 $40.00; PR-1 $110.00 $0.00

Nothing is wrong. The claim did its job: it counted toward the deductible, and the patient owes $110. What to do: post the CO-45 as a write-off, move $110 to the patient's balance, and send the statement. The same logic applies when PR-2 or PR-3 swallow the whole allowed amount. This is common in January, when deductibles reset, and with high-deductible plans all year. If the patient was told the visit would be $0 under a preventive benefit, the diagnosis routing is the next thing to check (see preventive vs. medical benefits).

Case 2: the payer refused the service. Here the allowed amount is $0 or the adjustment isn't cost-sharing at all. An invented example:

Billed Allowed Adjustments Paid
$150.00 $0.00 CO-50 $150.00 (remark: M76) $0.00

That's a denial: CO-50 says the payer didn't consider the service medically necessary for the diagnosis on the claim, and the CO group means the patient can't be billed. What to do: read the remark code, then decide between a corrected claim (the coding was wrong) and an appeal (the coding was right and the payer disagrees). Start at CO-50 or whichever code you got, and use why nutrition claims get denied for the underlying causes.

The quick test: look at the allowed amount and the group code.

The three checks that catch underpayment

Run these on every remittance — they take two minutes with practice, or zero with software:

  1. Allowed vs. contract. Divide the allowed amount by units and compare with your fee schedule for that CPT. Payers do misprice claims — wrong fee schedule, outdated rate — and they don't announce it. If you never check, silent underpayment becomes a permanent revenue leak.
  2. Units paid vs. units billed. A 4-unit claim paid at 3 units looks "paid" in every dashboard, but you just donated 15 minutes of clinical work. Underpaid units are appealable when your documentation supports the time.
  3. PR amounts vs. what you told the patient. If the remittance says the patient owes $35 and you quoted $20 at booking, reconcile before the balance ages into an awkward conversation.

A simple underpayment check you can set up this week

Check 1 only works if you know your own rates, and most solo practices don't have them in one place. Build a small table once:

Payer Code Your contracted rate per unit Effective date
Plan A 97802 from your contract
Plan A 97803 from your contract
Plan B 97802 from your contract

Fill it from each payer's fee schedule exhibit in your contract, or request the schedule from provider relations if you never received it. Rates are confidential between you and the payer and change at renewal, so keep the effective date and update it when a new schedule arrives. For Medicare, the public Physician Fee Schedule look-up shows the fee schedule amounts by locality; confirm with your Medicare contractor how they apply to MNT billed by an RD.

Then, for every line: allowed ÷ units = rate paid. Compare with the table. An invented example: a 97803 × 3 line allowed at an amount that works out below your contracted per-unit rate on every unit is not a rounding error, it's a pricing problem. Before disputing, rule out the usual innocent causes: the line was paid for fewer units, a different code was processed, the date of service falls before a rate change, or the payer applied an out-of-network schedule because your credentialing isn't linked to that location or Tax ID. If none apply, call provider relations with the claim number and your contract exhibit, and ask for reprocessing. Keep a log; when the same payer shorts the same code twice, it's usually a loading error on their side that will repeat on every claim until someone fixes it.

Posting: the chore that keeps your books honest

"Posting" means recording the remittance against the session: paid, written off, patient balance. Done consistently, it gives you the three numbers that actually describe a practice's health — collected per session, outstanding patient balances, and payer aging. Done inconsistently, it produces the classic private-practice fog: "I think insurance pays me eventually?"

A clean posting routine, per remittance:

  1. Match each line to its session (date of service, code, units).
  2. Post the payment, the CO write-offs and the PR balance separately. Don't lump them: a PR amount posted as a write-off is money you'll never ask for.
  3. Flag anything that isn't CO-45 or PR-1/2/3 for review that day.
  4. Run the underpayment check on the allowed amount.
  5. Send the patient statement for any PR balance (see collecting copays).

Manual posting from EOBs takes 5–10 minutes per remittance. At 40–60 sessions a month, that's another 3–5 hours — and it's the task practices most often let slide, which is exactly how underpayments and unbilled patient balances hide.

How Farela helps: Farela enrolls your ERAs, posts payments to sessions automatically, runs the three underpayment checks on every remittance, and flags lines that need a human decision — so "did I actually get paid correctly?" becomes a question your software answers continuously instead of one you investigate in April. Create your free account. The EHR is free; billing is 3.9% of what an insurer pays, plus your own Claim.MD plan.

Sources

  1. X12 — Claim Adjustment Reason Codes (official list)
  2. X12 — Claim Adjustment Group Codes
  3. X12 — Remittance Advice Remark Codes (official list)
  4. CMS — Health Care Payment and Remittance Advice (835)
  5. CMS — Physician Fee Schedule look-up

Sources checked . Payer rules change; verify the member's benefits.

Frequently asked questions

What's the difference between an EOB and an ERA?

Same information, different format. An EOB (Explanation of Benefits) is the human-readable document; an ERA (Electronic Remittance Advice, the 835 file) is the machine-readable version delivered to your clearinghouse or software. The ERA is what enables automatic payment posting.

What does CO-45 mean on my remittance?

CO-45 is a contractual adjustment: the difference between your billed charge and the payer's allowed amount under your contract. It's normal — you write it off and cannot bill the patient for it. If CO-45 seems too large, check the allowed amount against your fee schedule; payers do occasionally pay below contract.

Why did insurance pay less than my contracted rate?

Common causes: fewer units were approved than billed, the claim processed under the wrong fee schedule, the patient's deductible applied (PR-1, meaning the patient owes it), or a secondary edit reduced payment (like CO-97, bundling). Compare allowed amount per unit against your contract — silent underpayment is common enough that spot-checking every remittance matters.

What does it mean to 'post' a payment?

Recording the remittance against the specific session: insurance paid X, contractual write-off Y, patient owes Z. Accurate posting keeps your books truthful, triggers correct patient billing, and surfaces underpayments. With ERAs, software can do this automatically.

How long does it take to get paid after submitting a claim?

Electronically submitted clean claims typically pay in 14–30 days from most commercial payers. If a claim is over 30 days with no remittance, check its status — most states have prompt-pay laws requiring payers to process clean claims within 30–45 days.

Part of Denials, ERAs & appeals.

Farela

The chart is free. You press Submit.

A free EHR that records the session, writes the note from it, and builds the claim you submit. Billing is 3.9% of what an insurer pays, plus your own Claim.MD plan.

Create free account → No card on file for the EHR