Skip to main content

Read a CARC / RARC

Outcome

You can read a denial's CARC + RARC and translate it into the right action — auto-correct, rebill, appeal, write-off, or educate.

Prerequisites

ScopeWhat it lets you do
billing.denial.readView the codes

What CARC and RARC are

CARC (Claim Adjustment Reason Code) is a categorical reason code on the CAS segment of the 835. Examples: CO-4 (modifier), CO-29 (timely filing), PR-1 (deductible).

RARC (Remittance Advice Remark Code) is a narrative explanation on the LQ segment, prefixed M*, MA*, or N*. Examples: M16 (see attached letter), MA13 (unlisted procedure code).

A denial usually carries one CARC and may carry one or more RARCs. The CARC tells you the category; the RARC clarifies specifics.

The reading order

CARC quick reference

The full reference is at 9.3; here's the field-tested cheat-sheet:

CARCPlain EnglishFirst move
CO-1 / 2 / 3Patient deductible / coinsurance / copayAuto-routed to patient AR; verify member's deductible.
CO-4Procedure code inconsistent with modifierAuto-correct: CO4ModifierHandler.
CO-11Diagnosis inconsistent with procedureManual; usually code-set issue.
CO-15Authorization missing or invalidManual rebill with auth attached, or appeal.
CO-16Claim/service lacks informationAuto-correct: Co16MissingInfoHandler.
CO-18Duplicate claim/serviceAuto-detect via claim_relationship; check the original.
CO-22Care may be covered by another payer per COBCOB question; check member's coverage ladder.
CO-29Time limit for filing has expiredAuto-correct for timely-filing exception, else write off.
CO-45Charge exceeds fee scheduleInformational; normal contractual write-off.
CO-50Non-covered servicesManual review — sometimes appealable with documentation.
CO-96Non-covered chargesSame as CO-50.
CO-97Bundled servicesAuto-correct: re-coding handler.
CO-109Claim not covered by this payerWrong payer; check COB.
CO-167This (these) diagnosis(es) is (are) not coveredDiagnosis issue; rebuild with corrected dx.
CO-197Precert / authorization absentAuto-correct: attach auth + rebill.
PR-1 / 2 / 3Patient deductible / coinsurance / copayPatient AR.
OA-23Impact of prior payerInformational; COB chain working.
PI-50Not deemed medically necessaryOften appealable with documentation.

RARC quick reference

The most common RARCs:

RARCMeaning
M16Alert: see attached
M51Missing/incomplete/invalid procedure code
M76Missing/incomplete/invalid diagnosis or condition
M77Missing/incomplete/invalid place of service
MA13Alert: you may be subject to penalties for not informing the patient that they are responsible
MA15Late claim adjustment
MA67Correction to a prior claim
N4Missing/incomplete/invalid prior payer EOB
N122Add-on code cannot be billed by itself
N640Exceeds the LCD or MUE

A single CARC CO-16 (lacks information) could mean anything; the RARC tells you which information. Always read the RARC alongside.

Decoding the dollar fields

In the 835's CAS:

CAS*CO*45*40~
group=CO reason=45 amount=40

That's a $40 contractual write-off under group CO, reason 45 (fee- schedule diff). The platform decodes this on the line drill-down — you don't usually read the raw — but knowing the shape helps when you call the payer.

Multi-CARC lines

Sometimes a single line carries multiple CASes: e.g. PR-1 (deductible) and CO-45 (contractual). The platform splits each into the right ledger:

CASEffect
PR-1*XPatient AR + $X.
CO-45*YContractual write-off + $Y.
CO-97*ZBundled adjustment + $Z; engine considers re-coding.

Read each separately; they don't substitute for each other.

Validation

CheckExpected
Hover on CARC chip shows descriptionYes.
Click on CARC chip opens reference excerptYes.
Per-line drill shows every CASYes.
Reference excerpt links into the full referenceYes.

Troubleshooting

SymptomCauseFix
Tooltip shows "Code not found"New CARC introduced by ASC X12 since last reference refreshTenant admin → code-set reference; refresh.
RARC list missingPayer doesn't supply LQ segmentsCommon; treat the CARC alone.
CAS group doesn't match expectationPayer using legacy mappingCommon with smaller commercial; treat by code, not by group.

Where to next