Reference·X12 835·CAS
X12 835 Reference

X12 835 CAS Segment Guide: Fields, Format, and Testing Gotchas

Jul 28, 2026 · 6 min read

CLP tells you what got paid. SVC tells you which line it was paid on. CAS is the segment that finally tells you why the number is lower than what was billed — and it is the segment nearly every auto-posting failure traces back to, because it can repeat, stack at different levels, and carry adjustment reasons a mapping table never learned to handle.

Quick answer

CAS (Claims Adjustment) is a repeatable segment in the X12 835 that reports one specific adjustment applied to a claim or service line. Each iteration groups three elements together: a group code that says who is responsible for the adjustment, a reason code that says why the adjustment happened, and a dollar amount. A single claim or line can carry several CAS segments, and a single CAS segment can carry up to six reason/amount pairs beyond the first.

The elements that actually matter in practice

CAS01 →
Claim Adjustment Group Code — who absorbs the adjustment — a contractual write-off, patient responsibility, or another payer entirely — see the dedicated page below
CAS02 →
Claim Adjustment Reason Code — the specific CARC explaining the adjustment, drawn from a shared external code list — see the dedicated page below
CAS03 →
Monetary Amount — the dollar amount tied to that specific reason code — see the dedicated page below
CAS04-CAS17
Repeating reason/amount pairs — up to five more reason-code-and-amount pairs can follow within the same CAS segment before a new CAS is needed

Example

Synthetic example Generated by Synthibase
CAS*CO*45*80.00

A synthetic contractual adjustment: group code CO (contractual obligation), reason code 45 (charge exceeds the fee schedule), $80.00 written off. Synthetic remittance data.

Where this trips people up

Test suites tend to generate one CAS segment per line with one reason/amount pair and call it done, because that is the shape that appears in the first few sample files anyone gets their hands on. Production remittances routinely stack two or three CAS segments on the same line — a contractual write-off, a patient coinsurance amount, and a third-party adjustment all landing on the same procedure — and a single CAS can itself carry multiple reason codes if the payer is explaining more than one thing at once. A posting engine that assumes exactly one CAS per line, or reads only the first reason/amount pair inside a CAS, will quietly drop dollars that never make it into the patient balance or the write-off bucket, and the file still looks perfectly valid.

EDI 835 Remittance Advice: Complete Guide for Healthcare IT
How to Test 835 Remittance Reconciliation Before Go-Live
Stop guessing how your posting logic handles stacked adjustments
Synthibase generates synthetic 835 files with multiple CAS segments per line, mixed group codes, and stacked reason/amount pairs, so your reconciliation and posting logic gets tested against the adjustment patterns that actually break it.
Start free trial →
This page is written independently by Synthibase for testing and informational purposes. It is not an official publication of HL7 International or X12/Washington Publishing Company, and is not a substitute for reviewing the official standard or your trading partner's companion guide. See our Terms of Service for full legal terms.