After you send a successful eligibility check, the payer sends back an X12 271 Eligibility Benefit Response containing the patient’s benefits information, including coverage status, co-pays, and deductibles.

Stedi transforms the 271 response from the original x12 EDI into JSON, making it easier to read, understand, and ingest into your system.

Active and inactive coverage

You can quickly determine whether a patient has active coverage from the planStatus and benefitsInformation objects within the response. The following sample excerpt from a payer response shows a member with active coverage. The planStatus.status property is set to Active Coverage and planStatus.statusCode is set to 1:


"planStatus": [
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "planDetails": "Gold Plan HMO",
      "serviceTypeCodes": [
        "30"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "PT"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "PT"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "33"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "96"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "86"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "BZ"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "1",
        "AL",
        "48",
        "35",
        "47",
        "50",
        "MH",
        "BZ",
        "BY",
        "UC"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "96"
      ]
    }
  ],
  "benefitsInformation": [
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "insuranceTypeCode": "C1",
      "insuranceType": "Commercial",
      "planCoverage": "Gold Plan HMO",
      "authOrCertIndicator": "Y",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsRelatedEntity": {
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "entityName": "UNITEDHEALTHCARE",
        "entityIdentification": "PI",
        "entityIdentificationValue": "87726"
      }
    }
  ]

The following example excerpt from a payer response shows a member with inactive coverage. The planStatus.status property is set to Inactive and benefitsInformation.code is set to 6:

"planStatus": [
  {
    "statusCode": "6",
    "status": "Inactive",
    "serviceTypeCodes": [
      "30"
    ]
  }
],
"benefitsInformation": [
  {
    "code": "6",
    "name": "Inactive",
    "serviceTypeCodes": [
      "30"
    ],
    "serviceTypes": [
      "Health Benefit Plan Coverage"
    ],
    "inPlanNetworkIndicatorCode": "W",
    "inPlanNetworkIndicator": "Not Applicable"
  },
  {
    "code": "X",
    "name": "Health Care Facility",
    "inPlanNetworkIndicatorCode": "W",
    "inPlanNetworkIndicator": "Not Applicable",
    "benefitsRelatedEntity": {
      "entityIdentifier": "Provider",
      "entityType": "Non-Person Entity",
      "entityName": "MEDICAL PROVIDER",
      "entityIdentification": "XX",
      "entityIdentificationValue": "0001112223"
    }
  }
]

Coverage period

The planInformation object contains details about the patient’s insurance plan, including the group number, start and end dates, and the date the patient is eligible for coverage under the plan.

Most commercial payers only return information for the current calendar year.

"planInformation": {
        "groupNumber": "12341234",
        "groupDescription": "Company Name",
        "priorIdNumber": "1234567890"
    },
    "planDateInformation": {
        "planBegin": "20240101",
        "planEnd": "20241231",
        "eligibilityBegin": "20240102"
    }

Benefits information

Each object in the benefitsInformation array contains details about the patient’s coverage under their health plan. The benefitsInformation.code field indicates the type of benefit, and the name field provides a description.

The following example shows a patient’s co-payment for psychiatric, psychotherapy, and social work in-office visits. This copayment is 20 dollars for providers considered in-network, as indicated by the Y in the inPlanNetworkIndicatorCode field:

{
  "code": "B",
  "name": "Co-Payment",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "serviceTypeCodes": ["A4", "A6", "22"],
  "serviceTypes": ["Psychiatric", "Psychotherapy", "Social Work"],
  "timeQualifierCode": "27",
  "timeQualifier": "Visit",
  "benefitAmount": "20",
  "authOrCertIndicator": "N",
  "inPlanNetworkIndicatorCode": "Y",
  "inPlanNetworkIndicator": "Yes",
  "eligibilityAdditionalInformation": {
    "codeListQualifierCode": "Mutually Defined",
    "industryCode": "Office"
  },
  "eligibilityAdditionalInformationList": [
    {
      "codeListQualifierCode": "Mutually Defined",
      "industryCode": "Office"
    }
  ]
}

Eligibility and benefit type codes

The following is a complete list of codes that can be returned in the benefitsInformation.code property.

  • 1 - Active Coverage
  • 2 - Active - Full Risk Capitation
  • 3 - Active - Services Capitated
  • 4 - Active - Services Capitated to Primary Care Physician
  • 5 - Active - Pending Investigation
  • 6 - Inactive
  • 7 - Inactive - Pending Eligibility Update
  • 8 - Active - Pending Investigation
  • A - Co-Insurance
  • B - Co-Payment
  • C - Deductible
  • CB - Coverage Basis
  • D - Benefit Description
  • E - Exclusions
  • F - Limitations
  • G - Out of Pocket (Stop Loss)
  • H - Unlimited
  • I - Non-Covered
  • J - Cost Containment
  • K - Reserve
  • L - Primary Care Provider
  • M - Pre-existing Condition
  • MC - Managed Care Coordinator
  • N - Services Restricted to Following Provider
  • O - Not Deemed a Medical Necessity
  • P - Benefit Disclaimer
  • Q - Second Surgical Opinion Required
  • R - Other or Additional Payor
  • S - Prior Year(s) History
  • T - Card(s) Reported Lost/Stolen | Typically used by Medicaid to indicate to a provider that the person who has presented the ID card is using a stolen ID card.
  • U - Contact Following Entity for Eligibility or Benefit Information
  • V - Cannot Process
  • W - Other Source of Data
  • X - Health Care Facility
  • Y - Spend Down

Code V - Cannot Process

These are the most common reasons a payer may return a benefitsInformation.code of V:

  • Request errors: The payer didn’t actually return any benefits information because of errors in the request - listed in the errors object. You should ignore the stub benefits data in the benefitsInformation object, correct the errors, and resubmit the eligibility check.
  • Wrong submission method: The payer doesn’t support automated X12 EDI eligibility checks for the service type code you provided and requires that you obtain benefits information through a different channel, such as by phone or online portal. The benefitsInformation.additionalInformation.description typically contains an explanation. The payer may also include contact information in payer.contactInformation.
  • Unable to interpret: The payer located the member but couldn’t make sense of the request. For example, a dental payer can’t return benefits information for a vision service type code.
  • Alternate service type code: The payer has grouped the service type code you submitted into a different one. In this case, the payer typically returns a benefitsInformation entry with code = V immediately followed by an entry with an active code and benefitsInformation.serviceTypeCodes set to the preferred service type code.

In and out-of-network coverage

The benefitsInformation.inPlanNetworkIndicatorCode field specifies whether the benefits are considered in or out of the patient’s network - Y for yes or N for No. Code U indicates it is unknown whether the benefits are in or out of network or that network is not applicable to the benefit.

The response provides information about the patient’s general in and out-of-network coverage based on the service type codes and dates provided in the request. It does not confirm whether a particular provider is in or out of network for that patient.

The example benefitsInformation object below shows the patient’s out-of-network deductible for the calendar year, which is 7500 dollars. The inPlanNetworkIndicatorCode is N, indicating that the deductible is applicable to services performed by providers outside the patient’s network.:

{
  "code": "C",
  "name": "Deductible",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "timeQualifierCode": "23",
  "timeQualifier": "Calendar Year",
  "benefitAmount": "7500",
  "inPlanNetworkIndicatorCode": "N",
  "inPlanNetworkIndicator": "No"
}

Prior authorization

Payers use the benefitsInformation.authOrCertIndicator property to indicate whether prior authorization is required for the service type code in the eligibility check. It can have the following values:

  • Y indicates that prior authorization is required.
  • N indicates that prior authorization is not required.
  • U indicates that the payer is unable to confirm whether or not prior authorization is required.

If you don’t receive the benefitsInformation.authOrCertIndicator property in the response, you can assume that prior authorization is not required. Some payers may send additional notes about prior authorization rules in the benefitsInformation.additionalInformation.description property.

Referral required

Payers aren’t required to provide information about whether referrals are required for benefits, and we can’t provide a definitive list of payers who do. When this information is included, you can find it in the benefitsInformation.additionalInformation.description property. You’re more likely to receive referral information for members with HMO plans.

Patient responsibility

Payers are required to provide either the benefitAmount or benefitPercent field for the following types of benefits indicating patient financial responsibility. Note that the payer can respond with zero in these fields when the patient has no responsibility.

Co-Insurance

Co-Insurance is indicated by benefitsInformation.code = A and always includes a value for the benefitsInformation.benefitPercent field.

Co-insurance represents the percentage of a benefit patients are responsible for covering themselves. For example, if a patient has met their annual deductible and their co-insurance is 20 percent, they would pay 20 dollars for a treatment that costs 100 dollars. The amount of co-insurance can differ depending on whether a provider is in-network with the health plan.

Co-Payment

Co-Payment is indicated by benefitsInformation.code = B and always includes a value for the benefitsInformation.benefitAmount field.

Co-Payment represents a fixed dollar amount a patient must pay for a benefit. For example, a patient may have a 10 dollar co-payment for a physician office visit. The amount of co-payment can differ depending on whether the provider is considered in-network with the health plan.

Deductible

Deductible is indicated by benefitsInformation.code = C and always includes a value for the benefitsInformation.benefitAmount field.

A deductible represents the total amount the patient will have to pay out of their own pocket before their benefits begin. For example, if a patient’s deductible is 1000 dollars, they will have to pay 1000 dollars for covered services before the health plan will start to pay. Then, the patient will typically pay part of the cost of services (such as co-payments) until they reach their out-of-pocket maximum.

Though behavior can vary by payer, the deductible benefitsInformation object is often included twice in the response for a given coverage level + service type + network status. One iteration contains a timeQualifier like Calendar Year, which indicates that the benefitAmount value is the patient’s total annual deductible. In the second instance, the timeQualifier is often Remaining, which indicates that the benefitAmount value is the patient’s remaining deductible amount (annual deductible minus what they’ve already spent for the calendar year).

The following example shows that this patient’s annual deductible is 1000 dollars, and they have 500 dollars remaining to meet that deductible:

{
  "code": "C",
  "name": "Deductible",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "serviceTypeCodes": [
    "30"
  ],
  "serviceTypes": [
    "Health Benefit Plan Coverage"
  ],
  "planCoverage": "GOLDLITE",
  "timeQualifierCode": "29",
  "timeQualifier": "Remaining",
  "benefitAmount": "500",
  "inPlanNetworkIndicatorCode": "Y",
  "inPlanNetworkIndicator": "Yes",
  "benefitsDateInformation": {
    "benefit": "20240101-20241231"
  }
},
{
  "code": "C",
  "name": "Deductible",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "serviceTypeCodes": [
    "30"
  ],
  "serviceTypes": [
    "Health Benefit Plan Coverage"
  ],
  "planCoverage": "GOLDLITE",
  "timeQualifierCode": "23",
  "timeQualifier": "Calendar Year",
  "benefitAmount": "1000",
  "inPlanNetworkIndicatorCode": "Y",
  "inPlanNetworkIndicator": "Yes",
  "benefitsDateInformation": {
    "benefit": "20240101-20241231"
  }
}

Out of Pocket (Stop Loss)

Out of Pocket (Stop Loss) is indicated by benefitsInformation.code = G and always includes a value for the benefitsInformation.benefitAmount field.

Out of Pocket (Stop Loss) represents the maximum amount a patient can pay per year. Once the patient reaches this limit, the health plan will pay 100 percent of the allowed amount for covered services.

Cost Containment

Cost Containment is indicated by benefitsInformation.code = J and always includes a value for the benefitsInformation.benefitAmount field.

Cost Containment refers to rules that a health plan may have in place to control the cost of care. It’s typically included in the benefit response when the patient has Medicaid coverage and represents the total amount the patient will have to pay out of their own pocket before their benefits begin.

Spend Down

Spend Down is indicated by benefitsInformation.code = Y and always includes a value for the benefitsInformation.benefitAmount field.

Spend Down is a process that allows individuals with high medical expenses to qualify for Medicaid even if their income is above the Medicaid income limit. The Spend Down benefitAmount represents the total amount the patient will have to pay out of their own pocket before they can receive Medicaid benefits.