Contractual Adjustment in Medical Billing: What It Is, How to Read It, and When It Is Hiding an Underpayment

By Jacob Greenberg

A contractual adjustment is the amount a provider writes off because its contract with an insurance payer says it will accept less than its billed charge. It equals the billed charge minus the payer's allowed amount, it shows up on an electronic remittance as CO-45, and the patient can never be billed for it.

That is the whole definition. The reason it deserves a full article is the second half of the story: because a contractual adjustment is supposed to be routine, it is the one line on a remittance almost nobody checks, and a payment below your contracted rate posts as exactly the same line. I run ClaimCarePro, a family-owned medical billing company in Clearwater, Florida that has been billing since 2010. Below is how the number is built, how to read it on an ERA and a paper EOB, how it differs from every other kind of adjustment, and the monthly check that catches the money it can hide.

How a contractual adjustment is calculated: a worked example

Every adjudicated claim line on an 835 remittance obeys one identity:

The identity: billed = paid by the payer + contractual adjustment + patient responsibility.

Here is one office visit, with real-shaped numbers:

  • Billed charge: $200.00 (your fee schedule, the same for every payer).
  • Allowed amount: $120.00 (what this payer's contract says the visit is worth).
  • Contractual adjustment (CO-45): $200.00 − $120.00 = $80.00. Written off. Never billed to anyone.
  • Deductible (PR-1): $20.00. The patient had $20 left on their deductible.
  • Coinsurance (PR-2): 20% of the remaining $100.00 = $20.00.
  • Paid by the payer: $120.00 − $20.00 − $20.00 = $80.00.

Check the identity: $80 paid + $80 contractual + $40 patient responsibility = $200 billed. The line is fully adjudicated. The patient's balance is $40.00, which is the patient-responsibility amount, and only that. A billing system that leaves $120 on the patient (billed minus paid) is billing the patient for your contract. A system that leaves $0 (subtracting the patient share twice) is erasing money the patient really owes.

Two consequences worth noticing. First, the contractual adjustment is not a discount you chose that day; it was fixed the moment you signed the contract. Second, it is entirely a function of how high your billed charge is. Raise your fee for that visit to $250 and the payer still allows $120; the contractual adjustment simply grows to $130. That is why the dollar amount on its own tells you almost nothing about whether you were paid correctly.

How to read a contractual adjustment on an ERA and an EOB

On the electronic remittance (835)

The same visit, as the payer sends it in the 835 file, looks roughly like this at the service line:

  • SVC*HC:99213*200*80~ — procedure, billed $200, paid $80.
  • CAS*CO*45*80~ — group CO (contractual obligation), reason 45 (charge exceeds fee schedule or contracted rate), $80.
  • CAS*PR*1*20**2*20~ — group PR (patient responsibility): reason 1 deductible $20, reason 2 coinsurance $20.
  • AMT*B6*120~ — the allowed amount, $120.

The group code tells you who carries the dollars; the reason code tells you why. CO means the provider absorbs it. PR means the patient owes it. OA (other adjustment) and PI (payer-initiated) are the two other groups you will see, and neither one may be billed to the patient either. Most payers report the CO amount at the service-line level, not the claim level, so a report that only reads claim-level adjustments will show a contractual adjustment of zero on claims that plainly have one. For the reason code itself, including the rare cases where a CO-45 is wrong, see our CO-45 code page; for the deductible line, see PR-1.

On a paper EOB

A printed explanation of benefits carries the same numbers in columns, but every payer labels them differently. The contractual adjustment may be called “discount,” “not allowed,” “provider write-off,” “amount above maximum allowable” or simply “contractual.” Look for the column that sits between billed and allowed. The patient columns are usually deductible, coinsurance, copay and “patient responsibility” or “amount you may owe.” If the EOB codes its adjustments, the code key on the back will show CO-45 or the payer's own equivalent.

Contractual adjustment vs write-off, bad debt, courtesy adjustment and denial

These five get used interchangeably on aging reports, and mixing them is how a practice loses track of what it actually gave away. Each should post under its own adjustment code so you can report on it separately.

  • Contractual adjustment. Required by the payer contract, set before the visit, applies to the insurance side, never billable to the patient. Not optional and not a loss in the ordinary sense: you agreed to that price.
  • Write-off. The umbrella term for any amount removed from expected collections. A contractual adjustment is one kind. So are the next three, plus small-balance and timely-filing write-offs. If your system has a single “write-off” code, every report that uses it is blended and useless.
  • Bad-debt adjustment. A patient balance you tried to collect, with statements and follow-up, and gave up on. It applies to the patient side, it is recorded after collection efforts, and it is a real loss.
  • Courtesy (administrative) adjustment. A discount the practice chooses to give, such as a professional courtesy or a hardship reduction. It is voluntary, which is exactly why it needs a written policy: routinely waiving deductibles or copays can conflict with your payer contracts and, for patients covered by federal programs, with federal rules. Document the reason every time.
  • Denial. Not an adjustment at all. A denial is the payer refusing to pay a line, normally with zero paid and a reason code other than 45 (no authorization, missing information, non-covered service). A denial is worked and appealed through denial management; writing it off with the contractual code buries a fixable claim inside a routine number.

The last point is the expensive one. When a denied line gets posted under the contractual adjustment code, the claim leaves accounts receivable looking settled, nobody appeals it, and the timely-filing window quietly closes.

How a contractual adjustment hides an underpayment

Go back to the worked example and change one thing. Your contract with this payer says the visit is worth $120.00. On this remittance, the payer allowed $108.00. Here is what the 835 now says:

  • Billed $200.00, allowed $108.00.
  • CAS*CO*45*92~ — contractual adjustment $92.00.
  • Deductible $20.00, coinsurance 20% of $88.00 = $17.60.
  • Paid $70.40.

The identity still balances: $70.40 + $92.00 + $37.60 = $200.00. Your posting software reconciles it, marks the line paid, and moves on. Nothing on the remittance says “underpaid.” The only signal is that the CO-45 is $12 larger than it should be, and because the CO-45 is the number everyone is trained to ignore, nobody sees it. Across every visit with that code, with that payer, for as long as the error runs, the $12 compounds.

This happens for ordinary reasons: a payer loads a new fee schedule late or loads it wrong, a contract amendment never makes it into their system, a code is priced off the wrong locality, or a multiple-procedure reduction is applied where it should not be. In Florida auto-injury billing, carriers reduce charges to the statutory schedule, and the gap between what the statute allows and what was paid is its own audit (we cover it in Florida PIP underpayments under 627.736).

The audit step: contract vs allowed, not billed vs paid

Comparing billed to paid will never find this, because billed is your number and the gap is always large. The comparison that works is the allowed amount on the remittance against the rate in your contract, code by code and payer by payer. That requires having the contracted fee schedule in a form you can compare against, which many practices do not. If you cannot produce your top payers' rates for your top twenty codes, getting them is the first step.

What a practice should do every month

This is the routine we tell every practice to run, whoever does their billing. It takes an hour or two once it is set up.

  • Compare allowed to contract for your highest-volume codes at your top payers. Any code where the allowed amount came in below the contracted rate gets pulled for every remittance in the period, totaled, and sent back to the payer as a payment dispute.
  • Track the contractual adjustment rate by payer (contractual adjustments divided by billed charges). Watch the trend, not the level. If it jumps for one payer and your charges did not change, that payer changed something.
  • Confirm nothing but CO, OA and PI dollars went to the contractual code. A deductible or coinsurance amount posted as contractual is patient money written off. A denial posted as contractual is an appeal that never got filed.
  • Never post a contractual adjustment before the claim adjudicates. Pre-posting an expected discount makes the remittance impossible to audit against, because you no longer know which number the payer actually sent.
  • Check your fee schedule once a year. Many contracts pay the lesser of your billed charge or the contracted rate. A charge set below a payer's rate means that payer pays your charge, and the contractual adjustment shows zero, which looks fine and is money left behind.

Underpaid claims that nobody disputed also inflate the age of your receivables in a less visible way: they leave A/R as “paid,” so the dollars never show up as aging at all. That is the blind spot behind one of the causes in our guide to reducing days in accounts receivable, and it is why a revenue cycle review starts at the remittance, not the aging report.

Why our fee never touches the contractual adjustment

ClaimCarePro charges 6% of collections, with a $1,000 monthly minimum, month-to-month. Aged A/R recovery is a separate track at a 10% contingency: no recovery, no fee. Both are published on our pricing page.

Because the fee is a percentage of what is actually collected, never of what was billed, the contractual adjustment is never part of what you pay us for. In the worked example above, the fee is calculated on the $80 the payer paid plus whatever the patient pays toward their $40, not on the $200 charge. A billing arrangement priced on gross charges rewards a high billed number and is indifferent to the CO-45; one priced on collections only earns more when the allowed amount is right and the money comes in. Our team brings 30+ years combined in billing, and we work from Clearwater for practices across Florida.

Frequently asked questions

What is a contractual adjustment in medical billing?

A contractual adjustment is the part of a billed charge that a provider agreed, in its contract with the payer, not to collect. It equals the billed charge minus the allowed amount. On an electronic remittance it usually appears as group code CO with reason code 45.

Can a patient be billed for a contractual adjustment?

No. The CO group code means contractual obligation: the provider agreed to absorb that amount. Billing the patient for it is balance billing and breaks the payer contract. The patient owes only the amounts the payer assigns to them under group code PR, such as deductible, coinsurance and copay.

Is a contractual adjustment the same as a write-off?

It is one kind of write-off. “Write-off” is the umbrella term for any amount removed from what you expect to collect. A contractual adjustment is the write-off your payer contract requires. Bad-debt, courtesy, small-balance and timely-filing write-offs are different, and each should post under its own adjustment code.

Is CO-45 a denial?

Usually not. CO-45 means the charge exceeds the fee schedule or contracted rate, and it normally appears on a claim that was paid. A denial is a refusal to pay, which shows up as zero paid with a different reason code such as CO-197 (no authorization) or CO-16 (missing information).

How do you calculate a contractual adjustment?

Billed charge minus allowed amount. If you billed $200 and the payer allowed $120, the contractual adjustment is $80. The allowed amount is then split between what the payer paid and what the patient owes, so billed equals paid plus contractual adjustment plus patient responsibility.

What is a contractual adjustment rate, and is a high one bad?

It is total contractual adjustments divided by total billed charges for a period, usually tracked by payer. The level alone means little, because it depends on how high your charges are set. What matters is the trend: a rate that climbs while your charges and payer mix stayed the same usually means a payer is allowing less than your contract says.

Where does a contractual adjustment go in practice accounting?

It reduces gross charges to net revenue. Practices that report on charges show it as a contractual allowance, which is why net collection rate is calculated after contractual adjustments and gross collection rate is not.