EDI 835 Remittance Advice (ERA) Parser, Viewer & Format Guide
High-speed ANSI 835 ERA parser extracting payer payments, deductible/coinsurance CAS adjustments, CARC/RARC codes, and PLB provider adjustments in sub-3ms. This specification documents the exact field layout, checksum rules, and validation behavior so your integration matches ANSI ASC X12 Standards (005010) without reading the source standard.
⚡ Live EDI 835 Remittance Advice (ERA) Parser, Viewer & Format Guide Interactive Workbench
Test real-time validation and schema parsing for EDI 835 Remittance Advice (ERA) Parser, Viewer & Format Guide directly in your browser. Runs in sub-5ms with zero setup.
{
"status": "Click RUN VALIDATION to execute on the Cloudflare edge..."
}
Quick Summary: High-speed ANSI 835 ERA parser extracting payer payments, deductible/coinsurance CAS adjustments, CARC/RARC codes, and PLB provider adjustments in sub-3ms. Validates strictly against ANSI ASC X12 Standards (005010) with sub-5ms in-memory response times.
Specification & Structural Breakdown
Technical Summary: Validates strictly against ANSI ASC X12 Standards (005010). Payloads are parsed in memory and return clean, typed JSON in milliseconds with zero data logged.
The ANSI X12 835 (5010X221A1) is the federal HIPAA standard for Electronic Remittance Advice (ERA), providing payment, denial, and claim adjudication data from commercial payers and Medicare to healthcare providers.
Financial Envelope: Parses BPR financial information including payment method (ACH, Check, Wire), total remittance amount, routing/EFT trace numbers (TRN), and effective transaction date.
Claim Level Adjudication: Extracts Claim Payment Information (CLP) with claim status codes (1=Primary, 2=Secondary, 4=Denial), billed vs paid totals, patient liability, and Claim Adjustment (CAS) segments containing Claim Adjustment Reason Codes (CARC) and Remittance Advice Remark Codes (RARC).
Provider Level Adjustments: Resolves PLB segments including capitation withholdings, interest payments, overpayment recoveries, and forward balances.
| Segment | Description | Key Elements Extracted | Usage |
|---|---|---|---|
| ISA | Interchange Control Header | ISA05-ISA08 (sender/receiver), ISA11 (repetition separator), ISA16 (element separator) | Delimiters & interchange envelope |
| GS | Functional Group Header | GS01 (HP), GS08 (005010X221A1) | Insurance functional group |
| ST | Transaction Set Header | ST01 (835), ST02 (control number) | Transaction start |
| BPR | Financial Information | BPR01 (Trans Code: I), BPR02 (Total Paid), BPR04 (Payment Method: ACH/CHK) | Check/EFT header |
| TRN | Reassociation Trace Number | TRN02 (Check/EFT Trace #), TRN03 (Payer Tax ID) | Bank reconciliation |
| N1 / N3 / N4 | Party Identification & Address | N101 (PR payer, PE payee), N102 (name) | Payer and payee identification |
| REF / DTM | Reference & Date/Time | REF02 (payer ID), DTM02 (production date) | Supplementary identifiers |
| LX | Transaction Set Line Number | Loop 2000 provider grouping | Provider-level grouping |
| CLP | Claim Payment Information | CLP01 (Claim ID), CLP02 (Status: 1=Primary, 2=Secondary, 4=Denial), CLP03 (Billed), CLP04 (Paid) | Loop 2100 claim reconciliation |
| CAS | Claim Adjustment | CAS01 (Group: CO/PR/OA/PI/CR), CAS02 (CARC Code), CAS03 (Adjustment Amount) | Patient liability & write-offs |
| NM1 | Individual or Organizational Name | NM1*QC (patient), NM1*82 (rendering provider) | Claim-level party names |
| SVC | Service Payment Information | SVC01 (procedure code), SVC02 (charge), SVC03 (paid) | Loop 2110 service line detail |
| PLB | Provider Level Adjustment | PLB01 (Provider ID), PLB03-1 (Reason Code: WO/CS/FB), PLB04 (Amount) | Withholding & balance forward |
| SE | Transaction Set Trailer | SE01 (segment count), SE02 (control number) | Transaction close |
Parsed JSON Response Model
The edge microservice transforms input payloads into strongly-typed hierarchical JSON envelopes with sub-5ms latency:
{
"transactionSet": "835",
"payment": {
"paymentMethod": "ACH",
"totalPaidAmount": 1250,
"checkTraceNumber": "EFT20268899",
"paymentDate": "20260828"
},
"payer": {
"name": "BLUE CROSS BLUE SHIELD",
"id": "BCBS01"
},
"claims": [
{
"patientControlNumber": "CLM2026-001",
"claimStatusCode": "1",
"totalClaimChargeAmount": 245,
"claimPaymentAmount": 180,
"patientResponsibilityAmount": 20,
"adjustments": [
{
"groupCode": "CO",
"reasonCode": "45",
"amount": 45
},
{
"groupCode": "PR",
"reasonCode": "1",
"amount": 20
}
]
}
]
}
Sample file
Copy or download this validated ANSI X12 5010 sample. It is parsed by the production engine in the test suite, so it works as a fixture as-is.
ISA*00* *00* *ZZ*PAYER1 *ZZ*PROVIDER01 *260830*1200*^*00501*000000001*0*P*:~GS*HP*PAYER1*PROVIDER01*20260830*1200*1*X*005010X221A1~ST*835*0001*005010X221A1~BPR*I*1500.00*C*ACH*CTX*01*999999992*DA*12345678*1999999992*01*999999999*DA*987654321*20260830~TRN*1*123456789*1999999992~REF*EV*PAYER123~N1*PR*BLUE CROSS~N1*PE*GENERAL HOSPITAL*XX*1234567890~LX*1~CLP*CLAIM001*1*2000.00*1500.00*500.00*MC*12345678901*11*1~CAS*CO*45*500.00~NM1*QC*1*DOE*JOHN****MI*123456789~SVC*HC:99213*2000.00*1500.00~SE*12*0001~GE*1*1~IEA*1*000000001~
Copy-Paste Integration Code (6 Languages)
Integrate EDI 835 Remittance Advice (ERA) Parser, Viewer & Format Guide directly into your production application with native, zero-dependency code snippets in cURL, Node.js, Python, Go, C#, and a ready-to-paste Claude prompt. Get a free API key → (no credit card required):
curl --request POST \
--url "https://api.stanzaapi.com/x12-parser/api/v1/x12/parse" \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data '{
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
}'const response = await fetch("https://api.stanzaapi.com/x12-parser/api/v1/x12/parse", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.API_KEY || "YOUR_API_KEY"
},
body: JSON.stringify({
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
})
});
const data = await response.json();
console.log(data);import requests
import json
url = "https://api.stanzaapi.com/x12-parser/api/v1/x12/parse"
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY"
}
payload = {
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := "https://api.stanzaapi.com/x12-parser/api/v1/x12/parse"
payload := []byte(`{"raw":"ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Add("Content-Type", "application/json")
req.Header.Add("x-api-key", os.Getenv("API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("API_KEY") ?? "YOUR_API_KEY");
var json = @"{""raw"":""ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~""}";
var payload = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.stanzaapi.com/x12-parser/api/v1/x12/parse", payload);
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}Integrate the StanzaAPI x12-parser micro-API.
Endpoint: POST https://api.stanzaapi.com/x12-parser/api/v1/x12/parse
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json
Request body:
{
"raw": "ISA*00* *00* *ZZ*SUBMITTER1 *ZZ*RECEIVER01 *260830*1200*^*00501*000000001*0*P*:~GS*HC*SENDER*RECEIVER*20260830*1200*1*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*CLAIM001*20260830*1200*CH~NM1*41*2*DR DOE CLINIC*****46*1234567890~PER*IC*SUPPORT*TE*8005551212~HL*1**20*1~NM1*85*2*DR DOE CLINIC*****XX*1992837465~HL*2*1*22*0~NM1*IL*1*SMITH*JANE****MI*W123456780~CLM*CLM001*150.00***11::1*Y*A*Y*Y~LX*1~SV1*HC:99213*150.00*UN*1***1~SE*11*0001~GE*1*1~IEA*1*000000001~"
}
Rules:
- Send the request with a 2-second timeout.
- Parse the standard envelope { success, data, meta: { latency_ms, version } }.
- On failure, read { success: false, error, code } and branch on the code.
- Do not retry 4xx responses; surface the error code to the caller.
- Treat invalid-but-well-formed payloads as HTTP 200 with data.valid === false.Frequently Asked Questions & Technical Notes
All standard HIPAA group codes: CO (Contractual Obligation), PR (Patient Responsibility), OA (Other Adjustments), PI (Payer Initiated), and CR (Correction).
Yes. PLB segments (capitation withholdings, interest payments, overpayment recoveries) are parsed with respective internal reason codes.
At claim level, the billed amount (CLP03) equals the paid amount (CLP04) plus patient responsibility and all CAS adjustment amounts. At service level, the SVC02 charge equals SVC03 paid plus its CAS adjustments. PLB adjustments apply after claim balancing and can make the net payment differ from the BPR02 total.
CLP02 reports the claim status: 1 = processed as primary, 2 = processed as secondary, 3 = processed as tertiary, 4 = denied, and 22 = reversal of a previous payment.
Related Healthcare EDI ANSI X12 Parser API Formats
Explore sibling specifications and standards in the same developer cluster:
EDI X12 270 Eligibility Inquiry Parser & Validator
Parse inbound real-time and batch HIPAA 270 eligibility check requests into structured JSON payloads in under 3ms.
View Format →EDI X12 837I Institutional Claim Parser & Free Validator
Automated institutional claim parser for hospital inpatient and outpatient EDI 837I files with UB-04 revenue code mapping.
View Format →EDI X12 271 Eligibility & Benefit Response Parser
Extract copays, remaining deductibles, out-of-pocket maximums, and in-network coverage terms from 271 EDI response streams.
View Format →EDI X12 837P Professional Health Care Claim Parser & Validator
Instant sub-5ms parsing of ANSI X12 837P (5010X222A1) professional medical claims into structured JSON with full Hierarchical Loop (HL) resolution.
View Format →EDI X12 834 Benefit Enrollment and Maintenance Parser
Process employer benefit enrollments, terminations, and demographic modifications with high-speed 834 EDI to JSON parsing.
View Format →EDI 835 Electronic Remittance Advice (ERA) to CSV/Excel Converter
Convert cryptic ANSI X12 835 Electronic Remittance Advice (ERA) files into flat tabular CSV and Excel-ready formats for accounting, reconciliation, and revenue cycle reporting.
View Format →EDI X12 850 Purchase Order Parser & JSON Converter
B2B supply chain EDI parser converting retail and enterprise ANSI X12 850 purchase orders into structured JSON.
View Format →Free Online ANSI X12 EDI to JSON Converter & Inspector
Instant, zero-install ANSI X12 EDI to JSON converter running on Cloudflare Workers edge isolates. Converts 837P, 837I, 835, 270/271, 834, and B2B transactions into clean typed JSON in sub-5ms.
View Format →Complementary Enterprise APIs
Seamlessly orchestrate data pipelines across adjacent financial, regulatory, and supply-chain protocols:
FDA DSCSA Drug Serialization →
Verify pharmaceutical 2D DataMatrix barcodes, NDC verification, and EPCIS compliance.
FDA AccessGUDID & IMDRF UDI Decoder →
Decode medical device identifiers (DI + PI) conforming to 21 CFR 801.20 and EU MDR.
ISO 20022 Financial Messaging →
Transform enterprise remittance workflows between X12 835 ERA and ISO 20022 camt.053.