Skip to main content

835 inbound — parsing CLP, SVC, CAS, AMT

Outcome​

The inbound 835 file (Electronic Remittance Advice) is parsed cleanly, every CLP loop maps to a known claim, every CAS row is decoded, every AMT amount is captured, and the structured result is ready for the posting flow.

Prerequisites​

ScopeWhat it lets you do
edi.transaction.readView transactions
edi.remittance.readInspect parsed 835 detail

A trading partner with 835 inbound capability (2.4 — Capabilities).

835 receive → parse → post​

835 anatomy​

Source: packages/x12/src/inbound/remittance-835.ts. Implementation convention: 005010X221A1.

ISA → GS → ST*835 → BPR (payment info)
TRN (trace number — payer's unique check / EFT reference)
DTM*405 (production date)
N1*PR (payer name)
N3 / N4 / PER / REF (payer address & contact)
N1*PE (payee name — typically our billing entity)
N3 / N4 / REF (payee address & TIN)
[LX] (one or more provider segments per ERA)
Loop 2100 — Claim Payment
CLP (claim payment info — billed, paid, status)
CAS (claim-level adjustments, repeat as needed)
NM1*QC (patient)
[NM1*82] (rendering provider)
[NM1*TT] (crossover carrier — for COB)
REF (claim identifiers)
DTM (claim dates — service period, claim received)
[AMT] (claim-level amounts — F2 allowed, AU coverage, EAF underpaid)
Loop 2110 — Service Payment Info
SVC (service code, billed, paid, units)
DTM*472 (service date)
CAS (line-level adjustments)
[REF] (line identifiers)
[AMT] (line-level amounts — B6 allowed, KH deductible)
PLB (provider-level adjustments — accumulator changes outside any claim)
SE → GE → IEA

BPR — payment info​

Read BPR first to know what the file is paying:

ElementCommon valuesMeaning
BPR01I Information Only, H Notification Only, C Payment Accompanies, D Payment Only, U Split Payment, X Handling Party's OptionTransaction handling.
BPR02(amount)Payment amount.
BPR03C Credit, D DebitCredit / debit indicator.
BPR04ACH ACH, BOP Financial Institution Option, CHK Check, FWT Federal Wire, NON Non-payment DataPayment method.
BPR05(when ACH)ACH transaction code (CCP corporate credit, CTX corporate trade exchange).
BPR16(effective date)When the payment lands.

BPR01 = H files carry no money — they are pure remittance / denial information. The platform handles them identically except no AR reconciliation is run.

CLP — claim payment​

CLP is one row per claim being paid (or denied) on this ERA. Every field matters:

ElementMeaning
CLP01Patient control number — echoes our outbound CLM01. The primary key for matching.
CLP02Claim status code: 1 Processed Primary, 2 Secondary, 3 Tertiary, 4 Denied, 19 Reversal, 22 Reversal of Previous Payment, 23 Not Our Claim — Forwarded
CLP03Total billed (claim total).
CLP04Total paid.
CLP05Patient responsibility.
CLP06Claim filing indicator code (MA Medicare Part A, MB Medicare Part B, MC Medicaid, 12 PPO, …).
CLP07Payer claim control number — the payer's tracking ID. Save this for status inquiries.
CLP08Facility type code (POS).
CLP09Claim frequency code.
CLP10Diagnosis-related group (DRG) code.
CLP11DRG quantity.
CLP12DRG percentage.

CLP02 = 4 (denied) requires special handling — see 6.2 — Splitting PR / CO / PI.

CAS — adjustments​

CAS carries adjustments. Each CAS segment can hold up to 6 adjustments as triplets of (reason, amount, quantity):

CAS*CO*45*100.00**253*5.00~
PositionValueMeaning
CAS01COGroup code
CAS0245Reason code (CARC)
CAS03100.00Amount
CAS04(empty)Quantity
CAS05253Reason code (next adjustment)
CAS065.00Amount

Group codes: CO (contractual), PR (patient resp), PI (payer initiated), OA (other), CR (correction / reversal).

CAS appears at both the claim level (loop 2100) and the line level (loop 2110). When both are present, line-level CAS is typically the specific adjustment per line; claim-level CAS captures cross-line adjustments (e.g. interest, capitation reductions).

The full CARC list is large; the most common are documented at 8.3 — CARC/RARC quick-reference — though that page focuses on STC; for CAS reason codes consult the published adjustment-code list.

SVC — service line payment​

One SVC per claim line, inside loop 2110.

SVC*HC:99213:HQ*100.00*80.00**1~
ElementMeaning
SVC01Composite — code qualifier + procedure + modifiers. HC = HCPCS, WK = Advisory Codes (state-specific).
SVC02Submitted charge for this line.
SVC03Paid amount for this line.
SVC04(Revenue code, for institutional).
SVC05Units paid.
SVC06(Composite — original procedure when the payer downcoded).
SVC07Units submitted.

When SVC03 < SVC02 and there is no CAS on the line, the payer is silently rejecting part of the charge — flag for investigation.

AMT — supplemental amounts​

AMT segments capture amounts not represented by the line / claim totals.

QualifierMeaning
AUCoverage amount (allowed by patient's plan).
B6Allowed amount (line level).
D8Discount amount.
EAFAmount owed by the patient.
F2Patient amount paid.
F3Per-day limit amount.
F4Patient amount paid (alternative).
F5Patient amount paid (yet another).
KHDeductible amount.
TTax amount.

AMT*B6 (allowed amount) per service line is what drives the contracted-rate reconciliation — see 6.2.

PLB — provider-level adjustment​

PLB rows carry adjustments outside any single claim — interest, take- backs, withholdings.

PLB*1234567890*20260131*WO:CLAIM12345*-50.00~
ElementMeaning
PLB01Provider ID.
PLB02Fiscal period date.
PLB03+Adjustment identifier composite + amount.

Common adjustment qualifiers (PLB03:1):

CodeMeaning
WOOverpayment recovery
FBForwarding balance
IRInternal revenue
J1Non-reimbursable
L6Interest owed
WUUnspecified recovery

A negative amount means the payer is taking money back; a positive amount means they are adding to the payment. The reconciliation flow applies PLB to the AR before claim-level posting.

Steps​

The full flow is automated; operator awareness is for diagnosis only.

  1. Inbound 835 file arrives via the partner's transport.

  2. parseRemittance835() produces a structured ParsedRemittance object with every CLP / CAS / SVC / AMT / PLB.

  3. The transaction record appears at /transactions with tx_type = 835. Click in for the segment trace and a Parsed view.

  4. The response-processor dispatches the parsed remittance to the rcm-core posting flow — covered in 6.2 — Posting & thresholds.

Validation​

CheckExpected
Inbound transaction has tx_type = 835Yes.
Parsed view shows totals matching BPR02Yes.
Every CLP01 matches an outbound claim's CLM01Most should — exceptions become unmatched in the posting flow.
Sum of CLP04 + sum of PLB adjustments = BPR02Yes — that's the file balance.

Troubleshooting​

SymptomCauseFix
Parse fails with "missing CLP"Header-only ERA (BPR01 = H) with no claimsExpected for some informational files; no action.
CLP01 does not match any claimPayer sent ERA for a claim from another tenant; or our submission used a different patient control numberCheck claim history; if truly orphan, escalate to partner.
CAS triplets misalignedSome payers emit fewer than 3 fields per tripletParser handles short triplets; if you see it produce wrong amounts, file an issue with the raw 835.
SVC03 < SVC02 with no CASSilent partial payTreat as a denied portion; create a denial record manually with OA-23 or contact payer.

Next​

6.2 — Posting & thresholds