X12 for billers
A field guide to the X12 segments you will run into when reading the Submission tab or the receivable Trace tab — without leaving the billing manual for the full EDI manual.
How an X12 file is shaped
ISA*... ← envelope start
GS*... ← functional group
ST*837*... ← transaction set start
BHT*...
HL*... ← hierarchy
loops
SE*... ← transaction set end
ST*...
GE*... ← functional group end
IEA*... ← envelope end
You will rarely need to read these. When the Submission tab says a file rejected at TA1 (envelope) vs 999 (transaction parsing), this shape is what's at issue.
837 — claim out
The bones of a professional claim:
| Loop | Segment | Field |
|---|---|---|
| 2010BA | NM1*IL*1*<lastname>*... | Subscriber demographics. |
| 2010BB | NM1*PR*2*<payer>*... | Payer name. |
| 2300 | CLM*<icn>*<amount>*... | Claim header. |
| 2300 | DTP*431/432/096 | Onset / accident / discharge dates. |
| 2300 | HI*ABK*<dx> | Principal dx. |
| 2300 | REF*9F*<auth> | Auth reference. |
| 2310B | NM1*82*1*<rendering provider> | Rendering provider. |
| 2400 | LX*1 | Service line counter. |
| 2400 | SV1*HC:<cpt>:<mods>*... | Service line (P). |
| 2400 | DTP*472*D8*<DOS> | Date of service. |
| 2400 | REF*6R*<line ref> | Line item ref. |
Institutional (837I) has different shape — SV2 instead of SV1,
revenue codes, OCC / VAL / CON segments.
999 — file ack
| Segment | Field |
|---|---|
AK1 | Functional group ack header. |
AK2 | Transaction ack header. |
IK3 | Bad segment. |
IK4 | Bad element. |
IK5 | Transaction status (A accept, E accept w/ errors, R reject). |
AK9 | Functional group status. |
A 999 rejection means the file structure failed. Almost always:
delimiters, envelope IDs, control number mismatch.
277CA — claim ack
| Segment | Field |
|---|---|
STC*<status>*... | Status code (e.g. A1, A7, R7). |
REF*1K*<payer claim control> | Payer's claim ID. |
DTP*472*D8*<DOS> | Service date. |
QTY*90*<count> | Count of accepted/rejected lines. |
STC01's first character: A = acknowledged, R = rejected, E =
error. The full code (A7, R7) carries the reason.
835 — remittance
| Segment | Field |
|---|---|
BPR*<I/C>*<amount>*... | Payment header. I = check, C = ACH, etc. |
TRN*1*<trace>*<payer ID> | Transaction trace. |
N1*PR*<payer name> | Payer. |
N1*PE*<payee name> | Payee. |
LX*<counter> | Loop counter. |
CLP*<patient acct>*<status>*<billed>*<paid>*<patient resp>*<filing code>*<icn> | Claim level. |
CAS*<group>*<reason>*<amount> | Claim-level adjustment. |
NM1*QC*<patient last>*<first>*... | Patient. |
SVC*HC:<cpt>:<mods>*<billed>*<paid>*<rev code>*<units> | Service line. |
DTM*150*<from> / 151*<to> | Service date range. |
CAS*<group>*<reason>*<amount> | Line-level adjustment. |
LQ*HE*<RARC> | Remark code. |
AMT*F2*<amount> | Allowed amount (line). |
AMT*B6*<amount> | Allowed amount (service). |
PLB*<provider id>*<date>*<reason>:*<ref>*<amount> | Provider-level adjustment (file footer). |
CAS group codes
| Group | Meaning | Routes to |
|---|---|---|
CO | Contractual | Contractual write-off. |
PR | Patient responsibility | Patient AR. |
OA | Other | Various. |
CR | Reversal | Reverses a prior CAS. |
PI | Payer-initiated | Various. |
270 / 271 — eligibility
| Segment (271) | Field |
|---|---|
EB*<status>*<service code>*<level>*<plan> | Eligibility benefit. |
EB01 | 1 Active, 2 Active full risk, 6 Inactive, etc. |
DTP*291*<from> / 292*<to> | Plan begin / end. |
MSG*<text> | Free-text. |
276 / 277 — claim status
| Segment (277) | Field |
|---|---|
STC*<status>*<date>*<amount> | Status. |
REF*1K*<payer ICN> | Reference. |
DTP*472*D8*<DOS> | Service date. |
QTY*90*<count> | Count. |
STC01 family codes are described in 3.2 — Track acks
and 6.4 — Claim status inquiry.
278 — authorization
| Segment | Field |
|---|---|
UM*<request category>*<certification type>*<service type> | Auth request. |
HSD*<units>*<count>*<period> | Service limits. |
REF*BB*<auth #> | Auth number (response). |
DTP*291*<from> / 292*<to> | Effective dates. |
How the platform helps you not read this
The Submission tab and the Trace tab decode segments inline:
- Hover any segment chip → human description.
- Click → expanded structured view.
- The auto-decode covers the segments above plus less-common ones.
Reach for the EDI Manual when:
- You're authoring or fixing a companion guide.
- You need to defend an interpretation against the payer.
- You're debugging an envelope-level reject.
For day-to-day work, the platform's structured view is enough.