ACA EDGE Server Submissions Explained: The Four Files That Drive Risk Adjustment
Every ACA health plan's risk score, risk adjustment transfer payment, and regulatory standing depend on one thing: clean, timely, and complete data submitted to the EDGE server.
The EDGE server is how ACA issuers transmit enrollment, claims, and supplemental diagnosis information to CMS for validation and use in Risk Adjustment (RA) and Reinsurance (RI) calculations. Understanding its structure — the four inbound file types, their validation rules, and how they connect — is the foundation of any serious ACA data operation.
What Is the EDGE Server?
The EDGE server is an issuer-owned infrastructure running HHS-developed software. Each issuer owns and operates its own instance — either hosted on AWS or on-premise — or contracts a third-party entity to operate it on their behalf. Issuers submit four types of XML data files for processing, and the EDGE server validates, stores, and scores that data for RA/RI calculations.
CMS uses this data to calculate risk scores for each enrollee, execute RA transfer payments between issuers, support Risk Adjustment Data Validation (RADV) audits, and produce outbound reports for issuer review and CMS oversight.
Issuers offering non-grandfathered individual or small group market ACA plans are required to use the EDGE server — whether on or off the marketplace. Grandfathered plans, self-funded ERISA plans, and Medicare Advantage plans are out of scope.
The Three Execution Zones
Every submission is tagged to one of three zones:
| Zone | Code | Purpose |
|---|---|---|
| Production | P | Live data used for RA/RI calculations |
| Test | T | Identical to production; data not used by CMS |
| Validation | V | For testing future software releases, deployed 1–2 weeks ahead of production |
The Test zone exists precisely so issuers can resolve verification errors before committing to a production run — use it.
The Four Inbound Files
ESES → Who is enrolled and when
ESPCS → What drugs they filled
ESMCS → What medical care they received
ESSFS → Additional diagnoses not captured in claims
1. EDGE Server Enrollment Submission (ESES) — File Type: E
The ESES is the foundational file. Every other file references the masked enrollee IDs established here. It carries enrollee demographics (date of birth, gender), enrollment periods (coverage start and end dates, plan ID), premium amounts, rating area, and subscriber/dependent relationships.
A few rules that catch teams off guard: ESES is a full replacement file — subsequent submissions must include all enrollment activity for the data collection period, not just new records. Duplicate enrollee records (same masked ID within an issuer) are rejected outright. Submissions are required at least quarterly, with monthly strongly recommended.
File Header → Enrollment Issuer → Enrollee → Enrollment Period
2. EDGE Server Pharmacy Claims Submission (ESPCS) — File Type: P
The ESPCS carries adjudicated pharmacy claims — the data used to map NDC codes to RXC drug risk categories in the HHS-HCC model. Key fields include the National Drug Code (NDC), fill date, paid date, plan paid amount, dispensing provider ID, fill number (0 = original; 1–999 = refill), and a Void/Replace indicator.
Unlike ESES, ESPCS is incremental — subsequent submissions contain only new claims since the last submission. Sending a full replacement file will generate duplicate rejects, not a clean refresh.
File Header → Pharmacy Issuer → Insurance Plan → Pharmacy Claim
3. EDGE Server Medical Claims Submission (ESMCS) — File Type: M
The ESMCS is the most complex of the four files. It carries the diagnosis codes that drive HCC risk scoring and covers both professional (CMS-1500) and institutional (UB-04) claims. Up to 99 ICD-10 diagnosis codes per claim header, form type (Institutional or Professional) that drives requirements for bill type, discharge status, and place of service, service codes (CPT/HCPCS), and billing/rendering provider IDs with NPI check digit validation.
ESMCS is also incremental — subsequent submissions should contain only new, adjusted, or voided claims. Each claim header must include at least one claim line, and every claim line failure rejects the entire associated claim.
File Header → Medical Issuer → Insurance Plan → Medical Claim Header → Medical Claim Line
ESMCS is the only file with five structural levels. That extra depth is where most complex rejection scenarios originate.
4. EDGE Server Supplemental Diagnosis File Submission (ESSFS) — File Type: S
The ESSFS is the supplemental pipeline — it captures diagnosis codes documented in medical records or electronic data that were never billed on a claim or were missed during claims submission. Each record carries up to 99 ICD-10 diagnosis codes, an Add/Delete/Void indicator (not Void/Replace like the claims files), a source code of MR (medical record) or EDI (electronic data interchange), an original claim ID that must reference an accepted ESMCS claim, and the date of service range supporting the diagnosis.
The ESSFS is incremental. Critically, every supplemental detail record must reference an accepted ESMCS claim — if the supporting claim was never submitted or was rejected, the supplemental record has nothing to link to and will score nothing.
File Header → Supplemental Diagnosis Issuer → Insurance Plan → Supplemental Diagnosis Detail
What All Four Files Have in Common
Despite their differences, all four files share the same five-field header:
| Field | XML Element | Rule |
|---|---|---|
| File ID | fileIdentifier | Length = 12; unique within execution zone |
| Execution Zone | executionZoneCode | T / P / V |
| ICD Release Number | interfaceControlReleaseNumber | Format XX.XX.XX; last 2 digits not validated |
| Run Date | generationDateTime | YYYY-MM-DDTHH:mm:SS; must be ≤ current date |
| Report Type | submissionTypeCode | E / P / M / S |
The fileIdentifier matters more than most teams realize. Every outbound report echoes it back — it is the thread that connects your submission to every acceptance report, every rejection, and every risk score the EDGE server produces for that file.
All four files also share the same sequential record ID rule: every record carries a recordIdentifier integer that must be exactly 1 greater than the preceding record, regardless of record type. The counter never resets between categories. This gives CMS a precise pointer to any failing record — "Record 147 failed" is unambiguous across the entire file.
The Four Verification Checks
Every data element in every file is subject to up to four sequential checks:
1. Required Check — Did you fill in the field? Fields are Required, Situational (needed under specific conditions), or Not Required. The classic situational example: subscriberIndicator and subscriberIdentifier are mutually dependent — exactly one must be populated depending on whether the enrollee is the subscriber.
2. Face Validity — Is the value in the right format? A coverage date submitted as 04/01/2025 fails face validity even if the date is valid — only 2025-04-01 passes.
3. Referential Check — Does this value exist in a reference table? A Plan ID absent from the HIOS plan registry or an NDC code not in the FDA database fails here.
4. Logical Check — Does the value make sense in context? Coverage start date must be ≤ coverage end date. If gender code = U (newborns only), enrollment start date must be within 90 days of date of birth.
One rule unique to ESSFS: fields that fail the Required or Face Validity check will not proceed to Referential and Logical checks. The other three file types always run all applicable checks.
The Rejection Cascade
A failure at any level ripples down to all subordinate records.
For all four file types:
File header failure → entire file rejected
Issuer-level failure → all records for that issuer rejected
For Pharmacy, Medical, and Supplemental files additionally:
Plan-level failure → all records for that plan rejected
All plan records fail → entire issuer rejected even if issuer header passed
For Enrollment (ESES) specifically:
Enrollee-level failure → all enrollment periods for that enrollee rejected
All enrollees fail → issuer record rejected
Enrollment period failure → that enrollment record rejected
All enrollment periods fail → enrollee record rejected
For Medical (ESMCS) specifically:
Claim header failure → all claim lines for that claim rejected
Claim line failure → the entire claim (header + all lines) rejected
All claim headers fail for a plan → plan record rejected
A single bad issuer-level field can silently wipe out an entire file's worth of records. This cascade is why ESFAR — the File Accept-Reject Report — is always the first outbound report to check.
The Bottom Line
The EDGE server scores what it accepts. Four files, each with its own structure, its own assumptions, and its own failure modes — but a shared header, a shared sequential ID rule, and shared verification logic that applies consistently across all of them. Getting these basics right is the prerequisite for everything downstream: risk scores, RA transfers, and RADV audit readiness.