How to map a Medicare 271 eligibility response to a CWF
Stedi’s Eligibility Check APIs let you get Medicare 271 eligibility responses as JSON. But your system – or one downstream – might need to display that JSON data in Common Working File (CWF) fields. Many providers still expect a CWF-style layout.
This guide shows how to map Stedi’s JSON 271 eligibility responses to CWF fields. It also covers what the CWF was, how Medicare eligibility checks work today, and why the CWF format still persists.
What Is the Common Working File (CWF)?
The Centers for Medicare & Medicaid Services (CMS) built the CWF in the 1980s to centrally manage Medicare eligibility. It was the source of truth for who was covered, when, and under which Medicare part.
The system produced fixed-format text files – also called “CWFs” – for mainframe terminals and printed reports. Each file had a set layout, with fields like member ID, coverage type, and benefit dates. For example:

How Medicare eligibility checks work today
CMS replaced the CWF in 2019 with the HIPAA Eligibility Transaction System (HETS). HETS returns standard 271 eligibility responses, the same as commercial insurers. Medicare 271s include a lot of Medicare-specific info, including:
-
Medicare Part A and Part B entitlements and dates
-
Part C (Medicare Advantage) and Part D (Prescription Drug) plan info
-
Deductibles, copays, and benefit limits
-
Remaining Skilled Nursing Facility (SNF) days
-
ESRD transplant or dialysis dates
-
Smoking cessation visits and therapy caps
-
Qualified Medicare Beneficiary (QMB), secondary payers, Medicaid crossover, and other coordination of benefits information.
In a response from our Real-Time Eligibility Check JSON endpoint, that data lives in the plans array. Each plan’s benefits object groups it into arrays by benefit type, such as coPayment. Each entry describes a specific coverage, limit, or service type. For example:
{
"plans": [
{
"benefits": {
"coPayment": [
{
"amount": "408",
"dates": {
"admission": {
"end": "2024-12-31",
"start": "2024-01-01"
}
},
"insuranceType": "MEDICARE_PART_A",
"network": {
"indicator": "IN_AND_OUT_OF_NETWORK"
},
"service": {
"definition": "Health Benefit Plan Coverage",
"system": "STC",
"value": "30"
},
"serviceLimits": [
{
"delivery": {
"frequency": {
"qualifier": "DAYS"
},
"period": {
"qualifier": "EXCEEDED",
"value": 60
}
}
},
{
"delivery": {
"frequency": {
"qualifier": "DAYS"
},
"period": {
"qualifier": "NOT_EXCEEDED",
"value": 90
}
}
},
{
"delivery": {
"period": {
"qualifier": "EPISODE",
"value": 1
}
}
}
],
"timePeriod": "DAY"
}
]
}
}
],
"subscriber": {
"memberId": "123456789",
"name": {
"person": {
"firstName": "JANE",
"lastName": "DOE"
}
},
...
},
...
}
How to use this guide
Stedi’s JSON 271 eligibility response is easier to use in modern applications. But if your customers need the old CWF layout, you’ll need to map each field from JSON.
This guide isn’t an official spec. It’s a practical reference. Each section shows a CWF-style layout, a table of field mappings, and notes on when to use each field. For details on our JSON 271 eligibility responses, see our API documentation.
Provider information

CWF field | JSON 271 eligibility response property |
|---|---|
Organization Name | |
NPI ID |
Patient Demographics
The following table includes patient demographics from the SUBMITTED TO PAYER and RETURNED BY PAYER sections of the sample CWF.

CWF field | JSON 271 eligibility response property | When to use |
|---|---|---|
SUBMITTED TO PAYER | ||
First Name | ||
Last Name | ||
Member ID (MBI) | ||
D.O.B. | ||
Eligibility Date(From) | If the payer returns a single date instead of a date range, only | |
Eligibility Date(To) | If the payer returns a single date instead of a date range, only | |
Service Types(s) | Check the | |
RETURNED TO PAYER | ||
First Name |
| |
Middle Name | ||
Last Name |
| |
Suffix | ||
Member ID (MBI) |
| |
D.O.B. |
| |
Gender | ||
Address Line 1 | ||
Address Line 2 | ||
City | ||
State | ||
Zip Code |
Benefit Information
In the JSON 271 eligibility response, each plan’s benefits object contains most of the benefits information, grouped into arrays by benefit type.
The insuranceType property on each benefit entry indicates the type of insurance policy within a program, such as Medicare. A value of MEDICARE_PART_A indicates Medicare Part A. A value of MEDICARE_PART_B indicates Medicare Part B. For a complete list of values, see the API reference.
The service object on each benefit entry identifies the type of healthcare services the benefits information relates to. Its service.value is the Service Type Code (STC). An STC of 30 relates to general benefits information. For a complete list of STCs, see Service Type Codes in our docs.

CWF field | JSON 271 eligibility response property | When to use |
|---|---|---|
Effective Date | All of the following must be true:
If the payer returns a single date instead of a date range, only | |
Termination Date | All of the following must be true:
If the payer returns a single date instead of a date range, only | |
Ineligible Start |
| All of the following must be true:
If the payer returns a single date instead of a date range, only |
Ineligible End |
| All of the following must be true:
If the payer returns a single date instead of a date range, only |
Date of Death | ||
Smoking Cessation Days | All of the following must be true:
| |
Initial Cessation Date | This information is only available if an initial counseling visit was used in the past 12 months. All of the following must be true:
| |
ESRD Dialysis Date | The following must be true:
| |
ESRD Transplant Date | The following must be true:
| |
ESRD Coverage Period | The following must be true:
|
Plan Benefits

CWF field | JSON 271 eligibility response property | When to use |
|---|---|---|
Medicare Part A | ||
Type | Use Base when all of the following are true:
Use Spell when all of the following are true:
| |
First Bill | ||
Last Bill | ||
Hospital Days Full | For a Type of Base, use For a Type of Base, use | |
Hospital Days Colns | For a Type of Base, use For a Type of Base, use | |
Hospital Days Base | ||
SNF Days Full |
| All of the following must be true:
|
SNF Days Colns |
| All of the following must be true:
|
SNF Days Base |
| All of the following must be true:
|
Inpatient Deductible | All of the following must be true:
| |
Medicare Part B | ||
Deductible Remaining |
| All of the following must be true:
|
Physical Therapy | All of the following must be true:
| |
Occupational Therapy |
| All of the following must be true:
|
Medicare Part A Stays | ||
Type | Use Hospital when:
Use Hospital Stay when:
Use SNF Stay when:
| The following must be true:
|
Start Date | On the same benefit entry as the Type. If the payer returns a single date instead of a date range, only | |
End Date | On the same benefit entry as the Type. If the payer returns a single date instead of a date range, only | |
Billing NPI | Stedi returns |
Qualified Medicare Beneficiary (QMB) Status
In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
otherOrAdditionalPayerarray (Other or Additional Payor). -
insuranceType=QUALIFIED_MEDICARE_BENEFICIARY

CWF field | JSON 271 eligibility response property | When to use |
Period From |
| If the payer returns a single date instead of a date range, only |
Period Through |
| If the payer returns a single date instead of a date range, only |
QMB Plan |
| If it’s missing, use the plan’s |
Medicare Secondary Payor

In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
otherOrAdditionalPayerarray (Other or Additional Payor). -
insuranceTypeis one of the following:MEDICARE_SECONDARY_WORKING_AGED_BENEFICIARY_OR_SPOUSE_WITH_EMPLOYER_GROUP_HEALTH_PLANMEDICARE_SECONDARY_ENDSTAGE_RENAL_DISEASE_BENEFICIARY_IN_THE_MANDATED_COORDINATION_PERIOD_WITH_AN_EMPLOYERS_GROUP_HEALTH_PLANMEDICARE_SECONDARY_NOFAULT_INSURANCE_INCLUDING_AUTO_IS_PRIMARYMEDICARE_SECONDARY_WORKERS_COMPENSATIONMEDICARE_SECONDARY_PUBLIC_HEALTH_SERVICE_PHS_OR_OTHER_FEDERAL_AGENCYMEDICARE_SECONDARY_BLACK_LUNGMEDICARE_SECONDARY_VETERANS_ADMINISTRATIONMEDICARE_SECONDARY_DISABLED_BENEFICIARY_UNDER_AGE_65_WITH_LARGE_GROUP_HEALTH_PLAN_LGHPMEDICARE_SECONDARY_OTHER_LIABILITY_INSURANCE_IS_PRIMARYAUTO_INSURANCE_POLICYWORKERS_COMPENSATION
CWF field | JSON 271 eligibility response property | When to use |
Effective Date |
| If the payer returns a single date instead of a date range, only |
Termination Date |
| If the payer returns a single date instead of a date range, only |
Policy Number |
| |
Insurer |
| |
Address |
| |
Type |
Medicare Advantage
In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
contactFollowingEntityForInformationarray (Contact Following Entity for Eligibility or Benefit Information). -
service.value=30(Health Benefit Plan Coverage). If the payer also listsCQ(Case Management), the response includes a second entry with the same details forCQ. -
insuranceType=HEALTH_MAINTENANCE_ORGANIZATION_HMO,HEALTH_MAINTENANCE_ORGANIZATION_HMO_MEDICARE_RISK,INDEMNITY,PREFERRED_PROVIDER_ORGANIZATION_PPO, orPOINT_OF_SERVICE_POS -
relatedEntities[].type=PRIMARY_PAYER

Part D
In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
otherOrAdditionalPayerarray (Other or Additional Payor). -
service.value=88(Pharmacy)

CWF field | JSON 271 eligibility response property | When to use |
Effective Date |
| If the payer returns a single date instead of a date range, only |
Termination Date | If the payer returns a single date instead of a date range, only | |
Plan Code |
| |
Payer Name |
| |
Address |
| |
Plan Name |
| |
Website |
| In most cases, CMS only provides just the payer’s domain name, such as |
Phone Number |
|
Therapy Caps
In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
benefitDescriptionarray (Benefit Description). -
service.value=AD(Occupational Therapy) orAE(Physical Medicine)

CWF field | JSON 271 eligibility response property | When to use |
Period Begin | If the payer returns a single date instead of a date range, only | |
Period End | If the payer returns a single date instead of a date range, only | |
PT/ST Applied | ||
OT Applied |
|
Hospice
In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
healthCareFacilityarray (Health Care Facility). -
service.value=45(Hospice)

CWF field | JSON 271 eligibility response property | When to use |
Benefit Period | No direct mapping. Calculated by ordering the episodes by date for the calendar year. | |
Benefit Period Start Date | If the payer returns a single date instead of a date range, only | |
Benefit Period End Date | If the payer returns a single date instead of a date range, only | |
Provider | The following must be true:
| |
Provider Name |
| The following must be true:
|
Hospice Elections | ||
Election Date |
| If the payer returns a single date instead of a date range, only |
Election Receipt Date | ||
Election Revocation Code | ||
Election NPI |
|
Home Health Certification

In the JSON 271 eligibility response, this information is only available when all of the following is true:
-
The entry is in the
healthCareFacilityarray (Health Care Facility). -
service.value=G0180, with aservice.systemofHCPCS
CWF field | JSON 271 eligibility response property |
Certification HCPCS Code | |
Process Date |
Rehabilitation Services

CWF field | JSON 271 eligibility response property | When to use |
Pulmonary Remaining (G0424) Technical |
| All of the following must be true:
|
Pulmonary Remaining (G0424) Professional |
| All of the following must be true:
|
Cardiac Applied (93797, 93798) Technical |
| All of the following must be true:
|
Cardiac Applied (93797, 93798) Professional |
| All of the following must be true:
|
Intensive Cardiac Applied (G0422, G0423) Technical |
| All of the following must be true:
|
Intensive Cardiac Applied (G0422, G0423) Professional |
| All of the following must be true:
|